TCP拥塞控制

拥塞控制的一般原理

什么是拥塞控制,举个中国人都懂得例子,春节火车站,拥塞的很。为啥?中国人多呗,如果不进行拥塞控制(人流量控制),火车站就没法运转了。总结为:需要的资源大于了可用资源,若出现这种情况,最坏的结果就是整个系统瘫痪了。

那么在网络传输数据中,我们可以简单理解数据将经过大量的数据链路和交换机。数据链路是物理设备,这里就不讨论。讨论一下交换机吧。如图所示
在这里插入图片描述

当网络拥塞时候,路由器缓存中容量数据特别多。由于路由器分组转发路由器是需要时间的(本质上也是计算机程序,计算需要时间),则可能出现以下情况

  • 路由器缓存的容量太小,造成发送数据方丢数据,不断丢包重传,造成本来就很拥塞的网络更拥塞了。
  • 路由器处理机处理的速率太慢,导致接收数据量大于处理数据,造成发送数据方丢数据
  • 由于数据包在经过路由器排队太久,导致造成发送数据超时重传(数据还在路上,并没有丢)

增加资源能解决拥塞吗?
不能。
互联网网络是由许许多多路由器构成的,若只是增大一些路由器增大缓存,没什么用,木桶效应,取短板。同样会出现上述问题。

同样是火车站例子,根本不是扩建的问题了,因为永远不知道人有多少,超出你的想象。那火车站/地跌站是如何解决的呢?限流;也就是说从流量源头控制,当开始发生拥塞的时候,就控制一下发送的数据量。

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

|-拥塞控制-|-流量控制-|
|防止过多的数据注入到网络中,使网络中的路由器或链路不致过载|抑制发送端发送数据的速率,以使接收端来得及接收|
|是一个全局性的过程,涉及到与降低网络传输性能有关的所有因素。|是点对点通信量的控制,是端到端的问题|

TCP采取减少用户对资源的需求来解决阻塞问题。

在这里插入图片描述

TCP拥塞控制方法

TCP拥塞控制也是窗口控制的,这里在讨论TCP拥塞控制时,我们假设有两个前提
1)数据是单向传送的,对方只传送确认报文
2)接收方有足够大的缓存接收空间,也就是不会影响到发送方滑动窗口大小

假设TCP发送数据的单位为最大发送报文段SMSS,也就是作为窗口大小的基本单位,使用较小的数字来说明。当前的窗口大小记为cwnd

在这里插入图片描述

  • 慢开始
    开始为1个SMSS单位数据量,cwnd=1。之后未2倍的增长速度,到最大阀门值ssthresh后停止慢开始算法(阀门值ssthress动态计算的,这里假设起始为16)

  • 拥塞避免
    数据量达到阀门值ssthress后,开始线性增长,+1方式。直到出现超时

超时
一旦出现超时,又回到慢开始,发送数据量又从cwnd=1开始,同时最大阀门值ssthresh=最大的窗口值wnd减半=24/2=12

下面来讨论一种情况,如果包是因为传输导致丢包了,而不是网络拥塞
在这里插入图片描述

如何避免这种情况呢?快重传

  • 快重传

在这里插入图片描述
加入传递了M1,M2,M3,M4,M5。其中收到了M1,M2,M4,M5。没有收到M3。立即发送三个对M2的确认,对方就会知道包丢了,但是不是网络的原因

  • 快恢复

对应出现快重传,做出相应的策略:最大阀门值ssthresh=最大的窗口值wnd减半=16/2=8。同时cwnd=ssthresh=8,执行拥塞避免

完整的流程

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值