📜  拥塞控制的慢启动重启算法(1)

📅  最后修改于: 2023-12-03 15:10:07.280000             🧑  作者: Mango

拥塞控制的慢启动重启算法介绍

什么是拥塞控制?

在计算机网络中,当网络拥有的流量超过其处理能力时,就会发生拥塞。这时候,网络的吞吐量会大幅下降,导致数据传输变慢或者阻塞。

拥塞控制就是一组技术,它可以预防或者减缓网络拥塞发生的机会并且在拥塞发生的情况下,调整网络传输速率以保证数据传输的质量。

慢启动重启算法

TCP 慢启动是一种拥塞控制算法,它在 TCP 连接开始时,缓慢地增加 TCP 的拥塞窗口。拥塞窗口是发送方可以发送的未确认字节数量。

慢启动通常在具有大量数据需要传输的情况下使用,以防止网络发生拥塞。慢启动算法的目的是在开始时以缓慢而稳健的速度发送数据,直到找到网络的容量,并在容量较低的情况下逐渐加速。

慢启动算法有两个重要的概念:

  1. 拥塞窗口(CWND):已经发送但未被确认的数据包总共可以占用的最大空间。
  2. 拥塞阈值(SSTHRESH):当CWND达到了SSTHRESH时,就会触发拥塞避免机制。

算法流程:

  1. 一开始,CWND 的大小为默认值,通常是两个最大分组大小(MSS)。

  2. 每当收到一个确认报文,CWND 的值就会增加一个MSS。因此建议MSS大小应与网络MTU相同。

  3. 随着CWND的增长,它将达到一个阈值,SSTHRESH。一旦超过SSTHRESH,算法就不再是慢启动算法。

  4. 进入拥塞避免阶段。这个阶段中CWND的增长速度减慢。具体地说,CWND的值每次增长是1个MSS,随后TCP通信将进入并始终保持一个叫做拥塞避免状态的阶段。

  5. 如果发生丢包,TCP就认为这是一个拥塞信号。这时就会先把SSTHRESH设为当前拥塞窗口的一半,然后把CWND的大小重置为初始值,重新进入慢启动阶段。

注:如果觉得无法理解,可以这样理解:TCP发送方刚开始发数据时,会以一个比较小的速度发,等到它确定网络可以容纳这个量的时候,发送方会加快发送速度,如果网络负荷过大以至于导致数据包丢失,TCP就会认为拥塞窗口过大,就会重新进行慢启动算法规定的步骤。

参考资料