什么是拥塞控制?
当过多的数据传输到网络中时,就会发生拥塞,而拥塞控制就是为防止过多数据传输到网络中,使网络中的路由器或链路过载。
拥塞控制有四个算法:慢开始、拥塞避免、快重传、快恢复;
它维护了一个状态变量:拥塞窗口(cwnd)
慢开始
刚开始发送数据时,执行慢开始算法,令拥塞窗口(cwnd)=1,发送方只能发送一个报文,当接收到接收方的确认后,然后cwnd进行2倍增长,例:1->2->4->8;
拥塞避免
因为执行慢开始cwnd增长的很快,因此会设置一个门限值(ssthresh),当cwnd >= ssthresh时,就会执行拥塞避免,cwnd会进行线性增长,每次只会加1;
快重传
当发送方收到接收方连续三次相同的确认时,则立即执行快重传;
快恢复
当执行完快重传后,门限值变为cwnd的一半,并且cwnd减半,此时cwnd=ssthresh,直接执行拥塞避免算法,每次cwnd加1;
总结:
当发送方刚开始发送数据,执行慢开始算法,令拥塞窗口(cwnd)=1,发送方只能发送一个报文,当接收到接收方的确认后,然后cwnd进行2倍增长;当cwnd >= ssthresh时,就会执行拥塞避免,cwnd会进行线性增长,每次只会加1; 当发送方收到接收方连续三次相同的确认时,则立即执行快重传;当执行完快重传后,门限值变为cwnd的一半,并且cwnd减半,此时cwnd=ssthresh,直接执行拥塞避免算法,每次cwnd加1;