TCP协议--拥塞控制(三)

TCP–拥塞控制
  • 拥塞控制: 就是防止过多的数据注入到网络中,这样可以使网络中的路由器或链路不至于过载

  • 在某段时间,若对网络中某一资源的需求超过了该资源所能提供的可用部分,网络的性能就要变换,叫做拥塞
  • 流量控制与拥塞控制

1. 拥塞控制往往是一种全局的,防止过多的数据注入到网络之中,而TCP连接的端点只要不能收到对方的确认信息,猜想在网络中发生了拥塞,但并不知道发生在何处,因此,流量控制往往指点对点通信量的控制,是端到端的问题。
当提供的负载继续增大到某一数值时,网络的吞吐量就下降到零,网络无法工作,产生所谓的死锁。

2. 流量控制 往往是点对点通信量的控制,是个端到端的问题(接受端控制发送端),流量控制所要做的就是抑制发送端的发送速率

  • 拥塞控制可以分为开环控制和闭环控制

1.开环控制,在设计网络时把因素考虑到

2.闭环控制,基于反馈环路,使用拥塞的信息来进行调整网络
在这里插入图片描述


慢开始 & 拥塞避免

发送方维持一个叫做拥塞窗口cwnd,根据网络来进行动态的调整大小,网络拥塞的时候,路由器会丢弃报文,当发送方没有按时收到确认报文,那么就知道网络发生了拥堵。

现在结合拥塞窗口cwnd的变化来看一下上述两个方法

慢开始的“慢”指的是,初始cwnd=1(此时表示的是报文段的个数,而不是真正传输时使用的字节流)

我们来简单的论一下这个过程:

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

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

也就是说,每经过一个传输伦次(RTT时间),cwnd加倍。

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

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

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

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

那么理所当然的,现在我们要来看一下拥塞避免算法。

拥塞避免算法的思路是让拥塞窗口cwnd缓慢增大,即每经过一个往返时间RTT就把发送方的拥塞窗口cwnd+1,而不是加倍(也就是收到两个,四个确认,仍然+1),这样cwnd就按线性增大

在这里插入图片描述

1.乘法减小:也就是说,当拥塞避免算法增长到24之后,我们更新ssthresh=24/2=12,之后再重新执行之前的两个算法。乘法减小,指的就是ssthresh减半
2.加法增大:指的是,执行拥塞避免算法之后,cwnd线性的进行增长,防止很快就遇到网络拥塞状态
快重传 & 快恢复
  • 快重传
    当接收方收到了一个失序的报文,马上报告给发送方,没收到,赶紧重传,加入M2收到了,M3没有收到,之后的M4,M5,M6又发送了,此时接收方一共连续给发送方反馈了4个M2确认报文。那么快重传规定,发送方只要连续收到3个重复确认,立即重传对方发来的M3

  • 快恢复
    两个要点:

  1. 当发送方连续收到三个重复确认,执行乘法减小,ssthresh减半
  2. 由于发送方可能认为网络现在没有拥塞,因此与慢开始不同,把cwnd值设置为ssthresh减半之后的值,然后执行拥塞避免算法,线性增大cwnd

在这里插入图片描述

注意:其实呢,对于接收方也是用限额的,有一个rwnd,也就是接收窗口,那么实际上,发送方窗口的上限=min(rwnd,cwnd)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值