Red Hat Training

A Red Hat training course is available for RHEL 8

34.13. TCP 时间戳的好处

TCP 时间戳在 TCP 标头中是可选信息,是 TCP 协议的扩展。TCP 时间戳在 Red Hat Enterprise Linux 中默认启用,内核使用 TCP 时间戳来更好地估算 TCP 连接中的往返时间(RTT)。这导致更准确的 TCP 窗口和缓冲区计算。

另外,TCP 时间戳提供了一种替代方法来确定片段的寿命和顺序,并防止包裹的序列号。TCP 数据包标头在 32 位字段中记录序列号。在 10 Gbps 连接中,此字段的值可以在 1.7 秒后包裹。没有 TCP 时间戳,接收方无法决定带有包裹的序列号的片段是否是一个新的片段或旧的重复片段。但是,使用 TCP 时间戳,接收方可以做出正确的选择来接收或丢弃片段。因此,在带有快速网络接口的系统上启用 TCP 时间戳非常重要。

net.ipv4.tcp_timestamps 内核参数可以有以下值之一:

  • 0 :TCP 时间戳被禁用。
  • 1:TCP 时间戳被启用(默认)。
  • 2:TCP 时间戳被启用,但没有随机偏移。

    重要

    如果每个连接没有随机偏移,则可以大概确定主机的运行时间和指纹,并在攻击中使用此信息。

默认在 Red Hat Enterprise Linux 中启用了 TCP 时间戳,并为每个连接使用随机偏移,而不是只存储当前时间:

# sysctl net.ipv4.tcp_timestamps
net.ipv4.tcp_timestamps = 1

如果 net.ipv4.tcp_timestamps 参数有一个与默认值不同的值(1),则以与您设置其相同的方式恢复设置。