三方握手有误差

问题描述 投票:0回答:1

我正在UDP的基础上研究一个面向连接的协议(只是为了学习)。比如TCP使用的三方握手很简单。

  1. 客户端发送SYN
  2. 服务器发送 SYN + ACK
  3. 客户端发送ACK

然而,这些包中的任何一个都可能丢失。TCP如何从初始化阶段的错误中恢复?如果第1步从未发生过怎么办?重新发送SYN就可以了,但是如果客户端永远收不到SYN+ACK怎么办,那么要么是SYN+ACK丢失了,要么是第一个SYN丢失了。如果最后一个ACK一直没有成功,服务器是不是过一段时间就应该认为一切正常了呢?这么多出错的可能性 :o

error-handling tcp handshake
1个回答
2
投票

相当简单:如果发送方没有收到ACK,就会再次发送同一个数据包。这将进行多次,一段时间后没有成功,发送方就会放弃,认为它坏了。对SYN的ACK、对数据的ACK或对FIN的ACK都是如此。

© www.soinside.com 2019 - 2024. All rights reserved.