我只是对 TCP 拥塞避免算法有一些疑问。
- 首先,我想解释一下,为什么拥塞避免算法的一部分被称为“快速恢复”?我的意思是,我找不到任何好的理由,似乎它并没有那么快的恢复速度。
- 我正在读Douglas E. Comer的《TCP/IP网络》,其中有一句话说,虽然TCP SACK和New Reno差不多,但SACK仍然是首选,但没有很好的合理解释为什么,所以如果你能帮我弄清楚的话,我将不胜感激。
答案1
快速恢复允许在出现丢失时将 TCP 窗口减少 2,而不是重新启动到其初始值。之所以称为快速恢复,是因为它避免了缓慢启动。(因此它“更快”)。
当出现大量丢失(来自同一 TCP 窗口的许多数据包)时,SACK 会更好,但 New Reno 旨在用于支持或不支持 SACK 的计算机。
关于拥塞避免,Wikipedia 和 RFC 是很好的参考资料,我不想复制/粘贴它们或者以不太清楚的方式重新表述它们。
您可以阅读:TCP 中的拥塞避免http://en.wikipedia.org/wiki/TCP_congestion_avoidance_algorithm 关于FastRecovery/NewReno:rfc3782和http://en.wikipedia.org/wiki/Slow-start#fast-recovery 关于 SACK:rfc2018和http://en.wikipedia.org/wiki/Retransmission_(data_networks)#SACK