TCP拥塞控制

1.拥塞控制定义
计算机网络中的带宽、交换结点中的缓存和处理机等,都是网络的资源。在某段时间,若对网络中某一资源的需求超过了该资源所能提供的可用部分,网络的性能就会变坏。这种情况就叫做拥塞。

也就是说拥塞控制产生的原因是:资源的需求>可用资源

2.拥塞控制的目的
拥塞控制就是防止过多的数据包进入网络,这样可以使网络中的路由器或者链路不至于过载。拥塞控制的前提就是网络能够承受现有的网络负荷。

3.拥塞控制和流量控制的区别
流量控制: 这里主要说TCP滑动窗流量控制。TCP头部里有一个字段叫Window,又叫Advertised-Window,这个字段是接收端告诉发送端自己还有多少缓冲区可以接收数据。于是发送端就可以根据这个接收端的处理能力来发送数据,而不会导致接收端处理不过来。 滑动窗口可以是提高TCP传输效率的一种机制。

拥塞控制:滑动窗用来做流量控制。流量控制只关注发送端和接受端自身的状况,而没有考虑整个网络的通信情况。拥塞控制,则是基于整个网络来考虑的。拥塞控制的目的是防止过多的数据,注入到网络中,使得网络中的路由或者线路不至过载。

4
拥塞窗口:CWND(Congestion Window)
发送方维持一个叫做拥塞窗口的状态变量,拥塞窗口的大小取决于网络的拥塞程度且动态变化。发送方让自己的发送窗口等于拥塞窗口。如果考虑接收方的接收能力,发送窗口还可能小于拥塞窗口。

**发送方控制拥塞窗口的原则:**只要网络中没有出现拥塞,就增大拥塞窗口,以便能将更多的分组发送出去;只要网络中出现拥塞(接收方没有按时收到应当到达的确认报文),就减少拥塞窗口,以减少注入到网络中的分组数。

5.拥塞控制算法----慢开始算法

慢开始算法思路:
就是不要一开始就发送大量的数据,先探测一下网络的拥塞程度,也就是说由小到大逐渐增加发送窗口也相当于增大拥塞窗口,通常在刚开始发送报文段时,先把拥塞窗口的大小设置为最大报文段MSS(最大报文段长度选项MSS,MSS选项用于在TCP连接建立时,收发双发协商通信时每一个报文段所能承载的最大数据长度。)的字节数,当每收到一个对新的报文的确认后,就将拥塞窗口增加至多一个MSS的字节数,以逐渐增大发送端的拥塞窗口。
在这里插入图片描述 由上图可知:每经过一个传输伦次、次拥塞窗口就加倍,这就是乘法增长,和后面的拥塞避免算法的加法增长比较。

为了防止cwnd增长过大引起网络拥塞,还需设置一个慢开始门限ssthresh状态变量。ssthresh的用法如下:
当cwnd<ssthresh时,使用慢开始算法。
当cwnd>ssthresh时,改用拥塞避免算法。
当cwnd=ssthresh时,慢开始与拥塞避免算法任意。

无论是在慢开始阶段还是在拥塞避免阶段,只要发送方判断网络出现拥塞(其根据就是没有收到确认,虽然没有收到确认可能是其他原因的分组丢失,但是因为无法判定,所以都当做拥塞来处理),就把慢开始门限ssthresh设置为出现拥塞时的发送窗口大小的一半。然后把拥塞窗口设置为1,执行慢开始算法。

6拥塞控制算法----拥塞避免算法

拥塞避免算法思路
让拥塞窗口缓慢的增加,每经过一个传输轮次,就把发送方的拥塞窗口加一而不是加倍。所以拥塞窗口是按线性增长的,比慢开始的增长速率要缓慢。

为了防止拥塞窗口增长过快,导致网络拥塞,还需设置慢开始门限值ssthresh状态变量。
当CWND < ssthresh 使用慢开始算法
当CWND == ssthresh 使用慢开始算法或者拥塞避免算法都行
当CWND > ssthresh 使用拥塞避免算法

无论使用哪种算法,只要检测出网络拥塞,就把ssthresh设置为出现网络拥塞时拥塞窗口值的一半,然后把拥塞窗口设置为1,实行慢开始算法。拥塞避免不能完全避免拥塞,只是在拥塞避免阶段将拥塞窗口控制为线性增长,使网络不容易出现拥塞。

7.总结
慢开始和拥塞避免算法是结合使用的,称之为AIMD算法。
AIMD(加法增大乘法减小)
a.乘法减小:无论在慢开始阶段还是在拥塞控制阶段,只要网络出现超时,就是将cwnd置为1,sthresh置为cwnd的一半,然后开始执行慢开始算法
b.加法增大:当网络频发出现超时情况时,ssthresh就下降的很快,为了减少注入到网络当中的分组数,而加法增大是执行拥塞避免算法后,是拥塞窗口缓慢的增大,以防止网络过早出现拥塞。

慢开始算法和拥塞避免算法结合使用举例使用如下:

在这里插入图片描述
8.快重传
快重传要求接收方每收到一个失序报文就发出重复确认而不是等待自己发送数据时才捎带确认。发送方只要一连收到三个重复确认就立即重传对方尚未收到的报文段,而不必等待设置的重传计时器到期 。
在这里插入图片描述

9.快恢复
i.当发送方连续收到三个重复确认时,执行“乘法减小”算法,慢启动门限减半,为了预防网络发生阻塞
ii.由于发送方现在认为网络很可能没有发生阻塞,因此现在不执行慢启动算法,而是把cwnd值设置为慢启动门限减半后的值,然后开始执行拥塞避免算法,拥塞窗口cwnd值线性增大。
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值