在我们的组织中,我们有两台运行 Windows XP 的测试机器。在尝试测试我自己的 UDP 消息服务器时,我发现两台机器都可以正常接收小消息(小于 2k)。但是,当我测试向这两台机器发送大数据包时,一台机器可以正常接收,而另一台机器根本无法接收。两台机器都安装了 SP3,并且都关闭了 Windows 防火墙,但其中一台仍然无法正常工作。有人能告诉我在哪里可以找到可能阻止或限制 Windows 机器上数据包大小的东西吗?谢谢。
答案1
UDP 是一种无连接协议。这大致意味着它无法保证交付。无法到达的原因几乎可以是任何原因。您可能只是达到了最大窗口大小,并且您的数据包被扔进了“位桶”。您使用什么来测量数据包的大小?(您发送的是 wchar 数据而不是 char 数据吗?(每个字符 2 个字节 vs 1 个字节)通常窗口大小约为 4k... 您会遇到 2k 个 2 字节字符的情况...
如果其他方法都失败了...找出 wireshark 并查看线路上到底发生了什么。
答案2
两个系统是否在同一交换机上?如果是,那么通常不会有任何丢包。如果它们在同一交换机上,那么系统可以自行监控/嗅探/wireshark 以寻找可能的线索。
答案3
使用 Wireshark 查看两端。
另外,请查看 NIC 驱动程序的设置,并可能查看 NIC 文档。并非每个 NIC 都允许 64k 数据包,有些 NIC 仅允许 6k 数据包(也算作“巨型帧”)就会出现问题。
一般建议:如果您尝试“新”的东西,请尽量保持其余设置符合标准,以避免堆叠不同组件的细微错误。 在您的情况下,这意味着确保 MTU 为 1500 字节,直到您确定您了解应用程序的发送和接收行为。