31.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 时间戳被启用,但没有随机偏移量。重要如果每个连接没有随机偏移量,就可以大概确定主机的运行时间和指纹,并在攻击中使用此信息。
默认情况下,TCP 时间戳在 Red Hat Enterprise Linux 中启用,并为每个连接使用随机偏移量,而不是只存储当前时间:
# sysctl net.ipv4.tcp_timestamps
net.ipv4.tcp_timestamps = 1
如果 net.ipv4.tcp_timestamps
参数有一个与默认值不同的值(1
),请用与您设置它的相同的方式恢复设置。
其他资源