ACK 机制

由于通信过程的不可靠性,传输的数据不可避免的会出现丢失、延迟、错误、重复等各种状况,TCP 协议为解决这些问题设计了一系列机制。这个机制的核心,就是发送方向接收方发送数据后,接收方要向发送方发送 ACK(回执)。如果发送方没接收到正确的 ACK,就会重新发送数据直到接收到 ACK 为止。比如:发送方发送的数据序号是 seq,那么接收方会发送 seq + 1 作为 ACK,这样发送方就知道接下来要发送序号为 seq + 1 的数据给接收方了。

  • 数据丢失或延迟。发送方发送数据 seq 时会起一个定时器,如果在指定时间内没有接收到 ACK seq + 1,就把数据 seq 再发一次。
  • 数据乱序。接收方上一个收到的正确数据是 seq + 4,它返回 seq + 5 作为 ACK。这时候它收到了 seq + 7,因为顺序错了,所以接收方会再次返回 seq + 5 给发送方。
  • 数据错误。每一个 TCP 数据都会带着数据的校验和。接收方收到数据 seq + 3 以后会先对校验和进行验证。如果结果不对,则发送 ACK seq + 3,让发送方重新发送数据。
  • 数据重复。接收方直接丢弃重复的数据即可。

ACK 机制
https://blog.josway.cc/2022/04/25/yuque/ACK 机制/
作者
JOSWAY
发布于
2022年4月25日
许可协议