该问题与滑动窗口协议及其如何处理重复的ACK有关。这是一个假想的问题,我不知道是否会出现这种情况。让我们考虑窗口大小为2,序列号空间为0-3。
1)发送方发送数据包0和1。
2)接收到数据包1的ACK,但是在可以接收到数据包0的ACK之前,数据包0发生超时,并且它重发。
3)然后,发送方收到数据包0的原始 ACK,并且窗口变为2和3。这些数据包被发送。
4)传输线包含重复的0、2和3。
5)接收到这些数据包,并为所有三个数据包发送ACK。
6)如果发件人在重复0的ACK之前已收到2的ACK,则根据协议,滑动窗口将滑动并发送不同数据包0 。
7)如果此时 duplicate 的ACK到达了发件人,它将错误地接受确认为 new 0。
最后一点是我很困惑。这会发生什么吗?有办法避免这种情况吗?