TCP 拥塞控制算法详解:慢开始、拥塞避免、快速重传、快速恢复
-
慢开始:在 TCP 建立连接或者发生拥塞后,发送方从一个报文段开始,每收到一个 ACK 确认报文就将发送窗口的大小加倍,直到达到一个阈值(慢开始门限),再采用拥塞避免算法。
-
拥塞避免:在达到慢开始门限之后,发送方采用拥塞避免算法,每经过一个往返时间 RTT 就将发送窗口的大小加 1,直到达到一个阈值(拥塞窗口大小),然后维持该值不变。
-
快速重传:当发送方连续收到 3 个重复的 ACK 确认报文时,就认为接收方已经收到了连续的报文段,而且第一个没有确认的报文段之后的所有报文段都已经丢失,于是发送方立即重传第一个没有确认的报文段。
-
快速恢复:当发送方进行快速重传后,将状态从拥塞避免变为快速恢复,将慢开始门限设置为当前拥塞窗口大小的一半,将拥塞窗口大小设置为慢开始门限加上收到的重复 ACK 确认报文数量,然后继续发送报文段。
加性增和乘性减是 TCP 拥塞控制的两种调整拥塞窗口大小的方式。加性增指的是在拥塞避免阶段,每经过一个往返时间 RTT 将拥塞窗口大小加 1;乘性减指的是当发生拥塞时,将慢开始门限和拥塞窗口大小都设置为当前值的一半。加性增和乘性减的选择取决于网络的拥塞程度和带宽的使用情况。在网络拥塞程度较轻、带宽利用率低时,采用加性增可以快速增加发送窗口大小;而在网络拥塞程度较重、带宽利用率高时,采用乘性减可以更好地控制网络拥塞,避免进一步恶化。
原文地址: https://www.cveoy.top/t/topic/mNdZ 著作权归作者所有。请勿转载和采集!