RTT、RTO 与超时重传机制

面试官提问:
请解释 TCP 中的 RTT、RTO 与超时重传机制,它们之间有什么关系?什么情况下会触发重传?

应聘者参考回答:
在 TCP 协议中,为了保证可靠传输,发送方会为每个发送的数据段设置一个超时时间,一旦在该时间内未收到 ACK,就会触发重传机制。

一、RTT(Round-Trip Time,往返时延)

  • RTT 表示发送方发送数据段到收到接收方确认 ACK 所需的时间;
  • 该时间是测量 TCP 报文在网络中一个完整往返时间
  • RTT 是动态变化的,受到网络拥堵、链路时延等影响,不稳定。

二、RTO(Retransmission Timeout,重传超时时间)

  • RTO 是 TCP 重传数据的超时时间;

  • 如果超时时间到达而仍未收到 ACK,发送方会重发数据段

  • RTO 通常根据 RTT 动态计算,一般满足如下关系:

    RTO ≈ smoothed_RTT + 4 * RTT_variation
    
  • 在连续重传失败的情况下,RTO 会呈指数增长

    • 第一次超时:重传等待 1 RTT;
    • 第二次超时:等待 2 RTT;
    • 第三次超时:4 RTT,依此类推(1, 2, 4, 8 RTT…)。
  • TCP 实现中通常设置最大重传次数(例如 12 次),超过次数后连接将被关闭。

三、引发超时重传的常见原因

  1. 数据包未到达接收方,如链路拥塞或丢包;
  2. ACK 丢失:数据已达接收方,但确认报文丢失;
  3. 接收方主动丢弃数据,例如窗口大小为 0,不可接收。

四、总结

RTT 是基础测量数据,RTO 是基于 RTT 推导出的超时判定标准。TCP 使用超时重传机制确保即使在不可靠的网络环境下也能保证数据最终传达,配合快速重传与拥塞控制提升整体性能与稳定性。

😀 关注 @公众号 程序员陈子青,获取更多 C++ 技术支持。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

程序员陈子青

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

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

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

打赏作者

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

抵扣说明:

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

余额充值