快重传和快恢复的过程?
参考
借用这篇博客的一张图,我觉得这张图画出了很多讲快重传和快恢复的文章中没有讲到的细节。
快重传
快重传的触发是有收到连续3个相同的ACK,就开始进行快重传阶段。
快重传所做的操作就是更新 cwnd 和 ssthresh 的值:
- cwnd = cwnd / 2
- ssthresh = cwnd
执行完这两个操作之后就开始进入快恢复阶段
快恢复
快恢复要做的操作如下:
- cwnd = ssthres + 3 * MSS
- 重传 duplicated ACKs 指定的数据包
- 如果再收到 duplicated ACKs ,cwnd = cwnd + 1
- 如果收到新的ACK,就令 cwnd = ssthresh ,然后就退出快恢复阶段,进入拥塞避免算法(TCP Reno)
为什么有些快恢复的算法拥塞窗口设置为 ssthresh + 3 MSS?
书上的意思是,