gpt4 book ai didi

tcp - 意外的 TCP RST 数据包

转载 作者:行者123 更新时间:2023-12-03 22:04:43 29 4
gpt4 key购买 nike

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

  • 客户端(117.136.2.181)成功建立与服务器(192.168.40.16)的连接
  • 客户端向服务器发送一些数据,以及 KEEP_ALIVE 信号。
  • 服务器接收数据,处理它并将结果发送回客户端。
  • 服务器关闭套接字。
  • 服务器没有收到来自客户端的 ACK 信号,所以它重新发送结果数据以及 FIN 信号,这是由 TCP 协议(protocol)自动完成的。但是,服务器仍然没有收到来自客户端的 ACK 信号。
  • 服务器向客户端发送 RST 信号,因此连接关闭。

  • TCP data packet

    经过一些分析,我们认为在第3步之后发生了一些网络问题,所以从服务器发送的所有结果数据和FIN信号都没有被客户端确认,但是我们对服务器发送的RST信号感到很困惑。根据我们的理解,如果一个半关闭的套接字接收到一些数据,或者关闭一个套接字时接收队列中有数据,就会发送一个RST信号。但这两者似乎都不是我们案件的根本原因。

    有人可以帮助详细说明为什么会这样吗?

    最佳答案

    RST通常发生在 close在没有 shutdown 的套接字上调用, 或在 shutdown 之后而对方仍在尝试发送数据(仍未回复 FIN )。
    一些编程语言有 socket.close(timeout)对于 example .NET , 调用 shutdown然后 closetimeout 之后已通过。
    所以客户最多有timeout完成发送和关闭与 FIN 的连接,如果不这样做,连接将被RST强制关闭.
    https://stackoverflow.com/a/23483487/1438522关于 close 之间的区别的更全面的解释和 shutdown .

    关于tcp - 意外的 TCP RST 数据包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12586804/

    29 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com