探测段的 1 字节传输是否基于超时操作?

网络工程 tcp 第 4 层 传输协议
2022-02-04 21:05:08

在此处输入图像描述

我想知道如果接收方的接收缓冲区已满,ACK 号是多少。例如,考虑发送方发送一个 SEQ 为 800,大小为 100 字节的段的情况。由于接收缓冲区已满,接收方发送一个 ACK​​ 900 段,其中包含 rwnd = 0。然后,接收方将继续发送 1 字节探测段,其 1 字节数据是窗口中原始数据的一部分。那么接收器如何响应这些探测段呢?

我猜至少 ACK 将是 900,而不是 901,因为它的缓冲区已满,因此接收器无法存储该段。但是如果 ACK 是 900,就会发生超时,因为发送方的计时器会一直计时,直到 ACK 901 到达。发送方是否根据该超时重新传输探测段?还是有其他我不知道的机制?

1个回答

正如 rfc 1122 所说(ch 4.2.2.17),探测将为探测使用重传计时器。该计时器将在每个连续探测之间呈指数增长(退避算法)。

当窗口为零时,探针中的字节在窗口外。它不是以前发送的数据(查看序列号)。

发送窗口更新时,如果接收器响应窗口探测,则接收器可以确认 1 字节探测。