TCP拥塞控制


TCP拥塞控制定义:在某段时间,若对网络中某一资源的需求超过了该资源所能提供的可用部分,网络的性能就会变坏,这种情况就叫做拥塞(Congestion)。拥塞控制是为了防止过多的数据注入到网络,使网络中的路由器或链路不致过载。

拥塞控制的最终受控变量发送端向网络中一次连续写入的(收到第一个数据的确认之前)数据量,我们称之为SWDN(send window)发送窗口。发送方最终以tcp报文段来发送数据,所以SWDN限定了发送端能连续发送的TCP报文段数量。


拥塞控制于流量控制的关系
拥塞控制的前提网络能够承受现有的网络负荷,其是一个全局性的过程,涉及到所有的主机、路由器、以及降低网络传输性能有关的所有重点内容。

流量控制是针对点对点通信量、端对端的控制,其所要做的就是抑制发送端发送数据的速率,保证接收端来得及接收。

实际网络中的拥塞情况:

这里写图片描述

提供的负载:表示单位时间内输入给网络的分组数目。
吞吐量:单位时间内从网络输出的分组数目。

实际情况中,随着提供的负载的增大,网络吞吐 量增大的速率逐渐减小。在网络吞吐量还没有饱和时,就有一部分分组被丢弃了。当网络的吞吐量远小于理想的吞吐量时,网络就进入轻度拥塞状态。当提供的负载达到某一数值时,网络的吞吐量开始下降,这就是网络进入拥塞状态。当提供的负载继续增大到某一值的时候,网络吞吐量减小到0。此时进入死锁状态。


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

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

一、慢开始
由小到大逐渐增大发送窗口,也相当于增大拥塞窗口。通常在刚开始发送报文段时,先把拥塞窗口的大小设置为最大报文段MSS的字节数,当每收到一个对新的报文的确认后,就将拥塞窗口增加至多一个MSS的字节数,以逐渐增大发送端的拥塞窗口。
这里写图片描述

使用满开始算法,每经过一个传输轮次,拥塞窗口就加倍。
传输轮次:将拥塞窗口所允许的报文段都连续发送出去,并收到对最后一个字节的确认。

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

为了防止拥塞窗口增长过快,导致网络拥塞,还需设置慢开始门限值ssthresh状态变量。


当CWND < ssthresh 使用慢开始算法

当CWND == ssthresh 使用慢开始算法或者拥塞避免算法都行

当CWND > ssthresh 使用拥塞避免算法

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

总结:
慢开始和拥塞控制是结合使用的,称之为AIMD算法。

——————————————————————————————————–

三、快重传
接收方每收到一个失序报文段后,就立即发送重复确认而不是等待自己发送数据时捎带确认。

发送方只要一连收到3个重复确认报文,就立即重传对方尚未收到的报文段,而不必等待设置的重传计时器。
这里写图片描述

有的快重传实现把开始的拥塞控制窗口设置为ssthresh+3*MMS的字节数值,原因是认为收到三个重复报文后,表明网络中已经有三个网络分组离开了,证明网络中现在没有堆积分组,因此适当增加拥塞控制窗口。


四、快恢复
当发送方接收到三个重复确认报文,就执行乘法减小算法,把慢开始门限值ssthresh减半,为了防止网络拥塞。
将拥塞控制窗口设置为减半后的ssthresh的值。
这里写图片描述


总结:采用快恢复和慢开始只是在TCP建立连接以及出现超时时使用。

接收方根据自己的接收能力设置了接收窗口rwnd的值,将此值写入TCP的首部传给发送方。所以,发送方的发送窗口一定是小于接收方的接受窗口的rwnd,并且一定小于发送端的CWND拥塞控制窗口。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值