标签:选项 timestamp RTO tcp 发送 ipv4 timestamps net 数据包
设计目的
tcp_timestamps设计目的是为了记录数据包的发送时间,过程如下
- 发送方在发送数据包时,在TCP协议中的TSopt选项记录当前的发送的时间戳TSval中
- 接收方收到数据包,进行拆封并把发送的时间戳TSval记录在TSecr返回给发送方一个ack
- 发送包收接收方的ack包,用当前时间戳 - ack中的TSecr时间戳就可以得到精确的RTT
数据结构
- 数据包结构
Kind: 8 // 标记唯一的选项类型,比如window scale是3 Length: 10 bytes // 标记Timestamps选项的字节数 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ | Kind=8 | Length=10 | TS Value (TSval) | TS ECho Reply (TSecr) | +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 1 4 4
值得注意,tcp_timestamps必须需要双方都要开启方可生效,这是前提条件,如果有一方没有开启则双方进行数据发送接收时该功能不起作用(比如client端发送的SYN包中带有timestamp选项,但server端并没有开启该选项。则回复的SYN-ACK将不带timestamp选项,同时client后续回复的ACK也不会带有timestamp选项。当然,如果client发送的SYN包中就不带timestamp,双向都将停用timestamp)
- 该参数内核默认是启用的,即为 1
功能作用
摘抄网络
如果没有tcp_timestamps,看一下RTT是如何计算的
什么是 RTT & RTO
- RTO (Rerrtransmission TimeOut)即,数据包重传超时时间
官方RFC2988文中定义
The Transmission Control Protocol (TCP) [Pos81] uses a retransmission timer to ensure data delivery in the absence of any feedback from the remote data receiver. The duration of this timer is referred to as RTO (retransmission timeout). RFC 1122 [Bra89] specifies that the RTO should be calculated as outlined in [Jac88]TCP超时与重传中的一个相当重要的部分,是对一个已知连接的RTT时间的测量,由于网络波动则会根据实际的情况相应的调整RTO时间
标签:选项,timestamp,RTO,tcp,发送,ipv4,timestamps,net,数据包 来源: https://www.cnblogs.com/apink/p/15620579.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。