gpt4 book ai didi

tcp - 如果 TCP 握手段丢失了怎么办?

转载 作者:可可西里 更新时间:2023-11-01 02:29:33 25 4
gpt4 key购买 nike

在 TCP 3 次握手中,将发送 3 个段(SYN、SYN ACK、ACK)。如果第三段(ACK)丢失了怎么办?发送方是要重新发送报文段还是放弃建立连接?两台主机如何知道段丢失?

最佳答案

TCP 在所有数据包中都有一个序列号。因此很容易知道数据包是否丢失。如果主机没有收到数据包的 ACK,他就会重新发送它。

但在大多数情况下,即使 ACK 丢失,也不会因为一个非常简单的原因而重新发送。紧接着ACK,开启TCP协议(protocol)的主机很可能开始发送数据。与所有 TCP 数据包一样,该数据将具有一个 ACK​​ 编号,因此接收方将以这种方式获得 ACK。因此,SYN-ACK 的发送者不应该关心它没有得到 ACK,因为它在下面的包中得到了一个“隐含的”ACK。

只有在根本没有收到数据的情况下才需要重新发送 SYN-ACK。

更新:我在 RFC 中找到了准确指定的地方:

If our SYN has been acknowledged (perhaps in this incoming segment) the precedence level of the incoming segment must match the local precedence level exactly, if it does not a reset must be sent.

换句话说,如果 ACK 被丢弃但下一个数据包没有被丢弃,那么一切都很好。否则,必须重置连接。这非常有道理。

关于tcp - 如果 TCP 握手段丢失了怎么办?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16259774/

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