요약

  • RFC 794는 단말을 맡은 프로세스가 이미 다른 연결을 처리하면서도 TCP LISTEN을 하나 더 유지하면, 높은 우선순위의 새 요청을 받아 기존 연결과 비교할 수 있다고 제안했다.
  • ‘flash-override’ FTP 사례에서는 수신 측 서비스가 밀려나는 전송의 뒷일을 맡고, 발신 측도 자원이 꽉 찼다면 운영체제가 먼저 출발할 자리를 마련해야 한다.

호스트 X는 Y에게 보통 파일을 보내고 있다. 그때 Z가 X의 FTP 포트에 특별히 높은 우선순위의 연결을 청한다. SYN은 도착했지만, 먼저 일하던 사용자에게 누가 전송 중단을 설명할까? Vint Cerf의 1981년 9월 RFC 794는 우선순위라는 말이 실제 컴퓨터에서 어떤 손을 필요로 하는지 묻는다. 먼저 온 연결도 이미 자원을 쓰고 있기 때문이다.

Cerf는 포화된 통신 시스템 세 가지를 비교했다. 전화 회선은 말을 하지 않는 동안에도 대역을 차지한다. 자리가 꽉 차면 높은 우선순위의 통화가 낮은 쪽을 끊을 수 있다. 메시지 교환 장치는 저장해 둔 내용을 순서대로 처리하며 급한 메시지 때문에 다른 메시지의 인쇄를 중단할 수도 있다. 패킷망은 전송 중 저장 공간이 적어, 포화 시에는 진입을 기다리는 트래픽의 순서가 중요하다. 같은 ‘선점’이라도 회선, 처리 장치, 네트워크 입구 중 무엇을 내어줄지부터 다르다.

AUTODIN II의 단말 접근에서 Cerf는 THP라는 단말 호스트 프로세스를 내세웠다. 이 프로세스는 단말에 기존 연결이 있어도 포트에 LISTEN을 남겨 둔다. 새 연결이 들어오면 그 우선순위를 읽고, 필요하다면 가장 낮은 순위의 기존 연결을 닫거나 중단한 뒤 사용자를 새 연결로 옮긴다. 그리고 다음 요청을 위해 다시 LISTEN을 건다. 문을 열어 두는 것과 무한정 좌석을 늘리는 것은 다른 일이다.

TCP가 할 일은 새 요청의 우선순위를 TCP를 이용하는 프로세스에 보여 주는 것이다. Cerf는 TCP가 도착한 연결만 보고 단말을 맡을 프로세스를 만들 수 없다고 설명했다. 단말 전원이 꺼져 있다면 새 담당자를 만드는 일부터 헛수고다. THP는 사용자와 활성 연결을 알고, 여러 연결을 허용하는 보안 조건도 살핀다. 누구의 일을 중단할지 결정하는 데 필요한 정보가 그곳에 모여 있다.

FTP 사례에서 이 구상은 더 선명하다. X의 FTP 서비스가 Y에게 파일을 보내면서도 추가 LISTEN을 유지하면, Z의 긴급 SYN이 닿을 수 있다. 서비스가 더 많은 사용자를 감당하지 못할 때 낮은 우선순위의 연결을 밀어내고, 중단된 작업을 정리한다. 일하는 동안 LISTEN을 남기지 않는 프로세스는 이 방식으로 선점할 수 없다. 급행 표가 있어도 창구가 닫혀 있으면 표를 내밀 곳이 없다.

Z 역시 만석일 수 있다. Z의 FTP 또는 TCP 자원이 소진되면, 우선순위가 높은 사용자는 요청을 시작하는 프로세스조차 띄우지 못한다. Cerf는 운영체제가 현지 자원을 비우는 경우를 들었다. 낮은 순위의 사용자를 로그아웃시키는 선택도 예시에 있다. 순위를 사용자에게 붙일지 단말에 붙일지, 현지 TCP가 결정할지 운영체제가 결정할지도 구현에 따라 달라진다. X의 친절한 접수 창구가 Z의 빈 메모리를 만들어 주지는 못한다.

두 쪽짜리 이 문서는 우선순위의 단가를 계산한다. 새 요청을 들을 입구, 순위를 비교할 프로그램, 밀려난 전송의 정리, 발신 측의 출발 공간이 모두 필요하다. Cerf가 찾은 선점의 손잡이는 패킷의 깃발보다, 진행 중인 일을 실제로 쥐고 있는 프로세스에 가까웠다.