本文主要是介绍TCP重传机制详解——05RACK,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
文章目录
- TCP重传机制详解——05RACK
- RACK是什么?
- 基本原理
- 使用条件
TCP重传机制详解——05RACK
RACK是什么?
RACK(Recent ACKnowledgment)是一种新的基于时间的丢包探索算法,RACK的目的是取代传统的基于dupthresh门限的分钟快速重传及其变种。
基本原理
基于时间的算法,即通过时间戳和SACK信息,维护一个窗口。当ACK到来时,RACK会将窗口中“过期”的包标记为丢失,进行重传;而对于“未过期”的包,有可能丢失也有可能是乱序,会等待超时后在处理。
- 记录发送时间戳RACK.xmit_ts,用于后续的丢包推断和快速恢复
- 接收ACK/SACK,更新RACK状态,包括最近成功传输的数据包的时间戳、对应的序列号以及计算出的RTT
- 丢包推断,对于每个数据包,会计算从发送到最近成功传输的数据包的时间差
- 计算重排序窗口,重排序窗口表示发送端愿意等待的时间量,以便区分数据包是丢失还是仅仅发生了重排序
使用条件
- 必须使用SACK选项
- 对于每个发送的数据包,发送端必须存储这个数据包的发送时间,时间精度至少要达到毫秒精度。如果连接的RTT小于1ms,那么微秒精度将会更有利于RACK探测丢包
- 对于每个发送出去的数据包,发送端必须存储这个数据包是否已经重传过
Linux内核参数:/proc/sys/net/ipv4/tcp_recovery
这篇关于TCP重传机制详解——05RACK的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!