요약

  • Andrew G. Malis는 1983년 4월 RFC 852에서 C/30 IMP에 연결된 ARPANET 호스트의 선택적 짧은 차단을 규정했다. 기존 방식은 처리하기 어려운 메시지 하나 때문에 호스트의 다음 입력을 최대 15초 막을 수 있었다. 새 방식은 최대 2초 뒤에도 자원이 부족하면 그 메시지를 거절하고 이유를 담은 Type 9 불완전 전송 응답을 돌려준다.
  • 일찍 열린 입구는 순서를 바꿀 수 있다. 앞 메시지의 거절 통보가 도착하기 전에 뒤 메시지가 먼저 수락될 수 있다. 같은 우선순위·출발지·목적지에 대해 네트워크가 지키는 순서는 IMP의 수락 순서다. 제출 순서를 지켜야 하는 프로그램은 직접 관리하거나 긴 대기 방식을 택해야 한다.

창구 직원이 복잡한 서류 한 장을 받았다. 옆 부서의 자료가 필요하다는 이유로 창구 전체를 닫는다. 다음 사람은 금방 끝낼 수 있는 다른 업무를 들고 왔지만 같이 기다린다. RFC 852가 지적한 호스트와 인터페이스 메시지 처리기, IMP 사이의 모습이다. IMP가 메시지를 처리할 자원을 당장 모으지 못하면 그 호스트의 다음 메시지 전부를 받지 않았다. 필요한 자원은 메시지 종류, 길이, 목적지마다 달랐다. 한 건의 어려움이 모든 뒷사람의 대기표를 빼앗았다.

기존 차단은 최대 15초였다. Malis의 제안은 호스트가 짧은 상한을 선택하도록 했다. IMP가 두 초 안에도 필요한 자원을 얻지 못하면 해당 메시지를 거절하고 Type 9 '불완전 전송' 응답에 이유를 적어 보낸다. 자원을 찾는 작업은 계속한다. 그동안 호스트는 다른 메시지를 내고 거절된 것을 나중에 다시 시도할 수 있다. 빠른 거절은 첫 메시지가 전달됐다는 뜻이 아니다. 입구가 열린 대신 반송 서류를 관리할 사람이 필요해졌다.

선택은 하위 유형에 들어갔다. 일반 Type 0 메시지의 하위 유형 0은 기존 제어 기능과 최대 15초 차단을 유지한다. 하위 유형 1은 같은 제어 기능을 쓰면서 차단을 최대 두 초로 제한한다. 제어되지 않는 패킷에는 긴 쪽인 하위 유형 3과 짧은 쪽인 4가 있다. 이 패킷들은 전달 보장을 받지 않는다. 짧은 쪽을 택한 호스트는 Type 9 응답을 해석해야 한다. 이 규격의 대상은 C/30 IMP이며, 호스트 접근 방식은 1822와 1822L 모두 가능했다. 예전 1822 보고서의 비차단 인터페이스 구상은 구현되지 않았고, RFC 852는 새 방식에 대해 호스트 소프트웨어 담당자의 의견을 구했다.

거절 이유는 막힌 곳의 주소록이었다. 새 Type 9 코드는 연결 설정 지연, 종단 간 흐름 제어, 목적지 IMP의 버퍼 부족, 경로 혼잡, 출발지 IMP 자체의 자원 부족을 구분했다. 특정 연결이나 목적지가 막혀도 다른 연결은 지나갈 수 있다. 출발지 IMP의 버퍼나 표 항목이 모자라면 영향은 훨씬 넓다. 모든 응답을 '망이 바쁨'이라고 묶으면 어떤 메시지를 먼저 다시 낼 수 있는지 알기 어렵다.

흐름 제어에는 숫자가 붙었다. 한 연결에서 처리 결과를 기다리는 메시지는 최대 여덟 개. 아홉 번째는 그 연결의 빈자리가 생길 때까지 받아들일 수 없었다. 길이가 1,008비트를 넘는 메시지에는 96비트 리더를 제외하고 목적지 IMP 버퍼의 사전 확보가 필요했다. 그 자리가 없으면 긴 메시지는 막히지만 짧은 메시지나 다른 연결의 메시지는 들어갈 수 있다. 아홉 번째 한 건 때문에 호스트 전체의 문을 닫는 방식은 자원 사정을 너무 거칠게 다뤘다.

기다림을 줄이면 순서가 문제로 돌아온다. ARPANET은 우선순위, 출발지, 목적지가 같은 메시지를 IMP가 수락한 순서대로 전달했다. 호스트가 메시지를 보내는 흐름과 IMP가 답을 돌려주는 흐름은 동기화돼 있지 않았다. 앞 메시지의 거절을 받기 전에 뒤 메시지를 낼 수 있고, IMP는 뒤 메시지를 수락할 수 있다. 그때 앞 메시지를 재시도하면 원래 제출 순서와 수락 순서가 엇갈린다. Malis는 서브넷의 순차 전달이 엄격한 요구라면 짧은 차단을 사용하지 말라고 명시했다.

두 초는 마법처럼 막힌 자원을 만드는 시간이 아니었다. IMP가 한 건의 지연을 호스트 전체에 전가하지 않도록 창구 운영을 바꾸는 시간이었다. IMP는 거절 이유를 빨리 돌려주고, 호스트는 다른 일을 진행한다. 그 대신 호스트 소프트웨어는 반송된 메시지, 재시도 시점, 앞뒤 순서를 챙긴다. 창구는 다시 열렸다. 대기 명부는 호스트가 쥐었다.