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