ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

net.ipv4.tcp_timestamps

2021-11-29 18:03:58  阅读:200  来源: 互联网

标签:选项 timestamp RTO tcp 发送 ipv4 timestamps net 数据包


设计目的

tcp_timestamps设计目的是为了记录数据包的发送时间,过程如下

  1. 发送方在发送数据包时,在TCP协议中的TSopt选项记录当前的发送的时间戳TSval中
  2. 接收方收到数据包,进行拆封并把发送的时间戳TSval记录在TSecr返回给发送方一个ack
  3. 发送包收接收方的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. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有