在TCP 3次握手中,将发送3个段(SYN,SYN ACK,ACK).如果第三段(ACK)丢失怎么办?发件人是要重新发送段还是放弃建立连接?那两个主机如何知道该段丢失了?
Len*_*bro 27
TCP在所有数据包中都有一个序列号.因此,很容易知道数据包是否丢失.如果主机没有在数据包上获得ACK,则只需重新发送.
但在大多数情况下,即使丢失了ACK,也不会因为一个非常简单的原因而重新发送.在ACK之后,打开TCP协议的主机可能开始发送数据.与所有TCP数据包一样,该数据将具有ACK编号,因此接收方将以这种方式获得ACK.因此,SYN-ACK的发送方应合理地不关心它没有得到ACK,因为它在下面的包中得到"隐式"ACK.
只有在根本没有接收到数据时才需要重新发送SYN-ACK.
更新:我发现RFC中的地方指定了这个:
如果我们的SYN已被确认(可能在此传入段中),则传入段的优先级必须与本地优先级完全匹配,如果不是,则必须发送重置.
换句话说,如果ACK被丢弃但下一个数据包没有丢弃,那么一切都很好.否则,必须重置连接.这很有道理.
| 归档时间: | 
 | 
| 查看次数: | 20921 次 | 
| 最近记录: |