我一直在阅读“计算机网络:自上而下的方法”一书,并遇到了一个我似乎无法理解的问题。
正如我所读到的,TCP拥塞控制有三种状态:慢启动,拥塞避免和快速恢复。我很了解慢启动和拥塞避免,但快速恢复非常模糊。该书声称TCP的行为方式如下:(cwnd =拥塞窗口)
让我们看看下图:
正如我们所看到的,在第16轮,发送方发送了42个段,并且因为拥塞窗口大小减半(+3),我们可以推断出有3个重复ACK。这个问题的答案声称16到22之间的轮次处于拥塞避免状态。但为什么不 快速恢复 ?我的意思是,在三次重复的ACK之后,TCP进入快速恢复并且每隔一次重复的ACK都应该增加拥塞窗口。为什么图表没有表示?我能想到的唯一合理的解释是,在这个图中,只有三个重复的ACK,并且之后收到的ACK不是重复的。
即使是这样,也是如此如果有超过3个重复的ACK,那么图表会是什么样子? **
**很长一段时间以来,我一直在努力回答这个问题。我会很高兴回复,谢谢!
更新这是图片。我认为轮次定义为窗口中的所有段都被确认。在照片中,圆圈显示为圆圈。
为什么cwnd在快速恢复状态下呈指数级增长? (在图像中我不小心写了,而不是指数地写)
答案 0 :(得分:1)
在TCP Reno
(涉及Fast Recovery
的TCP版本)中,cwnd
(拥塞窗口)图应如下所示:
Slow Start
和Congestion Avoidance
之间只有一个RTT时间为Fast Recovery
。
如果像“计算机网络:自上而下的方法”一书中的图一样,只需在 T16 中使用一条直线来表示Fast Recovery
进程,然后在中使用cwnd
> T17 应该是 21 MSS而不是(21 + 3) MSS,因为当它从Fast Recovery
过渡到Congestion Avoidance
时, cwnd
将降至ssthresh
的值。因此书中的图形是错误的。而且, @FilipeGonçalves的答案也是错误的。
从发送者和接收者的时间线跟踪的角度来看,还有另一幅图,它也可以帮助您理解Fast Recovery
过程。
参考:
1。http://www.ijcse.com/docs/INDJCSE17-08-03-113.pdf 2。https://www.isi.edu/nsnam/DIRECTED_RESEARCH/DR_WANIDA/DR/JavisInActionFastRecoveryFrame.html