摘要

  • RFC 1296 中的 ZONE 程序维护域和服务器清单,先以 SOA 检查被联系服务器对所请求域是否具有权威性,再发送 AXFR 请求。研究把从 DNS 发现的 [name(s), IP-address(es)] 组合定义为一个 host;这是一条计数规则,不是直接可达性的测试。
  • 禁止或失败的区域传送、以及没有登记在域名服务器里的主机,会令收集结果偏低;格式错误条目、非权威服务器和更名过渡期保留的旧条目,则可能制造额外记录或双计数。作者在人工扫描后把 ZONE 数据称为最少主机数,而非实际数字。

RFC 1296《Internet Growth (1981-1991)》 最容易被摘走的是一张增长表,最值得保留的却是表格周围的限定。Mark Lottor 没有把 DNS 看作一只可以直接称出“互联网”重量的秤。他写下了一个收集过程:从哪里开始、向哪个服务器提问、何时认为服务器有资格回答、何时请求整个区域、哪些记录进入表、哪些无法进入,以及为什么最后只能作出方向明确但范围有限的判断。

ZONE 是 Zealot Of Name Edification 的缩写。它在 1986 年写成,原本服务于 Host Table 向 DNS 过渡的时期:程序可以沿 DNS 树行走,利用收集来的信息建立一份 host table,供尚未完成 DNS 过渡的站点使用。它后来并未用于这个目的,而是被发现适合收集域名系统和互联网规模的统计资料。用途的转换不能被忽略:一个能把记录装进表里的程序,并不会因此变成对所有机器、所有网络成员或所有可达服务的普查工具。

权威性检查不是可达性检查

ZONE 的行走并不是简单地把能解析的名字抄下来。程序维护一份域及其服务器的列表,并为每个域保留一个标志,记录是否已经从某台服务器成功装入信息。由于 BIND 的另一个缺陷,它必须预先得到所有顶级域及其 name servers 的列表。对于尚未成功传送的域,它循环尝试联系其中一台服务器,使用 TCP 连接;首先发出 Start of Authority,即 SOA 查询,以确认该服务器对被请求域具有权威性;如果确认,再发送 AXFR 区域传送查询,请求取得该域的全部资源记录。

当收到 name server 记录时,引用的域和服务器被加入后续处理列表。收到 A、CNAME、HINFO、MX 记录时,它们被加入内存中的主机信息表。程序在完整循环一遍而未收到新信息后结束,然后把主机信息写成 HOSTS.TXT 格式文件。这里每一步都有不同的证据对象:一次 SOA 回应关乎收集器向该服务器索取该域记录的依据;一次 AXFR 成功关乎收集器接收了哪些记录;一次表格归并关乎分析程序怎样处理这些记录。

这些步骤不能互相越权证明。某服务器对 SOA 查询作出权威性回应,不证明区域内每个记录都准确、更不证明记录背后机器可从互联网直连。AXFR 返回一组资源记录,不证明所有现实中的主机都在这组记录中。某组合被归为一个 host,不证明它是单一物理机器,也不证明它属于某个机构、某项服务或某种经济意义上的“互联网”。收集到的记录是观察结果;可达性、身份和总量是另一些问题。

RFC 1296 给 host 的定义把这条边界写得很清楚:对于本研究,一个 host 是从 DNS 发现的 [name(s), IP-address(es)] 分组。这个分组让拥有多个名字或地址的主机不至于被重复计算。它并不考虑主机是否可被直接访问。规则处理的是计数单位,而非机器状态。一个名称可以仍然指向旧记录,一个地址可以无法连通,一个被收集的组合也可以不符合读者心目中“互联网成员”的边界;定义不能替这些事实作答。

缺失给出了偏差方向,却没有给出补数

真正限制 ZONE 的首先是它拿不到的资料。某些 Internet sites 不允许从其 domain servers 获取区域传送。ZONE 在失败次数过多后最终放弃传送某个域。在 1992 年 1 月 1 日这次运行里,大约 17,000 个域中有 800 个无法传送。文档还假定,不是所有互联网主机都登记在某个 domain server 中。两种情况都使原本可能进入统计的资料没有进入收集表,于是文档说这些问题会令 ZONE 收集的统计低于实际数量。

“低于”不是一个可以随意补齐的百分比。RFC 没有说每个未传送的域内有多少主机,没有说未登记的主机都可直接访问,也没有给出隐藏部分的完整分布。它只保留了一条更窄的结论:若方法的对象是成功取得的 DNS 记录,那么拒绝、失败和源中不存在的对象不会神奇地出现在结果里。把结果称为下界,是承认已知缺失的方向,而不是假装掌握缺失部分的大小。

收集器本身的历史也使单个数字不能被读成同一时刻的快照。DNS 大约在 1984 年被引入,花了近四年才在互联网中充分实施;到那时,许多主机已不再登记在旧 Host Table 中。早期 BIND 对区域传送有重大问题,ZONE 直到约 1988 年才可收集完整 DNS 数据。收集耗时从数小时增长到一周,产生的主机表很快接近 50 MB。当时的运行模式只收集主机名和 IP 地址,忽略协议、主机信息和 MX 记录,之后借助 sort、uniq、grep 等工具计算所需统计;SRI 每三个月运行一次。

一周完成的行走不是一个全网同时刻的观察。每季度一次的运行不是持续的现实库存。为了减小数据量而明确忽略的字段,不能在后来被当作已经观察过的证据。数字取决于起始清单、收集窗口、服务器回应、传送完成情况、所保留的记录类型和归并规则。方法不是给图表增加可信度的装饰;方法定义图表到底在说什么。

多余条目没有填平看不见的部分

RFC 1296 并没有只描述会令数字偏低的问题。它说,对已收集数据的人工检查也显示 DNS 中有许多随机条目。格式错误的条目可能导致虚假的服务器或主机记录出现;有时列出的服务器并不对相关域具有权威性;有时整个域被更名,而旧条目为了过渡仍被保留,导致域内每个主机都可能被算两次。这些情况会在表里增加或重复观察,推动结果向上。

文章的重要判断在于比较,而不是掩盖反向误差。人工扫描表明,与前面谈到的缺失相比,这些额外条目并不显著。因此 ZONE 数据可以被视为互联网主机的最少数量,而不是实际数字。这不是任何 DNS 枚举在任何年代都必然低估的定理;它是作者针对这个程序、这批材料和这次审查写下的条件性评估。

这区分了两件常被混合的工作。第一件是保存观察账本:哪个域被尝试、哪台服务器被联系、SOA 是否通过、AXFR 是否完成、何时接收到什么记录。第二件是解释账本:这些记录对应什么研究对象,遗漏和重复之间的关系是否支持某个方向性结论。排序和去重可以按规则处理多名字、多地址;它们不能决定一个失败传送背后有多少主机,不能判定旧名是否仍代表同一机器,也不能令一次 DNS 发现成为连接成功的证据。

DNS 中存在,不等于从互联网可达

RFC 1296 直接指出,统计互联网 hosts 和 domains 的困难在于如何定义 Internet 本身。DNS 中找到 host entries,不一定表示 host 可从 Internet 到达。许多公司在 Internet 与本地网络之间设置 mail gateways,禁止直接访问;有的公司宣传所有主机,有的只宣传网关。两种情况下哪些主机应算入?此外,许多 DNS domains 只是为 Internet 之外的站点(例如 Usenet)提供 mail-forwarding 的 MX entries;它们是否真的属于互联网规模研究?

这些不是一次追加查询能够修复的技术空白,而是测量对象的选择。DNS 回应可以支持“某个记录被返回”的说法;AXFR 完成可以支持“收集器收到某区记录”的说法;分组规则可以支持“表如何避免重复计数”的说法。若要说主机直接可达、组织归属某网络、某名称代表某身份,或总量就是整个互联网,就要引入另一条定义、另一种观察或另一个权威来源。一个排列整齐的时间序列不会自动获得这些更强的谓词。

下载每个域的信息还有成本:它产生大量网络流量,并给每台被联系的 domain server 增加额外 CPU 负担。RFC 1296 提议,或许应由一个组织化的努力定期运行一个程序,以避免多个收集器带来的问题。这是关于收集协调和外部成本的建议,不证明当时存在一个被授权无限枚举、或独自决定谁属于互联网的中心观察者。

更频繁的收集仍不能取消类别差异

在未来问题部分,RFC 说 ZONE 运行在 DECsystem-20 上,以汇编语言编写;数据量快速逼近 DEC-20 地址空间和硬件承受能力的上限。程序把所有数据放在内存中,之后才输出到磁盘,以便把 host nicknames 和 official names 匹配起来;昵称有时会在不同域中,使较简单的办法复杂化。作者建议为预期数据量设计新架构,将资料保存在磁盘上,用并行区域传送缩短时间,并让新版本在持续数周到一月的周期中更新本地统计数据库。

这是一个设计建议,并不是新架构已被实施、持续数据库已存在或之后统计已变完整的证据。提高频率可以降低部分观察的陈旧程度,并行可以缩短一次行走经历的时间,落盘可以降低系统崩溃时丢失的资料;没有一项改进会把 DNS 记录变成可达性证明,把名字/地址分组变成不变身份,把观察到的下界变成总体。RFC 的历史价值就在于:即使设想改善工具,也没有消除这些层次。

来源与证据限制

唯一来源是 RFC 1296。它支持该文 1992 年 1 月 Informational 身份、Host Table 与 ZONE 数据的使用、SOA/AXFR 顺序、记录类型、host 分组、传送失败、残留条目、下界结论、范围问题、1992 年 1 月的表中数字、收集成本和未来架构建议。它不证明当前 DNS 人口、实时 AXFR 结果、当代 BIND 属性、现行枚举政策、任一主机可达性、组织归属、安全状态、替代收集器已经部署或任何后续结果。