TCP/IP之RTO、RTT

什么是 RTO、RTT

底层的网络是不可靠的, 超时、丢包各种问题, 但 TCP 协议的设计初衷是作为一个可靠的数据传输协议, 超时重传机制是实现可靠性很重要的一个设计.

每次 TCP 握手过程都会启动一个定时器, 如果在定时器时间内没有收到, 则进行重传.

而重传的超时时间 则成为 RTO (Retransmission TimeOut)

我们知道网络是一直在波动的, 所以超时重传也是随着网络一直变化的, 那我们基于什么来计算 RTO 呢?

答案是 基于 TCP 单次握手的往返时间. 连接的往返时间成为 RTT (Round Trip Time)

正常网络情况示意
在这里插入图片描述
异常情况 RTT 值
在这里插入图片描述
在这里插入图片描述

通过上图我们发现其实还有几种特殊场景的计算, 但实际计算是以发送数据包时间算起, 基于协议实现里面的 timestamp 值计算差值就可以了.

在这里插入图片描述
简单概念理解:

  1. RTT(Round Trip Time):一个连接的往返时间,即数据发送时刻到接收到确认的时刻的差值;
  2. RTO(Retransmission Time Out):重传超时时间,即从数据发送时刻算起,超过这个时间便执行重传, RTO协议实现值最小1s

RTT 和 RTO 的关系是:由于网络波动的不确定性,每个RTT都是动态变化的,所以 RTO 也应随着 RTT 动态变化。

当 RTO < RTT 时, 将会触发大量的重传, 当 RTO > RTT 时候, 如果频繁出现丢包, 重传不及时, 又会造成网络的反应慢, 最好的结果是 RTO 略大于 RTT.

上面说到了 网络是一直波动的, RTT 是一直变化的, RTO 的值基于上次 RTT 往返时间动态计算出来的.
这里基于一套公式(主要Jacobson / Karels 算法), 内容过于炸裂, 这里我要偷懒,
详情查看RFC6298 tools.ietf.org/html/rfc629…

原文: https://juejin.im/post/5dbd893ee51d452a07570339

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值