一直在尝试学习一些较旧的网络协议,并决定从 IPX/SPX 开始。因此,我在 VirtualBox 中构建了两个 MS-DOS 虚拟机,并让 IPX 通信正常工作(经过多次尝试和错误)。
这个想法是让几个旧的 DOS 游戏运行起来,链接到多人游戏,与每个游戏窗口交互,并使用 Wireshark 从主机捕获流量。由此,我让 Quake、Masters of Orion 2 和 MechWarrior 2 来回通信。Doom、Doom2、Duke3d、Warcraft 和其他几个游戏要么在 VM 下出错,要么无法在 IPX 网络上看到其他 VM。
我发现了什么?所有运行的游戏都没有使用 SPX。甚至连微软的 NET DIAG 都没有使用 SPX。它们都只在 IPX 上运行。我甚至找不到 SPX 示例或通过 IEEE 802.3 Ethernet II 帧运行的 SPX 流量用例。我确实找到了它在令牌环上大量使用的参考资料,但仅此而已。
然而,到目前为止,我所搜索到的任何支持 IPX 的应用程序通常都将自己宣传为“IPX/SPX”,这似乎有点用词不当,因为它似乎并不使用 SPX。
那么 SPX 是用来做什么的?有没有使用它的 DOS 应用程序可以在我的 VM 设置下运行?
编辑:我知道 IPX 与 SPX 的关系就像 IP 与 TCP 的关系(第 3 层与第 4 层),因此当我运行测试时,我希望在 Wireshark 中看到 IPX 层下方有一个 SPX 层。
答案1
应用示例:
- NetWare 的 ArcServe 备份代理
- Pervasive.SQL v7 NetWare
- Lotus Domino 服务器
SPX(类似于 TCP)针对 LAN 进行了优化,使用每个数据包的 NACK(假定数据包已被接收而不是明确确认)并且没有传输窗口的概念。
将其与对每个字节使用 ACK 的 TCP 进行比较;这也意味着您将缓冲所有未确认的数据并在丢失数据包后重新发送。
但是,IPX 并不适合 WAN。例如,它无法处理不同大小的帧。也就是说,两个具有不同帧的网络(例如以太网和具有巨型帧的以太网)如果没有代理服务器或某种形式的封装,就无法互操作。
此外,WAN 中的数据包重新排序很常见,但它会对 SPX 造成严重影响(至少对 Novell 的实现而言),从而导致大量虚假 NAK。注 1
最后,IPX/SPX 在单个节点上最多支持 20 个套接字。相比之下,TCP 则支持同时寻址数千个套接字。