摘要

  • RFC 1234 于 1991 年规定了 IPX-over-UDP。它允许实现把 IP internet 看作单一 IPX 网络;对于已知主机,IPX 主机号的后四个字节就是该节点的 IP 地址,单播映射因而直接。
  • 对广播,RFC 1234 不采用覆盖整个 internet 的 IP 广播,而要求人工构建 IP peer list,并向每个 peer 单独发送一份单播包。它明确指出:若广播通常不能到达完整的服务器 peer group,IPX internet 中的资源可能对终端系统可见,却仍无法被它到达。

“一张网”首先是一个受限的转发视角

RFC 1234 的起点很实际:有些互联网络只承载 IP,却需要让 IPX 流量穿过。UDP 封装提供了这条通道。它对已知主机的表达也很清楚:IPX 主机号的前两个八位组设为零,最后四个八位组采用节点的 IP 地址。目的主机已经知道时,发送端可以把这个标识直接转成 IP 单播目的地。

但这个便利不等于物理上形成一个 LAN,也不等于形成单一管理权、统一安全域或天然完整的服务发现域。RFC 的措辞是“实现可以把 IP internet 看作”一张 IPX 网络;它没有说,这个视角会自动让每一个有关的服务器、路由器或客户端收到发现请求。

IPX 需要广播能力,供共享同一网络的 NetWare 服务器和 IPX 路由器彼此发现。已知地址的主机能否被送达,与一项问题能否发给所有相关成员,并不是同一个问题。前者是在已有身份上转发,后者必须决定谁属于接收者,并完成向该集合的分发。

广播被展开成可追责的名单和多份单播

RFC 1234 说,覆盖整个 internet 的 IP 广播既不合适,也不可用。替代方式没有被藏在“云”里:每个服务器或路由器维护一份手工构建的 IP peer list。当 IPX 请求广播时,封装实现向名单中的每一个 peer 发送单独的单播包。

这使原本可能被共享介质遮蔽的条件变得明确。模拟广播能抵达谁,取决于名单中有谁,以及每一份复制包是否真的送达。RFC 还说明,由于每份名单都是人工构建的,多个 peer group 可以共享同一个 IP internet 而彼此不知情;在一个 group 内,每份名单都应包含该 group 的所有 peers。

因此,IP 层存在路径,并不足以证明两个地点参与同一次发现;隧道可以使它们被描述为一张逻辑 IPX 网,也不足以证明某次询问覆盖了全部相关服务器或路由器。共同的底层传输与完整的发现范围,是两项不同的事实。

客户端也承担了“问到全部人”的义务

名单不只出现在服务器一端。RFC 1234 说,IPX 网络上的客户端要用广播寻找能通往所需目的地的路由器。客户端实现因此配置一份列表,列出 peer group 中全部服务器和路由器的 IP 地址,并向列表中的每个地址发送一份包副本。

这样,发现的成功取决于两个方向的完整性:服务器和路由器名单是否覆盖 peer group,客户端的寻找是否指向所有相关的服务器 peer groups。一个可以正常转送已知单播的隧道,不能替人补上漏列的 peer、修正过期地址,也不会自动重发持续未到达某个 group 部分的副本。

RFC 给出的后果非常克制。若这些包通常未到达完整的服务器 peer group,IPX internet 的资源“可能”对终端系统可见,却仍无法由该系统到达。这不是关于某个真实事故、某个错误管理员或某张已知拓扑的报告;它说明的是协议层面的条件:当找路所依赖的发现没有覆盖完整 group 时,看见资源与取得可用路径可以分离。

已知节点的地址不能替代群体成员资格

这个设计存在一处重要的不对称。已知主机的目的地可从 IPX 头部中读出并映射;广播则在问“谁必须听到?”答案不在一个数据报里,而在可以变动、需要维护的名单里。RFC 1234 没有把 IP 拓扑本身当作这个问题的自动答案。

RFC 提到未来可以使用 IP multicast,却同时说明当时 multicast 并不广泛可用,没有 well-known 地址,也没有使用它的实现。这一历史限制并不只是年代细节。无论是用 multicast、注册表还是其他群组分发机制替换名单,都仍要界定成员、检查送达范围,并保留 group 之间的边界。

还有若干明确的传输条件:默认 IPX MTU 为 576 字节,封装后 IP 总长度为 604 字节,参与的 IP 基础设施必须接受这一长度;UDP checksum 可选,但 RFC 强烈推荐,因为 IPX 通常不用自己的 checksum。这些条件帮助隧道工作,却不能证明发现名单已经完整。

来源与证据边界

本文封闭来源集只有 RFC 1234,《Tunneling IPX Traffic through IP Networks》。它支持本文采用的日期、UDP 封装、主机号约定、peer list、客户端发现、可见但不可达的条件性结论、MTU、checksum 与安全说明。它不证明某一部署的规模、某次实际故障、某机构拓扑、该协议的当前使用情况,或 UDP 213 端口今天的状态。