您是否完全确定服务器已成功将响应发送给似乎失败的客户端?我的意思是服务器已经发送了响应,客户端已经将该响应确认回服务器。您应该在服务器端使用Wireshark看到它。如果确定这是在服务器端发生的,并且客户端仍然看不到任何东西,则需要从服务器上进一步查找链。是否有任何代理/反向代理服务器或NAT?
TCP传输被认为是可靠的协议,但不能保证传递。您的操作系统的TCP /
IP堆栈将尽力使用TCP重传将数据包发送到另一端。如果发生这种情况,您应该在服务器端的Wireshark中看到它们。如果看到过多的TCP重传,通常是网络基础结构问题-
即硬件/接口错误或配置错误。TCP重传对于短暂的网络中断非常有效,但在中断时间较长的网络上效果较差。这是因为TCP /
IP堆栈仅在计时器到期后才发送重传。每次重传失败后,此计时器通常都会加倍。这是通过设计来避免因重传而使本来就很麻烦的网络泛滥。如您所想,
根据您的网络拓扑,您可能还需要将探针/ wireshark / tcpdump放置在网络中的其他中间位置。这可能需要一些时间来找出数据包的去向。
如果您是我,我将始终通过wireshark进行监视,直到问题再次出现。它很可能会。但是,听起来您最终会发现的就是您已经提到的-
片状硬件。如果无法修复不稳定的硬件,则可能仅需要构建额外的应用程序级别超时并重试,以尝试在软件中解决问题。听起来您开始走这条路了。



