요약

  • RFC 1011은 프로토콜의 사양과 그 상태, 의견, 의존성, 연락처를 분리하여, 크고 끊임없이 변하는 기술 시스템을 더 쉽게 조율할 수 있게 했다.
  • 그 '필수(required)' 레이블은 호스트가 구현해야 할 사항을 밝혔지만, 어떤 호스트에 코드가 설치되어 실행 중인지는 보여주지 않았다.

만료되어야 했던 목록

1987년 5월 조이스 레이놀즈(Joyce Reynolds)와 존 포스텔(Jon Postel)이 작성한 메모는 '공식 인터넷 프로토콜(Official Internet Protocols)'이라는 제목이었다. 이 문서는 자신을 상태 보고서로 규정하며, 인터넷에서 사용되는 프로토콜을 규정하는 문서들을 식별하고 개정 또는 예정된 변경 사항에 대한 의견을 덧붙였다. 이는 모든 기계의 상태를 선언하는 단일 매뉴얼이라기보다, 움직이는 시스템의 시점별 지도에 가까운 것이었다.

문서는 이 한계를 스스로 드러냈다. 독자에게는 3개월 이내에 발행된 사본을 사용하도록 안내했다. 목록의 각 항목은 사양 문서를 가리킬 수 있고, 의존성을 식별하고, 구현 문제를 기록하고, 연락처를 밝힐 수 있었다. 독자는 어떤 문서가 프로토콜을 기술했는지뿐 아니라 그 설명이 어디서 불완전한지, 추가 조율이 어디에 속하는지도 알 수 있었다.

각 프로토콜에는 다섯 가지 레이블 중 하나가 붙었다. 필수(Required)는 모든 호스트가 구현해야 함을 뜻했다. 권장(Recommended)은 구현을 장려했다. 선택(Elective)은 선택을 호스트에 맡겼다. 실험(Experimental)은 구현이 조율된 실험의 일부여야 함을 의미했다. 없음(None)은 그 자체가 프로토콜이 아닌 항목을 표시했다. 이는 기계들이 실제로 무엇을 하고 있는지에 대한 다섯 가지 측정값이 아니라, 서로 다른 기대 수준이었다.

상태가 소프트웨어를 설치해 주지는 않았다

이 구분은 목록의 행에서 가장 뚜렷하게 드러난다. IP는 필수였다. TCP와 UDP는 권장이었다. 메모의 '그래픽스 프로토콜(Graphics Protocol)' 항목은 선택으로 표시되었는데, 그 의견란에는 알려진 활성 구현이 없다고 적혀 있었다. 의견이 항목을 지운 것도 아니었고, 레이블이 구현을 소환한 것도 아니었다. 저자들은 범주와 자신들이 알고 있는 것의 한계를 함께 기록했다.

이 작은 짝이 중요하다. 프로토콜 목록은 사양에 부여된 상태에 대해서는 권위적일 수 있지만, 모든 호스트의 동작을 보증할 수는 없다. '필수'는 호환성 기대에 대한 정책이다. 운영상의 현실을 확인하려면 구현과 관찰이 필요하다. RFC 1011에는 완전한 호스트 조사도, 설치된 버전 목록도, 모든 필수 프로토콜이 올바르게 동작함을 증명하는 테스트 영수증도 없었다.

사양과 구현은 시간을 두고 만났다

RFC 1011은 반복되는 발행 시퀀스 안에 있었다. 이전의 상태 보고서들은 대체되었고, 이후의 보고서들이 목록을 수정했다. 1989년 4월까지 RFC 1100은 더 넓은 표준화 절차를 기술했다. 제안은 누구나 할 수 있었고, 기술 그룹이 권고를 제공했으며, 일반 정책은 프로토콜을 공식 표준으로 명명하기 전에 구현 경험을 기다리는 것이었다. 또한 RFC 번호는 절대 재사용되지 않으며, 프로토콜이 개선되어 이후 RFC에 문서화되더라도 번호는 유지된다고 명시했다.

그렇다고 표준 작성이 무의미해지는 것은 아니다. 공통의 사양은 독립적인 구현자들이 동일한 동작을 목표로 삼도록 해준다. 그러나 제안에서 서비스에 이르는 경로는 발행보다 더 많은 단계를 거친다. 어떤 버전은 구현되어야 하고, 다른 시스템과 테스트되어야 하며, 경험이 문제를 드러내면 수정되어야 하고, 호스트들이 채택해야 한다. 1989년의 호스트 요구사항 문서들은 이러한 기대 중 상당수를 완전한 기능을 갖춘 인터넷 호스트를 위해 더 구체적으로 만들었다. 그 문서에서조차 규범적 언어는 준수하는 호스트가 해야 할 일을 기술했을 뿐, 배치된 모든 기계가 그를 따른다는 증거는 아니었다.

따라서 목록의 주기 자체가 의미를 지녔다. 분기별 상태 보고서는 운영자와 구현자가 최신 문서를 찾는 데 도움을 줄 수 있었지만, 그 날짜는 문서의 진실성의 일부였다. 인쇄 시점에 정확했던 행도 사양, 의견, 관행이 바뀌면 낡을 수 있었다. 오래된 사본을 사용하지 말라는 경고는 조율이 유지 관리를 필요로 한다는 인정이었다.

실행 중인 네트워크가 아니라 유용한 기록

RFC 1011은 조율 도구로 읽는 것이 가장 적절하다. 이 문서는 상태를 읽을 수 있게 만들고, 항목을 문서와 사람에 연결하며, 불확실성을 숨기지 않고 드러냈다. 이러한 기능은 결정에 영향을 줄 수 있었다. 권장이나 필수라는 표기는 빈 수사가 아니었다. 그러나 보고서 자체가 각 호스트로 들어가 그 결정을 현실로 만들지는 못했다.

이 경계는 인터넷 역사를 읽을 때 여전히 유용하다. 문서 번호는 구현이 아니다. 표준 레이블은 패킷 캡처가 아니다. 권장은 배치 수가 아니다. 공유된 규칙은 호환 가능한 선택의 공간을 좁힐 수 있지만, 네트워크는 운영자가 실행하고 상호 운용 가능하게 유지하기로 선택한 시스템을 통해서만 존재한다.

출처