当ARP响应没有及时到来时,TCP连接重置

时间:2017-05-11 10:07:53

标签: sockets tcp arp

我有一台机器连接到网络外的服务器。 最近我观察到它们之间的连接问题太多了。 最近我将我的机器操作系统从Windows XP升级到Windows 7,之后我观察到了这个问题。

为了更好地分析问题,我从机器上获取了Wireshark日志。可以在this链接

找到该方案的Wireshark跟踪

机器:142.6.78.2 网关:142.6.78.1 服务器:172.25.2.3

我怀疑这个问题是因为来自网关的ARP响应没有准时到来,因此机器正在重置连接。 机器也总是在4个ARP广播请求之后发送RST。

我想知道,如果有任何重要的ARP响应和RST被发送? 如果是,那么如何配置我的机器在发出10个ARP广播请求后发送RST?

请建议!!

1 个答案:

答案 0 :(得分:1)

TL; DR你的IP地址很乱,检查网络拓扑结构。

发生了什么

我对你的痕迹的解释:

  • 在某些时候PC想要将数据包发送到服务器。但是,服务器在不同的子网中,数据包应该通过路由器传输,因此PC需要事先知道路由器的MAC地址。
  • 由于MAC地址不在缓存中(如果长时间不使用缓存,则释放缓存),PC发送多个ARP请求"嘿,路由器,你的MAC是什么"
  • 无论出于何种原因,路由器都不会回复超过12秒。这真的很不正常。
  • 然后路由器最终发送其MAC,PC发送"重置连接"到服务器。也许,PC最初想发送" keep-alive"数据包检查连接状态,但由于路由器导致连接超时,延迟12秒。这是纯粹的推测。

导致

的原因

不清楚,但你发生了奇怪的事情:

  • 服务器位于private network 172.25.xxx.xxx,因此PC也必须位于专用网络中。否则,您无法从全球IP地址访问专用网络。
  • 然而,PC和路由器类似于142.6.78.xxx子网。这些是全球IP,似乎被用作私有IP,因为PC最终可以到达服务器。设置无效。
  • 此外,跟踪包括172.21.228.1的ARP请求,PC在停留在142.6.78.xxx子网时无法接收。这意味着具有全局IP的PC不仅位于本地子网中,而且它与172.21.xxx.xxx设备位于同一子网中。

可能这个东西可以通过PC上的两个网卡和Wirehark嗅探两者来解释,即使是猜测也只有很少的信息。