摘要

  • 主机要求工作组把互操作性置于架构纯粹性之前,试图让协议规则适用于真实软件实现。
  • RFC 1122 与 RFC 1123 建立了实践基线;RFC 1127 记录了工作过程、妥协和未决问题。

到 1989 年,互联网的关键问题不再只是有没有协议。不同主机里的软件能否遵守足够一致的规则、彼此通信,同样重要。厂商即使实现了某份已发布的协议,也可能在一摞旧文档中遇到空白、矛盾或尚未决定的选项。对用户而言,这些差异会在一台机器试图连接另一台时显现出来。

IETF 主机要求工作组花了约二十个月,试图把这片实现边界说清楚。工作完成时,编辑 Robert Braden 在一份同期回顾中记下:正式会议有七次,交换的电子邮件约三兆字节,约二十位专家承担主要工作,另有二十位左右作出重要贡献;文件经历了约二十轮不同草案。这些是 Braden 的约数,不是经过审计的出席或邮件统计。RFC 1127

工作组列出的目标顺序比邮件总量更能说明取舍。目标依次包括互操作性、可扩展性、功能、效率和架构纯粹性。Braden 明确说,互操作性居首,架构纯粹性居末;中间几项的相对重要性会随问题变化。任务是让不同实现能够协同工作,即使现实条件不允许所有情况都套进一个极其整齐的模型。

1989 年 10 月,成果以两份配套标准发布。RFC 1122 涵盖链路层、IP 层和传输层;RFC 1123 涵盖应用与支持协议。两份文件都规定主机软件的要求。RFC 1122 说,它们共同给出了当时互联网架构如何实现的规则。另有一份独立的 RFC 1009 规定网关要求:主机和转发数据包的网关彼此相关,却承担不同职责。

这两份文件并不是新造一套协议。它们把早期标准汇成实现者可用的参考,修正或更新既有文本、补齐规范空白、在需要一致性的地方限制实现选择、解释协议意图,并记录已知解法与实现提示。Braden 指出,一些条款只是重述或加强旧规范中已经明示或暗含的要求;之所以仍然写入,是因为至少有一种实现没有遵守。发布规则与让不同厂商真正按规则互通,是两件事。

工作组也划定了共同基线的边界。一项已达成的决定是要求主机实现 DNS。另一些问题仍有争议。多宿主——主机同时连接多个网络接口时的行为——就在未决清单中。Braden 记载,当参与者无法判断某项行为应当强制还是禁止时,规范有时保留不同意见,并把该功能留作可选。共识在部分领域形成共同要求,在另一些领域则保留实现选择。

这条边界很重要。主机要求没有把所有设备变成同一种机器,没有保证每家厂商都合规,也没有终结互联网架构之争。它让主机应达到的要求更容易查找和实施,并把尚未解决的分歧留在明处,而不是伪装成已经定论的原则。它的历史贡献,是在软件接入网络的地方给互操作性写下了一份可用说明。