ARP:“谁有”广播导致 TCP 段丢失

ARP:“谁有”广播导致 TCP 段丢失

我在两台直接连接在一起的 PC(均为 Windows XP SP3)之间的简单 TCP 连接上遇到了问题。这两台 PC 用于直接连接的网络适配器上的 IP 地址分别为 10.10.10.1(服务器)和 10.10.10.2。

下面您可以看到 Wireshark 屏幕截图,显示了从客户端发送 ARP 广播后我们看到的问题。这导致我们的非阻塞连接上出现 Windows Socket 错误 10035,并且仅在大约 1 秒或更长时间后我们才会收到 FD_WRITE 事件,告诉我们可以在客户端等上再次发送。

这种行为对于我们的场景来说并不好,但为什么通信会挂起这么长时间?有什么解决方案吗?除了向 ARP 缓存中添加静态条目,这是我们想避免的。

服务器

客户

答案1

您是否尝试修复 TCP/IP 堆栈?如果没有:

打开命令提示符(开始->运行->输入 cmd):

  1. 将 WINSOCK 条目重置为安装默认值:netsh winsock reset catalog

  2. 将 TCP/IP 堆栈重置为安装默认值:netsh int ip reset reset.log

  3. 重新启动并测试。

如果这不起作用,您可以使用此实用程序:

使用 WinSock XP 修复实用程序修复 Windows XP TCP 网络设置

相关内容