TCP的拥塞控制

目录

TCP的拥塞控制

拥塞控制的一般原理

几种拥塞控制方法

随机早期检测RED


TCP的拥塞控制

拥塞控制的一般原理

什么是拥塞:在某段时间,若对网络中某一资源的需求超过了该资源所能提供的可用部分,网络的性能就要变坏,叫做拥塞。

拥塞控制:就是防止过多的数据注入到网络中,这样可以使网络中的路由器和链路不致过载,是个全局性过程。

流量控制:指点对点通信量的控制,是个端到端的问题。流量控制控制所要做的就是抑制发送端发送数据的速率,以便接收端来得及接收。

拥塞控制和流量控制:之所以两者常常被弄混,是因为某些拥塞控制算法是向发送端发送报文,并告诉发送端,网络以及经出现麻烦,必须放慢发送速率,这点有何流量控制很相似。

 

拥塞控制所起的作用

 

死锁:当提供的负载增大到某一数值是,网络的吞吐量就会下降到零,网络无法正常工作。这就是所谓的死锁。 

从大方面可以分为开环控制闭环控制 

开环控制:在设计网络之时事先将有关发生拥塞的因素考虑到,力求网络在工作时不产生拥塞。一旦系统运行,就不能中途改正。

闭环控制:是基于返回环路的概念,使用拥塞的信息来进行调整网络


几种拥塞控制方法

四种拥塞控制算法:慢开始、拥塞避免、快重传、快恢复

1、慢开始和拥塞避免

拥塞窗口:发送方维持一个叫做拥塞窗口cwnd的状态变量,窗口大小取决于拥塞大小。

发送方控制拥塞窗口的原则是:没有拥塞,窗口增大。出现拥塞窗口减小,以减少注入到网络中的分组数。

如何知道发生拥塞:当发送方没有按时收到确认报文,那么就知道网络发生了拥堵。

慢开始算法:

慢开始的“慢”指的是,由小到大逐渐增大拥塞窗口而不是一次性的注入,初始cwnd=1(这里表示的是报文段的个数,而不是真正传输时使用的字节流)

算法原理

1、开始时发设置送方cwnd=1,发送第一段报文段M1,如果发送方收到确认M1,那么此时增大cwnd=2,并发送M2,M3

2、发送方每收到一个确认报文段,cwnd+1(缺失重传的确认不包括在内)

3、也就是说,每经过一个传输伦次(RTT时间),拥塞窗口cwnd都会加倍。

但是,为了防止拥塞窗口cwnd增长过大而引起网络拥塞,设置一个慢开始门限ssthresh

1.当cwnd<ssthresh,使用上述的慢开始算法

2.当cwnd>ssthresh,停止使用慢开始,使用拥塞避免算法

3.当cwnd==ssthresh,两者都可以使用

拥塞避免算法:

拥塞避免算法的思路是让拥塞窗口cwnd缓慢地增大,即每经过一个往返时间RTT就把发送方的拥塞窗口cwnd+1,而不是加倍。拥塞窗口cwnd就按线性缓慢增大。

那么当发现拥塞了cwnd又该怎样去调整呢
当TCP初始化时,我们假设cwnd=1、ssthresh为16。当网络发生拥塞时(TCP认为网络拥塞的主要依据是它重传了一个报文段。因为TCP对每一个报文段都有一个定时器,称为重传定时器(RTO),当RTO超时且还没有得到数据确认,那么TCP就会对该报文段进行重传)会有以下操作:
1、把ssthresh降低为cwnd值的一半12(乘法减小 \frac{1}{2} )。
2、把cwnd重新设置为1。
3、重新进入慢启动过程(加法增长)。

乘法减小:是指不论在慢开始阶段还是拥塞避免阶段,只要出现超时,就把ssthresh减半。也就是说,我们更新cwnd=1 、ssthresh=12,之后再重新执行之前的两个算法。

加法增大:指的是执行拥塞避免算法之后,cwnd线性的进行增长,防止网络过早出现拥塞。

 

2、快重传和快恢复

快重传:当接收方收到了一个失序的报文段后就立即发出重复确认,而不要等待自己发送数据时才捎带确认。假设M3没有收到,紧接着M4,M5,M6又发送了(由于没有按照顺序的M3那么M4就是失序报文段),接收方需要重复发送对M2的确认(让对方知道M3还没来)此时接收方一共连续给发送方反馈了4个M2的确认报文。其中三个是重复确认保温,那么快重传规定,发送方只要连续收到3个重复确认,立即重传对方尚未收到的M3,不必等待重传计时器。

快恢复:就是收到3个相同的ACK,此时进行快速重传,快速重传做的事情有:

1、把ssthresh设置为cwnd的一半
2、把cwnd再设置为ssthresh的值(具体实现有些为ssthresh+3)
3、重新进入拥塞避免阶段。

随机早期检测RED

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值