流量控制和拥塞控制的区别

拥塞控制和流量控制

流量控制的目的:
如果发送者发送数据过快,接收者来不及接收,那么就会有分组丢失。为了避免分组丢失,控制发送者的发送速度,使得接收者来得及接收,这就是流量控制。流量控制根本目的是防止分组丢失,它是构成TCP可靠性的一方面。

TCP的流量控制是利用滑动窗口机制实现的,滑动窗口协议既保证了分组无差错、有序接收,也实现了流量控制。接收方在返回的数据中会包含自己的接收窗口的大小,以控制发送方的数据发送。

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

拥塞控制和流量控制的区别
拥塞控制:拥塞控制是作用于网络的,它是防止过多的数据注入到网络中,避免出现网络负载过大的情况;常用的方法就是:( 1 )慢开始、拥塞避免( 2 )快重传、快恢复。

流量控制:流量控制是作用于接收者的,它是控制发送者的发送速度从而使接收者来得及接收,防止分组丢失的。
拥塞控制就是防止这种现象的发生,或者缓解拥堵问题。

实现原理:四种算法(慢开始,拥塞避免、快重传、快恢复)

发送方会维持一个拥塞窗口(动态变化),拥塞窗口的大小代表着网络的拥塞程度。发送方的滑动窗口小于等于该拥塞窗口。

一:慢开始

发送方先探测一下网络的拥塞程度,并不是一开始就发送大量的数据,然后根据拥塞程度慢慢的增大或减小拥塞窗口

二:拥塞避免

该算法用来控制拥塞窗口的增长速率,每一次 RTT 往返之后,拥塞窗口 + 1 而不是翻倍,这样的话拥塞窗口以线性速率增长,流量可控。

三:快重传

当发送方没有在超时期限内收到确认信号的话就认为网络阻塞了,此时拥塞窗口变为 1 ,同时把慢开始门限值 ssthresh 减半。

拥塞窗口大小 < ssthresh 时,使用慢开始算法
拥塞窗口大小 > ssthresh 时,使用拥塞避免算法
拥塞窗口大小 = ssthresh 时,慢开始与拥塞避免算法均可
接收方收到一个失序的报文段后就立刻发出重复确认,如下图,M3丢失,会重复确认 M2
在这里插入图片描述

一旦接收方连续 3 次收到同一个重复确认就会立马启动快重传算法,即立马重传 M3,而不会等待 M3 的超时时间到期

四:快恢复

快恢复是配合快重传使用的。

上图所示的 M3 丢失,可能是因为 M3 在某个节点因为网络波动等非网络拥挤情况阻塞住了。

也就是网络其实并没有拥塞,快恢复就是在此情况下避免直接重传会真正导致网络阻塞,其原理就是先将拥塞窗口设置成 ssthresh 的大小,然后执行拥塞避免算法

下图展示了整个控制流程:

在这里插入图片描述

  • 7
    点赞
  • 36
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Fruit_Caller

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值