摘要

  • RFC 925 让主机仍把一个 IP 地址当作本地地址,即使目标位于另一条 LAN 后面。BOX 用自己的硬件地址回答普通 ARP,再承担把数据报送往隐藏目标的下一步责任。
  • 便利并没有抹掉复杂性。按接口划分的缓存、未完成搜索表、重试、定时器顺序、TTL 和环路抑制,成为“多条线看起来像一条线”的成本。
  • RFC 950 记录了另一种安排:把子网边界明确交给实现去解释和路由,而不是靠广播和被学习的代理映射去重新发现被遮蔽的位置。两份文献都不能证明普遍部署或唯一胜者。

一份没有报出目标地址的回答

以太网主机要向它认为在本地的 IP 地址发送数据报,首先得知道目的硬件地址。按照 RFC 826 的普通 ARP,它会广播提问;拥有该协议地址的机器直接回送自己的硬件地址。这个过程把“我要给这个 IP 地址发包”变成“我能在这根电缆上交给这个硬件地址”。

当一个站点有多条 LAN 时,这个朴素前提就成了架构选择。RFC 917 在 1984 年列出三种办法:每条电缆各用一个 Internet 网络号;在一个网络号下使用透明子网;或者把地址的主机部分显式划出子网号。第一种会把站内细节塞进外部路由表。第三种让实现能够读出局部边界。第二种则试图让主机继续相信它只在一个网络里。

RFC 925 把第二种选择落实为一个 BOX。它像普通主机那样接到两条或更多 LAN 上;主机无需学会新的地址格式或发现协议,仍然发出原来的 ARP。BOX 在每个接口维护 Internet 地址与硬件地址的缓存,并根据缓存位置决定回答方式。

如果目标映射存在于另一条 LAN 的缓存中,BOX 不能把远端主机的硬件地址交给请求者——那个地址在请求者所在的电缆上没有用。它返回的是自己在请求 LAN 上的硬件地址。于是主机把 IP 数据报交给 BOX;BOX 成为目标的代理,负责从这个边界继续转发。

这不是身份声明。BOX 并没有说自己就是目标,也没有证明自己拥有该 IP 地址,更没有承诺掌握全网最优路径。它只作出一个受限的执行承诺:你可以在这条 LAN 上把数据报交给我,而我会依据掌握的映射继续处理。把缓存回答误读成目标身份、永久可达性或全局路由权,会让一条局部观察承载它没有的权威。

被藏起来的位置仍然必须被寻找

RFC 925 为 BOX 规定了三个结果。若映射在请求进入的同一 LAN 上,BOX 不回答,让目标自行回答;若映射在另一条 LAN 上,BOX 作为代理回答;若所有缓存都没有映射,BOX 必须发起搜索。

搜索正是透明性的账单。BOX 把被寻找的 Internet 地址、入接口和原始请求者信息记入搜索表,随后在其他接口上发送 ARP 请求。收到应答后,它填充对应缓存、删除搜索表项,再回复最初的主机。可是 ARP 没有“目标不存在”的否定回答;只有时间过去,BOX 才能把没有应答理解为一次未完成的搜索。

搜索表同时做两件事:它让迟到的回答能够找到原始问题,也阻止未知地址在有环的 LAN 集合里无限传递。同一个地址已在表中时,新的传播停止。因此一台刚才离线的主机,即使重新上线,也可能要等到表项过期才会从其他 LAN 被找到。隐藏电缆的设备必须决定,一个过去的沉默要多久才失去效力。

RFC 925 把这种时间关系写成 T1 < T2 < T3:T1 是主机 ARP 重试的时间,T2 是 BOX 搜索的寿命或再次查询间隔,T3 是缓存寿命。这个顺序使搜索不会在原始重试结束前过早遗忘,也让已发现的映射比搜索状态保留得更久。但更久并不等于更真。文档明确提醒,使用频率与正确性没有必然关系;每次使用都刷新缓存计时,反而可能使过期映射长久存在。缓存记录的是最近接受过的工作假设,不是拓扑的永久户籍。

名叫 bridge 的设备承担了路由责任

把 BOX 称作 bridge,容易掩盖它实际承担的责任。对普通 IP 数据报,RFC 925 要求 BOX 递减 TTL 并更新 IP 首部校验和;TTL 归零则丢弃。ARP 搜索有自己的搜索表来限制环路;跨整个网络的广播又需要一张“最近广播”表来识别并抑制回环副本。

这些边界不可互换。数据报本身带有跳数预算;ARP 请求没有否定结果,也没有通用的遍历预算,所以提案用记忆和超时为它加边界。网络级广播需要用源地址和 IP Identification 来辨认最近副本。一个 BOX 同时处理三种对象,不表示其中任一对象能证明另两个对象的正确性。

在多 LAN 环路中,可能有多个 BOX 回答同一个 ARP。RFC 925 只是说最早的回答“可能”是效率最高的路径,并建议主机不要让后来回答覆盖最早记录的映射。这是一条务实的选择规则,不是最短路径证明,也不是安全证明,更不是永久的可达性证明。先看到某个回答,不会自动得到全局路由裁决权。

无广播能力或没有 ARP 主机的 LAN 更清楚地揭示了代价。BOX 必须保存那条 LAN 的完整映射表,并向其他 BOX 逐一发送原本会广播的查询。最坏情况下,每个接口的表会接近整个 LAN 集合中所有主机的规模。拓扑并未消失;它换成了发现流量、缓存状态和例外表。

显式边界把知识放回地址解释中

RFC 950 次年重述三种选择,并点明透明方案的局限:它依赖 ARP 和广播,不能覆盖所有 LAN 技术;bridge 必须发现主机在哪条 LAN;LAN 增多会增加广播成本;翻译缓存会随总主机数增长。随后 RFC 950 规定了显式子网的标准程序。

显式方案要求相关主机对 IP 作相对较小的改动,但换来的不是免费午餐,而是清晰的记账方式:地址的一部分声明了局部边界,路由可以依赖已知的解释,而非隐藏搜索中最先学习到的代理回答。

这不应被讲成自动胜利的故事。RFC 是协调工件,不是部署命令。只有主机、BOX 和路由器实际运行相容的规则,某种行为才成为运行现实。后来的 RFC 1812 仍为地址共享的透明路由器保留了有限位置,但将其限定为地理和拓扑都受限的 stub 环境,并提醒表面上同网的服务可能无法被完全模拟。同一文件又把子网支持列为合格 IPv4 路由器的必备扩展。它说明了范围,而没有把 RFC 925 追溯地变成某个当代产品的说明书。

幻象的账本

RFC 925 的优点是让旧主机不必认识每一根电缆。它的代价是让某处承担不可见的复杂性:每接口缓存、搜索清单、定时、环路控制,以及一个可能已过时或不可达的代理。

因此,BOX 的回答是一项有边界的承诺。它可以在自己公布硬件地址的 LAN 上接收数据报;可以在相连接口上搜索;可以因观察并非永恒而遗忘。它不能把一次无回应变成“目标从未存在”的证明,不能把一次早到的回答变成最优路径的证明,也不能把地址映射变成替所有参与者重写站内拓扑的权力。

当系统为了兼容性隐藏结构时,值得追问的不是“结构去了哪里”,而是:谁承担发现,什么只是缓存,环路怎样停止,失效如何显现,旧结论怎样失去效力。拓扑没有消失,只是换了一本账。

来源与证据边界

封闭证据集包括 RFC 826、RFC 917、RFC 925、RFC 950 和 RFC 1812。它们证明提案机制、比较和后续的路由器要求框架;并不证明今天某个产品的行为、透明拓扑的普遍程度、性能收益或一种设计被另一种设计取代的确切日期。