拥塞控制顾名思义,即用来尽可能的避免拥塞的发生 或者 发生拥塞后缓解拥塞的一种机制
一、何为拥塞?
通俗来说,就是在某一时刻,网络资源和需求发生了供不应求,从而使网络的性能变低的情况,就是拥塞的发生。
为了避免这种情况,引入了拥塞控制
,用来避免拥塞和当拥塞发生时调整网络情况的一种机制。
二、拥塞控制
拥塞控制是一个全局性的过程,通过慢开始、拥塞避免、快重传。快恢复四个算法来实现两点目标:1、尽可能的避免拥塞发生,同时保证网络的性能,增大拥塞窗口;2、发生拥塞后要立刻缓和网络情况,减小拥塞窗口,防止拥塞情况变的更糟糕。
贯穿四个算法全过程的一个重要的状态变量,就是窗口值cwnd,被称为拥塞窗口。会随着当前网络情况而动态的发生变化。
此外,还有一个较为关键的变量值,叫门限值ssthresh,具体用法参照下面四个过程
1.慢开始
注意:慢开始并不慢,反而是一个快速增长的过程
慢开始就是试探性的先把少量的字节注入到网络中,然后拥塞窗口cwnd以2倍的速度增加,当拥塞窗口大于等于门限值时(cwnd>=ssthresh),结束慢开始算法,则开始第二个算法——拥塞避免。
2.拥塞避免
拥塞避免比慢开始的增长速度要慢许多,在拥塞避免算法中,拥塞窗口每轮只增加1,但还是在缓慢的增长着;一旦出现超时重传,则将门限值降为当前拥塞窗口值的一半(ssthresh=cwnd/2),然后拥塞窗口也等于当前门限值。且结束拥塞避免算法,开始执行快恢复算法。
3.快重传
当发送方连续收到三个重复的确认数据包时,就应该立刻重传对方未收到的报文段。这就是快重传算法。
4.快恢复
快重传和快恢复是一起的,重传后,拥塞窗口值等于减半计算后的门限值,然后拥塞窗口执行拥塞避免算法逐渐线性增长,短时间内就恢复到较快的传输速率,并且有效的避免了拥塞。
这就是拥塞控制的过程,通过四个算法,有效的让网络传输效率和性能提高。
根据下图,可以更直观的理解拥塞控制的过程!