📅  最后修改于: 2023-12-03 15:10:07.280000             🧑  作者: Mango
在计算机网络中,当网络拥有的流量超过其处理能力时,就会发生拥塞。这时候,网络的吞吐量会大幅下降,导致数据传输变慢或者阻塞。
拥塞控制就是一组技术,它可以预防或者减缓网络拥塞发生的机会并且在拥塞发生的情况下,调整网络传输速率以保证数据传输的质量。
TCP 慢启动是一种拥塞控制算法,它在 TCP 连接开始时,缓慢地增加 TCP 的拥塞窗口。拥塞窗口是发送方可以发送的未确认字节数量。
慢启动通常在具有大量数据需要传输的情况下使用,以防止网络发生拥塞。慢启动算法的目的是在开始时以缓慢而稳健的速度发送数据,直到找到网络的容量,并在容量较低的情况下逐渐加速。
慢启动算法有两个重要的概念:
算法流程:
一开始,CWND 的大小为默认值,通常是两个最大分组大小(MSS)。
每当收到一个确认报文,CWND 的值就会增加一个MSS。因此建议MSS大小应与网络MTU相同。
随着CWND的增长,它将达到一个阈值,SSTHRESH。一旦超过SSTHRESH,算法就不再是慢启动算法。
进入拥塞避免阶段。这个阶段中CWND的增长速度减慢。具体地说,CWND的值每次增长是1个MSS,随后TCP通信将进入并始终保持一个叫做拥塞避免状态的阶段。
如果发生丢包,TCP就认为这是一个拥塞信号。这时就会先把SSTHRESH设为当前拥塞窗口的一半,然后把CWND的大小重置为初始值,重新进入慢启动阶段。
注:如果觉得无法理解,可以这样理解:TCP发送方刚开始发数据时,会以一个比较小的速度发,等到它确定网络可以容纳这个量的时候,发送方会加快发送速度,如果网络负荷过大以至于导致数据包丢失,TCP就会认为拥塞窗口过大,就会重新进行慢启动算法规定的步骤。