TCP/IP拥塞控制

目的

拥塞控制就是防止过多的数据注入网络中,这样可以使网络中的路由器或链路不致过载。

方法

1. 慢开始与拥塞避免

       发送端主机在确认发送报文段的速率时,既要根据接收端的接收能力,又要从全局考虑不要使网络发生拥塞。因此,每一个tcp连接需要有以下两个状态变量:a、接收端窗口。b、拥塞窗口。接收端窗口:是接收端根据其目前的接收缓存大小所许诺的最新窗口值,是来自接收端的流量控制。接收端将此窗口值放在TCP报文的首部中的窗口字段,传给发送端。拥塞窗口:是发送端根据自己估计的网络拥塞程度而设置的窗口值,是来自发送端的流量控制。发送端的发送窗口的上限值取自接收端窗口和拥塞窗口两者中较小的一个。

慢开始:慢开始的思路是开始先探测网络的拥塞程度,由小到大逐渐增加拥塞窗口的大小。示意图如下:

      

 

  发送端收到ack后将窗口增加一倍(1,2,4,8......),为了避免cwnd过大,引起网络拥塞,设置个ssthresh值,ssthresh值作用如下: 1. 当cwnd<ssthresh时,使用慢开始算法。2. 当cwnd>ssthresh时,改用拥塞避免算法。3. 当cwnd==ssthresh时使用任意一种都行。

       拥塞避免:拥塞避免算法让拥塞窗口缓慢增长,即每经过一个往返时间RTT就把发送方的拥塞窗口cwnd加1,而不是加倍。这样拥塞窗口按线性规律缓慢增长。

      无论是慢开始还是拥塞避免,只要检测到网络拥塞,就把慢开始门限设置为出现拥塞时的发送窗口大小的一半。然后把拥塞窗口设置为1,执行慢开始算法。如下图:

2. 快重传和快恢复

       快重传要求接收端收到数据后立刻给出确认,而不是等待着发数据时附带确认,这样能使发送端及时了解哪些数据发送ok,快重传算法规定,如果发送方一连收到 3 个重复的确认,就应当立即传送对方未收到的报文,而不必等待重传计时器到期。

       快重传算法与开恢复配合使用:<1>. 当发送方连续收到三个重复确认,就执行“乘法减小”算法,把慢开始门限ssthresh减半。这是为了预防网络发生拥塞。<2>. 由于发送方现在认为网络很可能没有发生拥塞,因此与慢开始不同之处是现在不执行慢开始算法(即拥塞窗口cwnd现在不设置为1),而是把cwnd值设置为慢开始门限ssthresh减半后的数值,然后开始执行拥塞避免算法(“加法增大”),使拥塞窗口缓慢地线性增大。如下图:

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值