在回答伟大的计算机网络导论(Stanford Lagunita)的测验 4-3 时,我发现自己无法解释其中一个问题的答案:
考虑由传输协议以 1 kB 数据包传输的长流,该传输协议(仅)使用 AIMD 来控制窗口大小。最初,窗口大小为 10 kB。每次窗口打开到 20 kB 时,窗口中的最后一个数据包都会被丢弃,恰好在一个往返时间后检测到并重新传输。
Q1:有多少数据包被发送到(包括第一个被丢弃的数据包)?
Q2:总共发送了多少个数据包,包括被丢弃的第二个数据包?提示:第二轮将相同。不要忘记重传的数据包。
答案:
Q1:可以立即发送10个数据包。当 10 个被确认时,将发送 11 个数据包,然后是 12 个,然后是 13 个,……。直到发送了 20 个数据包,其中一个被丢弃。即 Sum (10 to 20) = 100 + 10 + sum (1..10) = 165 个数据包。
Q2:丢包后窗口再次减半为10kB,重新开始,发送相同数量的数据包加上重传的数据包。即 165 + 165 = 330 个数据包。(注意:之前提到的答案是 331,这是不正确的。)
虽然 Q1 的答案对我来说似乎完全合乎逻辑,但 Q2 的情况并非如此。我的猜测是 331,因为前 165 个数据包发送,然后重传,然后是下一批 165 个数据包。
331在哪方面是错的?重传是否集成到下一批数据包中?
