요약

  • 1988년 RFC 1043은 DODIIS의 TELNET Data Entry Terminal 구현을 기록했다. 당시 설명된 문자 에코 방식에서는 키 하나가 호스트로 가는 데이터그램과 돌아오는 에코 데이터그램을 만들 수 있었다.
  • DET는 양식의 보호되지 않은 칸을 단말기에서 편집하게 했다. 응용 프로그램과 단말기는 기능의 공통 부분을 협상하고 GO-AHEAD로 차례를 넘겼으며, ‘수정된’ 칸만 돌려보낼 수도 있었다. 이 범주에는 응용 프로그램이 미리 표시한 칸도 들어간다.

글자 하나가 짐을 두 번 쌌다

RFC 1043은 첫 장에서 문자 에코의 비용을 보여 준다. 키 하나의 문자가 TCP/IP 헤더와 함께 데이터그램이 되어 호스트로 가고, 호스트는 비슷한 데이터그램으로 에코를 돌려준다. Defense Intelligence Agency는 패킷 교환망에서 전체 화면 응용 프로그램에 접근하는 방식을 개발하고 있었다. 문서에는 IAS, MVS, OS86, UNIX에서 DET가 구현되었고 VM과 VMS용은 개발 중이라고 적혔다. 기종은 달라도 사용자는 한 장의 입력 화면을 원했다. 한 글자를 쓸 때마다 멀리 있는 호스트의 확인을 받아야 하는 화면은 다루기 고단했다.

Data Entry Terminal 옵션 자체는 앞선 RFC 732에 있었다. RFC 1043은 그 뒤에 생긴 문제를 다뤘다. DODIIS 안의 서로 다른 조직이 독립적으로 만든 구현들이 실제로 대화할 수 있는지 걱정이 커졌다. 자기 단말기에서만 빠른 양식은 다른 시스템 앞에서 곧 지원 요청서가 된다. 그래서 공통으로 반드시 할 수 있어야 할 명령, 추가 기능 협상, 작업 차례를 넘기는 순서를 명시했다.

상정한 장치는 반이중 양식 단말기다. 직사각형 화면에는 보호된 표시와 사용자가 편집할 수 있는 칸이 있고, 키보드는 열린 칸을 현장에서 고친다. 기능키와 칸 선택으로도 답할 수 있다. 기본 크기는 한 줄 80자에 24줄이며, 사용자 쪽 호스트는 24~48줄을 지원해야 했다. 응용 프로그램이 칸의 위치와 길이, 속성, 내용을 정해 화면을 만든다. 준비가 끝나면 GO-AHEAD를 보내 키보드를 열어 준다. 사용자가 채우거나 허용된 기능키를 누르면 단말기는 결과와 자신의 GO-AHEAD를 보낸다. 커서의 차례가 양쪽 사이를 오가는 방식이다.

그보다 먼저 DET 사용에 합의해야 했다. TELNET 옵션 번호는 20이며, DO와 WILL을 양방향으로 협상한다. 실패하면 기본값 WONT DET -- DONT DET로 남아 보통의 네트워크 가상 단말기 방식으로 통신한다. DET를 선택하면 Echo, Suppress Go-Ahead, Binary 같은 충돌 옵션을 거절하거나 끝내라고 RFC는 요구했다. 새 차례 규칙을 정한 옆에서 옛 문자 에코가 계속 떠들면 화면이 혼란스러워진다.

DET에 들어간 뒤에도 추가 기능에는 별도 합의가 필요했다. 편집, 지우기, 전송, 형식의 네 가지 facilities 하위 명령이 각자의 기능 비트맵을 전한다. 단말기가 가능한 것을, 응용 프로그램이 원하는 것을 표시하고, 두 비트맵의 논리적 교집합만 사용한다. 표시 강도는 제시된 값 가운데 낮은 단계를 택한다. 선택 기능은 합의한 뒤 쓰며 어느 쪽이든 나중에 끌 수 있다. 예약 비트는 0으로 보낸다. 미래의 기능을 낡은 기계가 우연히 허락한 척하지 않도록 하기 위해서다. 누가 협상을 시작했는지도 기억해야 한다. 너무 예의 바른 두 기계는 서로의 답에 계속 답하며 하루를 보낼 수 있다.

돌아가는 길에서 절약이 드러난다. 응용 프로그램은 TRANSMIT-SCREEN, TRANSMIT-UNPROTECTED, TRANSMIT-MODIFIED로 화면 전체, 보호되지 않은 칸, 수정된 칸 중 무엇을 돌려받을지 요구한다. 따로 요구하지 않았다면 협상된 Modified와 Protection 속성이 허용된 최소 범위의 기본 응답을 정한다. 화면은 단말기에 남고 응용 프로그램은 다음 차례에 일부 칸을 바꿀 수 있다. 손가락의 움직임은 사용자 곁에서 처리되고 결과가 칸 단위로 여행한다.

‘수정됨’이라는 말에는 함정이 있다. RFC 1043은 TRANSMIT-MODIFIED가 사람이 실제 고친 칸과 Modified 속성이 붙은 칸을 모두 반환해야 한다고 했다. 어떤 칸이 응답에 있다고 해서 사용자가 방금 그곳을 건드렸다고 말할 수 없다. 양식을 만든 응용 프로그램이 미리 표시했을 수도 있다. RFC의 경고 상자는 나중에 로그를 읽을 사람에게 남긴 작은 전등이다.

추가 협상 없이 쓰는 DET 최소 명령만으로는 DODIIS의 모든 양식이 돌아가지 않았다. 사용자 호스트는 지정된 추가 명령과 하드웨어가 지원하거나 소프트웨어로 쉽게 흉내 낼 수 있는 속성을 갖추고, 서버 호스트는 응용 프로그램이 요구하는 기능을 지원해야 했다. 문서는 누가 어떤 명령을 보내고 받는지 표로 나눴다. 서로 다른 컴퓨터를 연결하기 위한 공통 문법이었지 모두에게 같은 키보드를 강요하는 계획은 아니었다.

RFC 1043은 매 글자 왕복하던 소란을 한 장의 합의된 양식으로 바꾸었다. 사람은 현장에서 편집하고, 기계들은 기능을 맞춘 다음, 필요한 칸을 돌려보낸다. 네트워크가 조용해진 까닭은 양쪽이 먼저 일을 나눴기 때문이다.