一直试图了解一些旧的networking协议,并认为我会从IPX / SPX开始。 所以我在VirtualBox中build立了两个MS-DOS虚拟机,并且得到了IPX通信的工作(经过多次试验和错误)。
这个想法是让几个老的DOS游戏运行,连接到一个多人游戏,与每个游戏窗口交互,并从主机使用Wireshark捕获stream量。 由此,我得到了地震,猎户座2的主人和机甲2来回传达。 Doom,Doom2,Duke3d,Warcraft等几个人在虚拟机下或者在IPXnetworking上看不到其他的虚拟机。
我发现了什么? 没有工作的游戏使用SPX。 连微软的NET DIAG都没有使用SPX。 他们都只在IPX上运行。 我甚至无法find运行在IEEE 802.3以太网II帧上的SPXstream量的SPX示例或使用案例。 我确实find了在令牌环上大量使用的引用,但就是这样。
然而,目前为止,我所追求的任何支持IPX的应用程序通常会将自己标榜为“IPX / SPX”,这看起来似乎有点用词不当,因为它似乎并不使用SPX。
那么SPX用了什么? 任何使用它的DOS应用程序将在我的虚拟机设置下运行?
编辑 :我知道IPX是SPX作为IP到TCP(第3层到第4层),所以我希望在我运行testing时在Wireshark的IPX层下面看到一个SPX图层。
应用实例:
SPX(类似于TCP)针对局域网进行了优化,并且使用了每个数据包的NACK(假设数据包被接收而不是明确确认),并且没有传输窗口的概念。
比较这与每个字节使用一个ACK的TCP; 这也意味着你将缓冲所有未确认的数据并在丢失数据包之后重新发送。
但是,IPX不适合广域网。 例如,它不能处理不同的帧大小。 也就是说,两个不同帧的networking(比如以太网和带有巨帧的以太网)在没有代理服务器或某种forms的封装的情况下不能互操作。
此外,广域网中的数据包重新sorting是常见的,但是它与SPX(至less在Novell的实现中)一起造成大量虚假的NAK。 注1
最后,IPX / SPX在一个节点上最多支持20个插槽。 将其与支持数千个同时套接字寻址的TCP进行比较。
注1 : IPX / SPX和TCP / IP的性能