间隙形成中的 TCP 接收器行为

TCP Receiver Behaviour in Gap Formation

我知道 TCP 接收方会在发送 ACK 之前等待 500 毫秒以等待另一个有序数据包。当检测到间隙时,TCP 接收方也会立即发送 DUPLICATE ACK。但是,我不太确定下一个场景中的接收者行为:

假设发送方发送大小为1000字节的数据包。发送序列号为 2000、3000、4000 的数据包。

在去往接收方的途中,seqNum 为 3000 的数据包丢失了。其余两个数据包在 500ms 间隔内收到。

Receiver,当收到seqNum 2000 的数据包时,会推迟等待seqNum 3000 的数据包,但它接收到seqNum 4000 的数据包。

我的问题是,接收方将发射多少个 seqNum 3000 的 ACK 数据包?是 1 还是 2?

如果您的系统支持选择性 ACK(很可能支持),那么您将看到一个 ACK​​ return,其中包含较低的确认编号(最后一次看到),但选择性 ACK 选项集列出了后来的片段也被看到了。这将允许发件人仅重新发送丢失的部分,而不是 3000 及以上的所有内容。