网络编程基础(5)-协议概要-TCP的超时重传

在两端通信过程中,发送的数据和确认应答都存在丢失的可能。如下图:
这里写图片描述这里写图片描述

对此,TCP规定发送数据时设置一个重传定时器,如果在定时器溢出的时候还没有收到该数据的确认,那么重传该数据。
一方面TCP确实需要重传丢失的数据以保证传输的可靠性,另一方面又要尽力减少不必要的重传,以防止网络性能下降。对任何实现而言,这关键之处就在于如何确定超时时间和重传的频率。

重传超时时间RTO的测量

这里涉及两个重要的时间概念。
往返时间RTT:指发送端从发送TCP报文段开始到收到该报文段的确认所经过的时间。
超时时间RTO:指发送端从TCP段发送报文段到重传数据前等待接收确认应答的这段时间。

图示如下:

这里写图片描述

RTT的测量

根据定义和上图所示,RTT的计算不难。但是这里要注意一个问题,多数源于伯克利的TCP实现在任何时候对每个连接仅测量一次,意即如果发送一个报文段时,定时器已经被使用,则该报文段不被计时。上图中T1时刻发送了报文段data-1,此时开启定时器,随后在发送端收到确认报文段ack-1之前还发送了报文段data-2,但是并不再启用定时器,因为此时已经有一个定时器在计时了。

一种RTO计算方法

那么RTO如何确定?由于网络情况是随时变化的,RTO肯定不能是一个定值。如果RTO设长了,重发就慢,没有效率,性能差。而如果RTO设短了,重发的就快,导致更多的超时,更多的超时导致更多的重发,增大网络负载,最后可能导致网络拥塞。

这里介绍一种RTO计算方法:TCP在每次发包时都会计算平滑往返时间SRTT及其平滑均值偏差D,将这个SRTT和D相加,RTO就是比这个总和要稍微大一点的值。
即:

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值