【问题标题】:RST packet sent from application when TCP connection not getting closed properly当 TCP 连接未正确关闭时从应用程序发送的 RST 数据包
【发布时间】:2012-07-10 09:53:43
【问题描述】:

我有一个基于 Web 服务的应用程序,其中 Web 服务器在特定端口上的应用程序中运行。最近在生产环境中,我注意到应用程序正在向客户端发送一个 RST 数据包来重置连接。在分析 TCP 转储后,我观察到 TCP 4 路连接关闭没有正确发生。应用程序 Web 服务器向客户端发送响应后,应用程序正在向客户端发送 FIN 数据包并接收 ACK,但客户端没有向应用程序发起 FIN 数据包,而是收到了一些请求数据包。此时,应用程序会向客户端发送一个 RST 数据包,因为应用程序期望来自客户端的 FIN 数据包启动。这会导致请求数据包丢失。我相信这是 Web 服务器应用程序的正常/预期行为,需要在客户端进行修复。

请对上述情况发表评论。您的 cmets 将不胜感激。

提前致谢

【问题讨论】:

    标签: tcp


    【解决方案1】:

    客户端忽略套接字上的 EOS 条件并继续写入。然后,客户端将获得“对等方重置连接”。这基本上是一个应用程序协议错误。客户端不应该在同一个连接上发送另一个请求,或者服务器应该寻找它而不是在第一次响应后关闭连接。

    【讨论】:

    • 感谢您的快速回复。您说服务器应该正在寻找它 - 但是,连接启动已经从服务器端完成,客户端是否不需要完成连接终止过程 - 即 4 路连接关闭过程
    • @ChandanTalukdar 连接初始化是由 client 完成的。 否则你有 'client' 和 'server' 回到前面,你的问题将不会被理解。收到 FIN 的人应该关闭连接,从而发送他自己的 FIN。
    • 对不起。通过“连接启动”-我实际上是指“连接关闭启动”。但是,我得到了我的问题的答案。再次非常感谢。
    猜你喜欢
    • 1970-01-01
    • 2011-03-18
    • 2020-03-18
    • 1970-01-01
    • 1970-01-01
    • 2017-11-04
    • 1970-01-01
    • 2010-12-12
    • 2021-02-26
    相关资源
    最近更新 更多