拥塞控制
由于过多的数据注入到网络造成拥塞,会产生丢包的行为,此时,发送方会继续重传,使网络超负荷,拥塞程度更大,它是一个全局性的过程,涉及范围广,包含所有主机、路由器以及降低网络传输性能有关的所有因素。
解决措施:控制发送方的速度,目的是降低整个网络的拥塞程度。
因此,我们引入了拥塞控制的4个算法
拥塞控制四算法
首先我们要理解拥塞窗口与发送窗口的区别是什么?
- 拥塞窗口(cwnd)是一个状态变量
- 决定发送方发送多少数据的是发送方窗口
1、慢开始
顾名思义慢慢开始,为了避免网络阻塞,由小到大逐渐增大发送窗口(即拥塞窗口cwmd的值)。注:慢开始是从1开始,不是从0开始,也就是说令cwnd=1,只能发送一个报文段;当收到接收方确认后,将cwnd(拥塞窗口)加倍。(发送报文段数量:1,2,4,8,16...)
2、拥塞避免
由于发送方发送的报文段数量逐渐增多,使得网络拥塞可能性增大。设置一个门限值,当拥塞窗口值(cwnd)>=门限值时,进入拥塞避免,每轮只将cwnd+1,降低了发送方的发送速率。如果连续收到三个相同的ACK,即出现了超时,令当前拥塞窗口减半,并将其设置为新的门限值,然后执行快恢复。
3、快重传
发送方每次接收到报文段都应该对最后一个进行确认,发送方只要连续收到三个重复的确认应当立即重发未收到的报文段。一般采用SACK的快重传方式
4、快恢复
- 发送方收到连续三个重复的确认时,就将慢开始门限减半
- 将当前减半后的值作为新的慢开始的门限值,并让cwnd等于这个新的慢开始的门限值最后执行拥塞避免算法,使其“加法增大”(加1增长)
小结
快恢复配套快重传使用,快恢复是相对于慢开始而言的。
- 当出现重传时,会执行快恢复
- 快恢复算法是从较大值开始的,执行“加法增大”,使其在较短时间内恢复到比较快的传输速率。