拥塞控制
互联网中传输带宽是有最大限制的,如果超过这个限制就会导致拥塞,数据也就被阻塞住。
拥塞控制就是所有主机共同遵守一套规则,来维护互联网的数据传输顺畅。
-
拥塞控制
1、防止过多的数据注入到网络中
2、避免网络中的路由器或链路过载 -
拥塞控制是一个全局性的过程
1、涉及到所有的主机、路由器
2、以及与降低网络传输性能有关的所有因素
3、是大家共同努力的结果 -
相比而言,流量控制是点对点通信的控制
![](https://img.haomeiwen.com/i2541004/0d43f9c0d7566b37.png)
方法
-
慢开始(slow start,慢启动)
-
拥塞避免(congestion avoidance)
-
快速重传(fast retransmit)
-
快速恢复 (fast recovery)
-
几个缩写
- MSS (Maximum Segment Size) :每个段最大的数据部分大小
在建立连接时确定 - cwnd (congestion window) :拥塞窗口
- rwnd (receive window) :接收窗口
- swnd (send window) :发送窗口
swnd = min(cwnd, rwnd)
- MSS (Maximum Segment Size) :每个段最大的数据部分大小
慢开始
![](https://img.haomeiwen.com/i2541004/acb3be4e7b1e5373.png)
![](https://img.haomeiwen.com/i2541004/c7e4a5e38c4dbd7d.png)
cwnd的初始值比较小,然后随着数据包被接收方确认(收到一个ACK)后cwnd就成倍增长(指数级)
拥塞避免
![](https://img.haomeiwen.com/i2541004/388e173062b42517.png)
-
ssthresh (slow start threshold) :慢开始阈值,cwnd达到这个阈值后,以线性方式增加
-
拥塞避免(加法增大) :拥塞窗口缓慢增大,以防止网络过早出现拥塞
-
乘法减小:只要网络出现拥塞,把ssthresh减为拥塞峰值的一半,同时执行慢开始算法(cwnd又恢复到初始值)
当网络出现频繁拥塞时,ssthresh值就下降的很快
快重传
-
接收方
1.每收到一个失序的分组后就立即发出重复确认
2.使发送方及时知道有分组没有到达
3.而不要等待自己发送数据时才进行确认 -
发送方
1.只要连续收到三个重复确认(总共4个相同的确认), 就应当立即重传对方尚未收到的报文段
2.而不必继续等待重传计时器到期后再重传
![](https://img.haomeiwen.com/i2541004/9eaa8a5cb37c1370.png)
快恢复
-
当发送方连续收到三个重复确认,说明网络出现拥塞
就执行"乘法减小”算法,把ssthresh减为拥塞峰值的一半 -
与慢开始不同之处是现在不执行慢开始算法,即cwnd现在不恢复到初始值
1.而是把cwnd值设置为新的ssthresh值(减小后的值)
2.然后开始执行拥塞避免算法(“加法增大” ),使拥塞窗口缓慢地线性增大
快重传+快恢复
![](https://img.haomeiwen.com/i2541004/c8516ce6a0de8e56.png)
发送窗口的最大值
- 发送窗口的最大值: swnd = min(cwnd, rwnd)
- 当rwnd < cwnd时,是接收方的接收能力限制发送窗口的最大值
- 当cwnd < rwnd时,则是网络的拥塞限制发送窗口的最大值
网友评论