요약

  • RFC 1296의 ZONE 프로그램은 도메인을 발견하고, 접촉한 서버를 SOA로 확인한 뒤 AXFR을 요청하고, 반환된 레코드로 호스트 테이블을 만들었다. 이 연구에서 호스트란 발견된 하나 이상의 이름과 하나 이상의 IP 주소의 묶음을 뜻했으며, 직접 접근 가능성의 시험이 아니었다.
  • 이 메모는 오류의 두 방향을 기록한다. 거부되거나 실패한 전송과 DNS에 없는 호스트는 수치를 실제보다 낮게 만들고, 형식이 틀린 레코드, 권위 없는 레코드, 전환기 잔여 항목은 수치를 실제보다 높게 만들 수 있다. 수동 검토 후 저자는 ZONE 결과를 실제 수치가 아니라 최소 호스트 수로 규정한다.

RFC 1296 —Internet Growth (1981-1991)의 숫자는 기억에 남는다: 1992년 1월 기준 727,000개의 IP 호스트. 그 숫자를 만들어낸 방법이 더 중요하다. 공개 통계는 분산된 네트워크를 셀 수 있는 단일 객체로 바꾸는 것처럼 보인다. Lottor는 대신 이음새를 드러낸 채 두었다. 이 프로그램은 특정 수집 절차로 특정 네임스페이스를 관찰했고, 그 절차가 견딜 수 있는 만큼의 주장만 했다.

이것은 이름의 느슨한 긁어모음이 아니었다. ZONE — Zealot Of Name Edification —은 도메인과 서버의 작업 목록, 그리고 어떤 서버가 한 도메인에 대한 정보를 성공적으로 제공했는지 표시하는 플래그를 유지했다. BIND의 문제 때문에 최상위 도메인과 그 네임 서버로 시작 목록을 채워 놓아야 했다. 전송되지 않은 도메인에 대해서는 TCP로 서버에 접속해 SOA 질문으로 해당 서버가 요청된 도메인에 대한 권위 있는 서버임을 확인한 뒤에만 AXFR을 보내 그 영역의 리소스 레코드를 요청했다. NS 레코드는 작업 목록을 늘렸고, 받은 A, CNAME, HINFO, MX 레코드는 메모리 내 테이블에 들어갔다. 새 정보를 찾지 못한 통과가 순회를 끝냈고, 그 결과 HOSTS.TXT 방식의 파일이 작성되었다.

이 순서는 정확하지만 제한적인 것을 말한다. 그 시점의 SOA 응답은 그 서버에게 그 도메인에 대해 물을 수집자의 근거를 확립했다. AXFR 응답은 레코드를 수집자가 이용할 수 있게 했다. 파싱된 레코드는 테이블에 들어갈 수 있었다. 그러나 그 어떤 사건도 물리적 기계가 인터넷에서 도달 가능하다는 것, 광고된 모든 이름이 서로 다른 작동 중인 호스트를 가리킨다는 것, 한 회사가 인터넷의 한 정의 아래 속한다는 것, 아니면 중요한 모든 호스트가 DNS에 나타난다는 것을 확립하지 않았다.

전송은 수집의 증거였지 인구조사가 아니었다

호스트 테이블에서 DNS로의 전환은 관찰자들이 분산 디렉터리를 완전한 목록처럼 다루도록 유혹했다. RFC 1296은 그 추론이 왜 실패했는지 분명히 한다. DNS 이전에는 SRI-NIC 공식 호스트 테이블의 선별된 사본이 이전 수치를 공급했다. DNS는 1984년경 도입되어 완전히 구현되기까지 거의 4년이 걸렸고, 그 사이 많은 호스트는 이미 옛 테이블에 등록되지 않았다. ZONE은 1986년에 그 전환을 위해 작성되었다: 이동하지 않은 사이트를 위해 DNS 트리를 순회하고 호스트 테이블을 만들 수 있었다. 그 프로그램은 결국 그 과도기 서비스에는 쓰이지 않았다. 통계 수집기가 되었다.

그 수집 능력 자체에도 역사가 있었다. 초기 BIND 구현은 주요 영역 전송 문제가 있었고, 그래서 ZONE은 1988년경까지 완전한 DNS 데이터를 수집할 수 없었다. 네임스페이스가 커지면서 수집은 몇 시간에서 일주일로 늘어났고 결과 테이블은 50메가바이트에 가까워졌다. 메모는 당시의 모드가 정렬(sort), 중복 제거(uniq), 검색(grep) 같은 유틸리티가 요청된 통계를 만들기 전에는 호스트 이름과 IP 주소만 남기고 프로토콜, 호스트 정보, MX 데이터를 무시했다고 말한다. SRI에서는 3개월마다 실행되었다.

이러한 운영 세부사항은 장식이 아니다. 모든 헤드라인 수치가 시간 창, 시작 목록, 어느 서버가 응답했는지, 어느 전송이 완료되었는지, 어떤 레코드 클래스가 남겨졌는지, 나중에 어떤 묶음 규칙이 적용되었는지에 의존하게 만든다. 일주일 걸리는 수집은 한 순간 찍힌 사진이 아니다. 분기별 실행은 항상 최신 재고가 아니다. 한 필드를 무시한 프로그램은 나중에 그 필드를 증거로 제시할 수 없다. 방법은 숫자의 일부다.

가장 엄격한 한계는 원본 데이터에 대한 접근에서 왔다. 일부 사이트는 영역 전송을 허용하지 않았다. ZONE은 실패가 너무 많으면 결국 포기했다. 1992년 1월 1일 실행에서 17,000개 도메인 중 약 800개를 전송할 수 없었다. 메모는 또한 모든 인터넷 호스트가 도메인 서버에 등록된 것은 아니라고 가정한다. 두 조건 모두 관측 누락 문제다: 수집자는 개수에 기여할 수 있었던 레코드를 보지 못한다. 그래서 RFC 1296은 이들이 수집된 통계를 실제 규모보다 낮게 만든다고 말한다.

그 결론은 도구에 가끔 오류가 있었다는 말보다 강하고, 세계가 완전히 측정되었다는 말보다 약하다. 서술된 조건 아래의 비대칭 논증이다. 접근 불가능한 영역과 미등록 호스트가 생략된다면, 레코드에서 나온 총계를 그냥 전체 인구로 제시할 수 없다. 최소라고 부르는 것은 생략된 것의 크기를 안다고 가장하지 않으면서 알려진 생략의 방향을 유지한다.

추가 레코드는 누락된 관측을 메우지 않았다

메모는 반대 방향의 문제도 숨기지 않는다. 수동 검토는 DNS에서 무작위 재료를 발견했다. 형식이 틀린 항목은 가짜 서버나 호스트 레코드를 낳을 수 있었다. 목록에 올라 있는 서버가 그 옆의 도메인에 대한 권위 있는 서버가 아닌 것으로 드러날 수도 있었다. 이름 변경 중에는 도메인 전체의 옛 항목이 전환 기간 동안 남아 각 호스트가 두 번 셰어질 수 있었다. 이들은 누락된 관측이 아니라 수집된 데이터 안의 추가나 중복이며, 수치를 위로 밀어올린다.

RFC 1296의 핵심 판단은 비교적이다. 수동 검토는 이미 서술된 누락 항목 옆에서 추가 항목이 미미함을 보여주었다. 그 근거로 이 문서는 ZONE 데이터를 인터넷 호스트의 최소 수로 볼 수 있고 실제 수치는 아니라고 말한다. 이 문구를 검토에서 떼어내어는 안 된다. 모든 DNS 순회가 항상 과소평가한다는 수학적 증명이 아니다. 이 프로그램, 이 재료, 이 오류 원천들에 대한 저자의 서술된 평가다.

이것이 중요한 이유는 하나의 집계가 서로 매우 다른 두 과제를 가릴 수 있기 때문이다. 하나의 과제는 모든 관측과 그 출처를 남기는 것이다: 어느 도메인, 어느 서버, 어느 시도, 어떤 권위 확인, 어느 전송 결과, 어느 레코드, 어느 시점. 다른 과제는 레코드가 연구 대상을 대변하는지, 잔여 오류가 방향성 결론을 허용하는지 판단하는 것이다. 정렬과 중복 제거는 반복된 이름을 줄일 수 있다. 그러나 생략된 전송이 10개의 호스트를 숨겼는지, 오래된 이름이 한 호스트를 두 번 대변했는지, 광고된 호스트가 연결을 받을 수 있었는지는 판단할 수 없다.

연구의 정의는 그 경계를 보이게 유지한다. 호스트란 DNS에서 발견된[name(s), IP-address(es)]묶음이다. 이 묶음 규칙은 여러 이름이나 주소를 가진 하나의 호스트가 두 번 이상 셰어지는 것을 막는다. 호스트가 직접 접근 가능한지는 고려하지 않는다. ZONE이 도메인을 셀 때는 NS 레코드가 참조하는 모든 도메인을 포함하며, Usenet 사이트처럼 인터넷 밖에 있을 수 있는 사이트의 메일 전달 전용 도메인도 포함한다. 레코드 규칙이 일관성을 공급한다. 그러나 "인터넷에 있다"는 것의 의미를 정해주지는 않는다.

보이는 이름이 도달 가능한 호스트는 아니었다

RFC 1296은 범위 질문을 직접 던진다. DNS의 호스트 항목이 그 호스트가 인터넷에서 도달 가능하다는 것을 반드시 뜻하지는 않는다. 회사는 인터넷과 내부 네트워크 사이에 메일 게이트웨이를 두고 직접 접근을 막으면서 모든 호스트를 광고하거나, 게이트웨이만 광고할 수 있다. 메모는 어느 쪽을 셀지 물어본다. 또한 MX 전용 도메인이 인터넷 규모 연구에 속하는지도 묻는다. 이들은 구현 버그가 아니다. 셀 대상에 대한 의견 차이다.

이 구분은 역사적 배경을 넘어 유용하다. DNS 응답은 서버가 반환한 레코드에 대한 주장을 지지할 수 있다. 완료된 AXFR은 수집자가 한 영역의 레코드를 받았다는 주장을 지지할 수 있다. 정규화기는 자신이 묶음 규칙을 적용했다는 주장을 지지할 수 있다. 그 어떤 것 하나만으로는 가용성 주장, 정책 주장, 신원 주장 또는 인구 주장을 지지하지 못한다. 더 강한 문장마다 추가적인 정의, 관측 방법 또는 권위 원천이 도입된다.

비용 논의가 그 점을 강화한다. 모든 도메인에서 정보를 내려받는 것은 상당한 네트워크 트래픽을 만들고 접촉된 서버에 CPU 부담을 더했다. RFC 1296은 조직화된 노력이 그런 프로그램 하나를 정기 일정으로 실행하게 해 여러 수집자가 부담을 반복하지 않도록 할 수 있다고 제안한다. 이는 수집 거버넌스에 관한 제안이지, 인터넷에 승인된 인구조사 담당자가 있었다는 증거가 아니다. 수집자가 물을 수 있는 기술적 능력이 비용을 무한히 부과하거나 최종 공개 개수를 선언할 무한한 권리를 그 자체로 부여하지는 않는다.

미래 설계는 신선도와 완전성을 분리했다

미래 과제 부분에서 메모는 ZONE이 DECsystem-20의 어셈블러로 실행되어 주소 공간의 한계에 접근했고, 완전한 레코드를 쓰기 전에 별명과 공식 이름을 대조할 수 있도록 모든 데이터를 메모리에 유지했다고 서술한다. 디스크 저장소, 병렬 전송, 몇 주에서 한 달에 이르는 계속 순환, 로컬 통계 데이터베이스의 갱신을 제안한다. 이 제안은 저자가 측정 부담이 어디서 커질 것으로 기대했는지 보여준다. 새 아키텍처가 실제로 만들어졌다거나, 계속 데이터베이스가 존재했다거나, 이후 개수가 완전해졌다는 것을 증명하지는 않는다.

이 절제가 이 글의 중심 역사적 교훈이다. 더 자주 수집하면 관측의 나이를 줄일 수 있다. 병렬 전송은 수집 경과 시간을 줄일 수 있다. 영구 저장소는 충돌을 덜 파괴적으로 만들 수 있다. 그러나 그 어느 것도 레코드와 도달 가능한 호스트 사이, 광고된 이름과 인구 사이, 관측된 하한과 실제 총계 사이의 구분을 없애지 못한다.

출처와 증거의 한계

유일한 출처는RFC 1296이다. 이는 메모의 1992년 1월 Informational 지위, 호스트 테이블 아카이브와 ZONE 데이터의 사용, SOA와 AXFR 수집 순서, 레코드 유형과 호스트 묶음, 전송 실패·부재 호스트·형식 오류·잔여 항목의 한계, 서술된 하한 결론, 범위 질문, 기록된 1992년 1월 수치, 수집 비용, 미래 설계 제안을 뒷받침한다. 이는 현재의 DNS 인구, 실시간 AXFR 결과, 현대 BIND의 속성, 현재의 열거 정책, 호스트의 도달 가능성, 조직의 소속, 보안 태세, 배치된 대체 수집기 또는 그 이후의 어떤 결과도 증명하지 않는다.