요약

  • RFC 1106은 권고적(advisory) NAK와 30비트 TCP 수신 윈도우를 제안했습니다. 이 확장들이 NASA 자원으로 구현되었음을 밝히면서도, 실험적 프로토콜로 규정하고 인터넷 표준 제안으로는 제시하지 않았습니다.
  • RFC 1110은 두 달 뒤 로컬 성공에 결여된 조건을 짚었습니다: 윈도우가 커져도 32비트 시퀀스 공간은 커지지 않는다는 점입니다. 번호는 네 왕복 만에 재사용될 수 있었고, 오래된 중복 패킷이 다시 수신 가능해질 수 있었습니다.
  • NAK는 수신 지점에서 빈 구간이 있음을 확인할 뿐이었습니다. 단순 지연과 영구 손실, 잡음과 혼잡을 구분하지 못했고, 재전송·복구·전달을 보증하지도 않았습니다.

실험에는 결과가 있었지만, 경계도 있었습니다

1989년 6월자로 R. Fox가 서명한RFC 1106은 정확한 표현을 씁니다. TCP의 두 확장이 NASA 자원을 통해 구현되고 작동하는 모습이 시연되었다는 것입니다. 동일한 상태 선언은 이들을 실험적 프로토콜이자 연구의 출발점으로 제시하며, 인터넷 표준 제안으로는 제시하지 않았습니다.

두 번째 선언을 존중하기 위해 첫 번째 문장을 약화시킬 필요는 없습니다. 코드는 실제로 돌았습니다. 호스트들은 상태를 협상했고, 설치된 환경에서 측정치를 산출했습니다. 정당한 주장의 범위는 실제로 존재했던 조건까지만 미칩니다.

문서 요약 자체가 열려 있는 문제를 명명했습니다: 잡음인지 혼잡인지, 그리고 높은 대역폭-지연 곱을 갖는 일부 네트워크가 아니라 인터넷 인프라 전체에 대한 적용 가능성입니다. 기술된 사용 사례는 고립된 위성 네트워크였습니다. 성실한 결론은 성능 수치와 함께 이 환경 경계를 함께 전달해야 했습니다.

오늘날RFC Editor 정보 페이지는 이 문서를 Legacy 스트림의 Historic으로 분류하며, RFC 6247을 상태상의 후속 문서로 둡니다.IETF Datatracker도 기록을 보존하고 있습니다. 이 후대의 분류는 현재의 채택과 권위에 관한 정보입니다; 1989년의 경계진 실험 자체를 부정하지는 않습니다.

수신자는 무언가 빠져 있음을 알았습니다

첫 번째 메커니즘은 부정 확인(NAK)이었습니다. 긴 경로에서는 정상적인 만료를 기다리는 동안 '파이프'가 비워질 수 있었습니다. 도착한 세그먼트가 불연속을 드러내는 즉시, 수신자는 윈도우 왼쪽 경계를 전진시키는 데 필요한 데이터의 재전송을 요청할 수 있었습니다.

이 신속함은 감수된 불확실성으로 대가를 치렀습니다. RFC 1106은 수신자가 단순히 늦게 도착한 데이터와 영구히 손실된 데이터를 구분할 수 없다고 명시했습니다. 관측된 동일한 빈 구간은 유용한 재전송이나 불필요한 중복 중 어느 쪽으로도 이어질 수 있었습니다.

NAK는 권고적이며 신뢰할 수 없는 것이었습니다. 자체 재전송 메커니즘이 없었습니다. 송신자는 아무것도 하지 않거나 즉시 재전송할 수 있었습니다; NAK가 사라지면 TCP는 결국 다른 경로로 회복되어야 했습니다. 정당한 기록은 다섯 가지 사건을 분리했습니다: 빈 구간 관측, 요청 발송, 요청 수신, 재전송 수행, 데이터의 최종 수용. 어느 하나도 다음 사건들의 증거가 되지 못했습니다.

빈 구간은 경로를 설명해 주지도 않았습니다. 혼잡한 큐, 잡음이 심한 링크, 재정렬, 비정상적 지연은 모두 같은 로컬 부재를 만들어 냈습니다. 부재를 확인한 관측자가 그 원인을 귀속시키는 데 필요한 관측을 자동으로 갖고 있는 것은 아니었습니다.

윈도우는 수신자의 여건을 측정했습니다

두 번째 제안은 16비트 TCP 윈도우의 64KiB 한계를 넘어서려 했습니다. 대역폭-지연 곱이 더 클 때 이 한계는 전송 중 미확인 데이터를 충분히 유지하지 못하게 했습니다. RFC 1106은 30비트 표현을 제안했으며, 하위 비트는 일반 헤더에, 상위 비트는 옵션에 담았습니다.

양쪽 끝은 SYN과 SYN-ACK에서 이 메커니즘을 수락해야 했습니다. 이후의 모든 세그먼트는 상위 비트를 운반해야 했습니다. 이 합의는 두 구현 간의 공통 규약을 증명했을 뿐; 그 규약이 인터넷 경로의 모든 속성 하에서 안전하게 유지된다는 것을 증명하지는 않았습니다.

애초에 수신 윈도우는 네트워크의 용량이 아니었습니다. 그것은 수신자의 메모리와 정책이 수용할 수 있는 양을 광고한 것입니다. RFC 1106은 지나치게 큰 값이 버퍼를 고갈시키고, 장비를 다운시키거나 다른 작업의 자원을 빼앗을 수 있다고 경고했습니다. NASA에서 고려한 통제는 큰 윈도우 요청을 특정 프로그램으로 제한하는 것이었습니다. 이 국지적 제한은 경로상의 어떤 대역폭도 할당하지 않았습니다.

오래된 패킷은 새 윈도우를 찾았습니다

A. McKenzie가 8월에 발행한 짧은RFC 1110은 이 관측을 시험대 밖으로 옮겼습니다. 인터넷은 손실, 무순, 중복을 허용했습니다. 32비트 TCP 시퀀스 번호는 영원히 고유하지 않았고; 작은 윈도우와 수명 한계가 번호의 재사용을 사실상 안전하게 만들고 있었습니다.

RFC 1110의 계산에서 16비트 윈도우는 시퀀스 공간의 65,536분의 1에 불과합니다: 번호는 65,536왕복이 지나야 돌아옵니다. 같은 공간에서 30비트 윈도우라면 네 왕복 만에 돌아올 수 있었습니다. NAK는 단 한 번의 왕복 만에 중복을 만들어 낼 수 있었습니다. 따라서 약 다섯 왕복 만큼 네트워크에 머문 패킷은 자신의 번호가 이후의 주기에 들어가는 시점에 다시 나타나 현재의 데이터로 오인될 위험이 있었습니다.

이 반론은 테스트를 위조하지 않았습니다. RFC 1110은 고립된 위성 네트워크가 메모리를 갖지 않는 경우 — 순서대로 전달되거나 손실되고, 긴 보관 후의 재정렬이 없는 경우 — 를 상정했습니다. 그러한 환경에서는 메커니즘이 작동할 수 있었습니다. 일반 인터넷은 더 넓은 상태 집합을 허용했고, 바로 이 범위 확장이 실패한 지점이었습니다.

후속 문서들은 패킷을 함께 두지 않고 해법을 분리했습니다

RFC 4614는 이후 RFC 1106을 일반 용도에는 결함이 있는 것으로, RFC 1110을 그것을 폐기(deprecate)하는 문서로 규정했습니다. SCPS-TP에서의 NAK 사용을 언급하면서도, 광범위한 커뮤니티의 채택은 없었다고 기록했습니다. 이 예외가 RFC 1106 전체를 인터넷 관행으로 바꾸지는 않았습니다.

RFC 6247은 2011년, 널리 사용되지 않은 확장들과 함께 두 문서를 공식적으로 Historic 상태로 전환했습니다. '널리 사용되지 않음'은 '실행된 적이 없음'을 의미하지 않습니다. 이 어휘는 경계진 구현과 채택의 실패를 어느 한쪽을 희생하지 않고 함께 보존할 수 있게 합니다.

RFC 7323은 이후 또 다른 윈도우 스케일링을 표준화했으며, RFC 1106처럼 반복 전달되는 것이 아니라 SYN에서 제공됩니다. 손실 기술은 SACK에 기반합니다; 랩어라운드 이후 오래된 중복에 대한 보호는 타임스탬프와 PAWS를 사용합니다. 직접적인 계보를 추론할 근거는 없습니다. 그러나 이 기술적 분리는 수신 용량, 누락 세그먼트 지식, 시간적 유효성이 하나의 변수가 아니라는 점을 상기시킵니다.

테스트의 증거는 자신의 세계를 함께 가져가야 합니다

유용한 아카이브 객체에는 코드 버전, 토폴로지, 오류 모델, 패킷의 가능한 체류 시간, 재정렬, 중복, 버퍼, 협상된 윈도우, 트래픽, 관측 지점이 담깁니다. 의도적으로 결여된 상태들도 담깁니다.

이 기록을 '작동한다'로 축소하면 결과가 관측하지 못한 보편성을 얻게 됩니다. 'Historic'으로만 축소하면 반대 오류를 범하며 실제 시도를 지워 버립니다. RFC 1106과 RFC 1110의 역사는 로컬 성공과 그 일반화를 막은 조건을 함께 보존할 때 비로소 엄격해집니다.

출처