TCP 拥塞控制

拥塞控制是什么

拥塞控制是一个全局性的过程,用来防止过多的数据注入网络,保证网络不过载。

常见的拥塞控制算法

  1. 慢开始
  2. 拥塞避免
  3. 快重传
  4. 快恢复

两个窗口

  1. 接收窗口 rwnd:接收方目前接收缓存的大小,通过 TCP 报文的首部字段通知发送方
  2. 拥塞窗口 cwnd:发送方估算网络拥塞程度设置的窗口值。未拥塞,窗口值逐渐增大,拥塞逐渐减小
  3. 发送窗口 = min{rwnd,cwnd}
    特别的,当接收方有足够大的缓存时,发送窗口由拥塞窗口决定

慢开始与拥塞避免

慢开始算法

  1. 初始拥塞窗口为 1
  2. 每接收一个报文确认后,cwnd 翻倍
  3. cwnd 呈指数型增长,到达慢开始门限(ssthresh)后,改用拥塞避免算法

拥塞避免算法

  1. cwnd 每经过一个报文确认(往返时间)就增加 1,线性增长
  2. 当出现依次超时,令 ssthresh 为 cwnd 的一半,cwnd 重新置为 1

cwnd 不同时执行的算法

  1. cwnd < ssthresh :慢开始
  2. cwnd > ssthresh :拥塞控制

PS:不论是拥塞避免还是慢开始都不能避免拥塞的出现,但是能使网络比较不容易出现拥塞。

实例分析

在这里插入图片描述

  1. 初始时,cwnd 被设置为 1,并且开始慢开始算法(成倍增加)
  2. 当 cwnd 增长到慢开始门限 ssthresh (cwnd = 16)时,改用拥塞避免算法
  3. 由图可知,当 cwnd 到达 24 时,发生网络拥塞,ssthresh 变为 cwnd 的一半,也就是 ssthresh = 12,然后 cwnd 置为 1

PS:若在慢开始算法时,翻倍后的 cwnd > ssthresh ,cwnd 只能等于 ssthresh 而不能超过它

快重传算法

快重传和快恢复是对慢开始和拥塞控制的改进

快重传的工作原理
当发送方发送连续收到 3 个 ACK 报文后,不必等待,直接重传对方尚未收到的报文段

快恢复算法

  1. 当发送方收到了 3 个 ACK 报文,ssthresh 设置为 cwnd 的一半,然后 cwnd 置为当前 ssthresh 的值(而不是在拥塞控制算法中的 cwnd 置为 1)
  2. 接着采用拥塞避免的加法线性增大

在这里插入图片描述

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值