net.ipv4.tcp_timestamps
作者:互联网
设计目的
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