对超时重传、滑动窗口、拥塞控制的简单认识

对超时重传、滑动窗口、拥塞控制的简单认识

我们之前说过TCP对于数据的可靠传输可以做到:

  • 数据准确的到达对端
  • 数据到达后是有序的
  • 数据不失真

这也就是为什么说TCP是可靠的连接,而UDP是不可靠的连接。

因为TCP拥有一些对于异常情况的处理机制来保证自身数据的可靠传输,这里我们就来看一下都有些什么机制:

  • TCP重传机制
  • TCP滑动窗口
  • TCP的拥塞控制
  •  

接下来,我们对其依次进行详细的分析:

一:TCP重传机制

TCP需要保证所有的数据包都能准确到达对端,所以必须要有重传机制。

例如:发送端发送了1,2,3,4,5一共5个包,接收端获取了1,2,所以反馈了ACK=3(证明1,2全部接收到了),然后,4比3传输的快,接收端再接收到了4,这时3还没有传输到,那么此时的TCP会怎么办呢?

注意:接收端反馈给发送端的ACK只能确认最后一个连续的包。

我们要知道,ACK不能跳着确认,比如这个时候3没有接收到,只接收到了4,但是我们不能反馈ACK=5给接收方,因为这个ACK只能确认最大的连续接收到的包,所以不能跳过3单独反馈确认4,不然发送端会认为之前的3同样也被接收到了。

 

这里有两种重传机制可以处理这个问题:

第一种:超时重传机制

思想是:现不着急反馈ACK,并且死等3,当发送方发现收不到3的ACK,一定时间后,会重新将3发送一遍。这时,如果接收方接收到了3,会直接反馈ACK=5,因为ACK不能跳着确认,则这时证明3和4都收到了。

但是这种方法也有弊端,那就是需要死等3,导致就算接收方收到了4和5,但是发送方不了解情况,所以会认为4和5接收方是不是也没有接收到,所以可能会将4和5也重新发送一份。

那么对此有两种选择:(RTO:Retransmission RTO(TCP超时重传机制) ,是TCP操作计时器的一种。

  • 一种是只重传RTO超时的包,也就是重传3。
  • 一种是将RTO后面的所有包全部重传,也就是重传3,4,5。

这两种选择,有利有弊,第一种无疑很节省网络资源,但是很慢而第二种速度快,但是浪费带宽,而且有可能做了很多无用功。总体上来说都不是很好,因为都在等RTO时间,RTO有可能会很长。

 

所以我们这个时候就可以发现RTO时间的设置对于TCP重传机制非常的重要,那我们就来分析一下RTO的重要性,并且了解一下RTO是如何设置的。

RTO的重要性体现在:

  • 设置过长,包丢了好久都没有发现,导致重发速度慢,效率低。
  • 设置过短,可能由于网络拥堵的原因,包并没有丢失而是在路上堵住了,那么这个时候,由于RTO设置的时间过短,发送方马上就重新发送这个包,那么会导致网络变得更加的拥堵,更加的拥堵导致更多的包超时堵在路上,更多的包超时导致更多的重发,那么这就是典型的葫芦爷救娃娃了,非常浪费资源。

而且由于这个超时时间RTO在不同的网络下会设置不同的值不能设置一个固定的值,只能动态的去设置。那么为了方便动态的设置这个超时时间RTO,所以TCP引入了RTT(Round Trip Time),发送端根据一个数

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值