自动调整网络超时时间
RTO(Retransmission Timeout)是TCP协议中用于超时重传的核心机制。当发送方发送数据后,若在RTO时间内未收到接收方的确认(ACK),即判定数据丢失并触发重传。RTO并非固定值,而是基于网络往返时间(RTT)动态调整的自适应参数,其核心目标是在"过早重传浪费带宽"和"过晚重传降低效率"之间取得平衡。
一、RTO的核心计算原理:基于SRTT和RTTVAR的自适应算法
TCP为每条连接维护两个核心状态变量,并通过标准化的计算公式实时更新RTO:
| 状态变量 | 全称 | 含义 |
|---|---|---|
| SRTT | Smoothed Round-Trip Time | 平滑往返时间,消除短期波动 |
| RTTVAR | Round-Trip Time Variation | 往返时间变化,反映网络的抖动程度 |
| RTO | Retransmission Timeout | 最终的超时重传时间 |
公式推导
当第一个RTT测量值 R 被获取时(通常通过TCP时间戳选项实现),TCP按如下方式初始化状态变量:
text
SRTT ← R RTTVAR ← R/2 RTO ← SRTT + max(G, K·RTTVAR)
其中,K 通常取 4 以涵盖网络的最大波动情况;G 是时钟粒度,用于确保RTO不低于硬件的计时精度。
