【问题标题】:Three way handshake with errors三向握手错误
【发布时间】:2020-05-21 11:46:15
【问题描述】:

我正在开发一种基于 UDP 的面向连接的协议(仅用于学习)。例如 TCP 使用的三次握手很简单:

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

但是,这些包中的任何一个都可能丢失。 TCP 如何从初始化阶段的错误中恢复?如果步骤 1 永远不会发生,会发生什么?只需重新发送 SYN,但如果客户端从未收到 SYN + ACK,那么要么 SYN + ACK 丢失,要么第一个 SYN 丢失。如果最后一个 ACK​​ 没有成功,服务器是否应该在一段时间后假设一切正常?错误的可能性很多:o

【问题讨论】:

    标签: error-handling tcp handshake


    【解决方案1】:

    这很简单:如果发送方没有收到 ACK,它将再次发送相同的数据包。这将进行多次,并且在一段时间后没有成功,发件人将放弃并认为它已损坏。对 SYN 的 ACK、对数据的 ACK 或对 FIN 的 ACK 都是如此。

    【讨论】:

      猜你喜欢
      • 2017-07-08
      • 2014-04-06
      • 2012-04-04
      • 1970-01-01
      • 1970-01-01
      • 2017-01-16
      • 1970-01-01
      • 1970-01-01
      • 2016-03-21
      相关资源
      最近更新 更多