TCP RST数据包的原因

我有两个应用程序运行在本地主机与客户端服务器架构

A <-------------------->B 2411 43787 

基本上A是服务器棒B是客户端。 在初始握手完成后,消息传送发生得很好,但是在一些日子(2/7/10天)之后,连接closures。

当我捕获TCP数据包时,我观察到RST数据包是从客户端发送的。 我检查客户端的代码,我没有看到客户端正在closures连接,也没有重新启动客户端应用程序,那么RST数据包被发送到服务器的原因是什么?

我如何着手解决断开问题。

 10744 2017-10-29 13:58:43.179257 127.0.0.1 127.0.0.1 TCP 68 43787 > vrts-registry [ACK] Seq=76858 Ack=203335 Win=182 Len=0 TSval=4066492436 TSecr=4066492436 10745 2017-10-29 13:58:43.179272 127.0.0.1 127.0.0.1 TCP 68 43787 > vrts-registry [RST, ACK] Seq=76858 Ack=203335 Win=182 Len=0 TSval=4066492436 TSecr=4066492436 

如果应用程序不知道新的传入数据包,则TCP复位可能发生。

应用程序太繁忙,在从监听器中select一个问题。 我会validation一个perfmon服务器的健康状况,当断开连接发生。

下一次重置是在networking帧发送六次(这将是原始帧加上帧的五次重传)时发生的TCP重置,没有响应。 结果,发送节点重置连接。 这是假设我们在三次握手后build立了联系。 重置之前的重发次数是可configuration的,但默认值是5。

在那个问题上有一个很好的阅读。