总结

  • IPv4 选项 68 在包头内提供一段有限空间,让参与处理的系统写入时间戳,或写入地址与时间戳的组合。
  • 主机和路由器规范一度延续这种协作,但未认证的记录、不同步的时钟、信息暴露和沿途过滤使它逐渐失去实用价值。

包头里的一册有限账簿

RFC 791 赋予 Internet Timestamp 类型号 68。它不是发送端预先填好的单个时间值,而是一段允许路径上的系统修改的记录区。其 copy bit 为零,因此数据报发生分片后只有第一个分片携带它;同一个数据报最多出现一次该选项。

记录区的容量和写入位置都有明确边界。长度字段只有一个八位组,整个选项最长 40 个八位组;指针指出下一处可写位置,最小合法值是 5。另一个八位组被分成四位溢出计数器和四位模式标志。空间用尽时,处理设备只能把溢出计数加一,不能越界写入。若长度或指针非法,或四位计数器本身再次溢出,原数据报即被视为错误并丢弃,同时可以返回 ICMP Parameter Problem。

三个模式表达了三种不同请求。标志 0 让设备连续填写 32 位时间戳;标志 1 要求先写自己的互联网地址,再写时间;标志 3 则由发送端预置地址,只有下一个地址与处理系统相符时才落下时间。标准时间值是从世界时午夜起算的毫秒数。拿不到这种时间的系统仍可写入另一参考值,但必须把最高位置一,声明它不是标准时间。

这些约束也划出了证据边界。40 个八位组装不下完整的长路径,地址加时间的模式消耗更快;溢出字段最多只能表达有限次数的“无处可写”。更重要的是,格式既不验证写入者身份,也不证明沉默的每一跳都看见或接受了请求。单条记录只是某个参与实现按照自己的时钟和模式写下的观察。

规范保留了协作,却没有创造共同时间

RFC 1122 将主机发起和处理 Timestamp 都列为可选能力。不过,一旦实现,源主机在模式允许时必须记录自身时间;目的主机则应尽可能在把选项交给上层之前加入当前时间。时间表示继续遵循相关 ICMP 时间规则:优先使用世界时午夜后的毫秒值,无法提供正确值时必须标出非标准。

RFC 1812 对转发路由器提出更强要求:路由器必须支持处理该选项。标志 3 下,预置地址只需匹配路由器的任一地址,不必恰好属于入口或出口接口。实现可以提供一个开关,让标志 0 或 1 的选项原样通过,但默认必须关闭。与此同时,规范也承认测量的根本限制:越接近到达时刻写入越有用,而设备时钟若不同步,跨设备比较就会失真。

可观察性为何变成暴露面

到 RFC 7126 时,评估重点已经变化。处理时间和设备地址能帮助排障,也能暴露网络拓扑、系统时间和实现特征;攻击者甚至可能借助时钟偏差区分物理设备。要求路径解释自己的机制,也给了外部观察者阅读路径的机会。

过滤又削弱了诊断价值。普通 ping 不依赖 IPv4 选项,而依赖类型 68 的测试会在任何拒绝选项的管理边界中断。RFC 7126 认为广泛丢弃已经使这类技术几乎无法使用,并建议路由器、安全网关和防火墙丢弃包含 Internet Timestamp 的包。

来源