在我们的环境中,我们面临着随机的RST数据包问题,这会导致一些意想不到的行为,下面的图像是wireshark生成的tcp数据的快照,它显示了这个问题:

经过分析,我们认为在第3步之后会出现一些网络问题,所以从服务器发送的所有结果数据和FIN信号都不是客户端发送的,但是我们对服务器发送的RST信号非常困惑。根据我们的理解,如果半封闭套接字接收到某些数据,或者在关闭套接字时接收队列中有数据,则发送RST信号。但这两件事似乎都不是我们案子的根本原因。
有人能帮我解释一下为什么会发生这种情况吗?
发布于 2021-01-22 23:39:43
RST通常发生在没有shutdown的套接字上调用close,或者在另一方仍试图发送数据时调用shutdown (仍然没有用FIN答复)。
有些编程语言有socket.close(timeout) for 示例.NET,在timeout通过后调用shutdown,然后调用close。
因此,客户端可以使用timeout完成使用FIN发送和关闭连接,如果没有完成,连接将被RST强制关闭。
有关close和shutdown之间区别的更详细说明,请参见close。
https://stackoverflow.com/questions/12586804
复制相似问题