摘要

  • RFC 796 把多种网络的主机、终端、进程及逻辑地址,分别放入 32 位互联网地址的本地部分;其中一些布局用零字节填充,另一些留有当时尚不能使用的字段。
  • PRNET 的 16 位主机号可以跟着移动主机走;SATNET 的一台物理主机可以拥有多个逻辑地址;ARPANET 的逻辑主机位因 IMP 尚不支持而填零。

一辆载着分组无线电设备的车换了地方,主机的号码怎么办?Jon Postel 的 RFC 796 在 1981 年就把这类问题画进地址表。它列出多种网络自己的地址格式,再说明怎样装入统一的 IP 地址。主机可以移动,卫星网上一台机器可以有几个逻辑地址;互联网外层的 32 位格式却只给它们一种共同信封。信封统一,里面的卡片各有尺寸。

Postel 先画出当时的 A、B、C 类。A 类的网络号占七位,本地部分占二十四位,前面还有类别位;B 类在类别位之后是十四位网络号、十六位本地部分;C 类是二十一位网络号、八位本地部分。真正有趣的不是这些格子本身,而是网络号指到一张具体网络之后,剩下的本地位由谁解释。AUTODIN II、ARPANET、两种分布计算网络、MIT 的 LCSNET、PRNET 和卫星网,给出的答案各不相同。

AUTODIN II 用十六位的用户地址标识主机或终端,号码可以不跟所在地绑定。它占用 A 类 IP 本地部分的低十六位,前一个字节填零。PRNET 的无线电主机也用十六位地址,主机可能移动,号码因此不依赖位置。Postel 列出六个 PRNET 网络号;每个网络的外层编号不同,本地部分则是零字节加十六位主机号。装箱方式类似,所属的网络仍清楚可辨。

ARPANET 把二十四位本地地址分成主机、逻辑主机和 IMP 三段,放进 IP 的二十四位本地空间。但它的 IMP 当时还不支持这种逻辑主机寻址,所以报文首部里的中间一段必须为零。实验数据网 EDN 采用相似布局,也把尚不能使用的逻辑主机位清零。图纸上画着一个位置,不等于现有设备已经会按它办事。

其他网络的卡片更换了内容。COMSAT 和 UCL 的分布计算网络把十六位地址分成八位主机标识 HID 与八位进程标识 PID,放在零字节之后。MIT 的 LCSNET 有几种三十二位地址格式;常见格式把低二十四位的子网、保留位和主机字段拿来当 IP 本地部分。RFC 在 COMSAT 与 UCL 的文字里写出网络号 29 和 30,紧接着的示意图却在首字节印了 18。同一份原件的文字和图没有对齐;把图上的数字直接抄进配置表,会把这处矛盾一并继承。

卫星网又拆开了「地址」与「机器」。SATNET 的十六位主机地址可以脱离地面站的位置分配,一台物理主机还能拥有多个逻辑地址。IP 本地部分用零字节接上这十六位。WBCNET 也允许一台物理主机有多个逻辑地址,不过它的十六位拆成 HAP 编号与本地地址,IP 示意图把零字节放在两者之间。天线所在的地面站、真正的机器和网络使用的逻辑名字,在这些表里各有自己的位置。

这七页的价值是把「统一地址」缝合的针脚露出来。零有时是填充,有时表示 IMP 尚未启用的能力;末尾十六位有时指终端,有时指进程,有时指移动无线电主机。要读懂 IP 地址的本地部分,光知道它有多少位还不够,还要知道它走进了哪张网络。