三次重复确认

三次重复确认

我理解拥塞避免的过程,即尝试控制网络中的拥塞程度并避免数据包丢失。但是怎么可能有三个确认呢?即使其中一个在传输中丢失,并在超时后最终到达目的地,如果超时,数据包肯定会被丢弃,而不是继续前进并在拥塞期间重复 x 次。

答案1

重复 ACK 是重传/选择性确认系统的一部分。如果没有 SACK 支持,当数据包丢失且接收方通知发送方已收到已确认的序列号时,您将收到重复 ACK。对于收到的每个无序数据包,都会发送一个 ACK​​,这就是为什么您会看到重复 ACK,有时如果网络直径足够大且窗口大小足够大,您会看到很多重复 ACK。

答案2

首先我们必须意识到 ACK 并不是说​​我们已经看到了一个特定的序列号——它们实际上是说我们没有看到这个特定的序列号,但是我们已经看到了所有前面的序列号。

RFC 793

段还携带一个确认号,该号是反向传输的下一个预期数据八位字节的序列号。

如果符合其他条件,则 ACK 为重复 ACK(RFC 5681

确认号等于在给定连接上收到的最大确认

重复 ACK 表示接收方收到了某些内容,只是序列号不正确。在收到三个重复 ACK(通常为 3 个)后,发送方会重新传输该段。这称为快速重传,因此比您在问题中提到的基于超时的重传更快。

相关内容