TCP 发送方和接收方窗口问题

TCP 发送方和接收方窗口问题

我只想澄清一些事情。假设接收方通告一个 2000 字节的窗口。发送方发送 1500 字节,并从窗口大小为 100 的接收方收到确认。确认未确认发送的 1500 字节。发送方会做什么?它会停止等待,直到其未确认字节数小于接收方窗口吗?

答案1

只要两端都健壮,那就没什么大不了的。健壮的 TCP 实现永远不会缩小窗口。健壮的 TCP 实现将忽略或接受其窗口外的数据。健壮的 TCP 实现将定期传输至少一个零窗口外的字节数据。您必须破坏所有这三个条件,才会发生任何不好的事情。

提供的机制允许 TCP 通告一个大窗口,然后在未接受那么多数据的情况下通告一个小得多的窗口。强烈反对这种所谓的“缩小窗口”行为。稳健性原则规定 TCP 不会自行缩小窗口,但会为其他 TCP 的此类行为做好准备。

即使发送窗口为零,发送 TCP 也必须准备好接受来自用户的数据并发送至少一个八位字节的新数据。即使窗口为零,发送 TCP 也必须定期向接收 TCP 重新传输。当窗口为零时,建议重新传输间隔为两分钟。此重新传输对于保证当任一 TCP 具有零窗口时,窗口的重新打开将可靠地报告给另一方至关重要。--RFC793

因此,你的问题的答案是“可能,但这并不重要”。

相关内容