时间戳或时间戳应答消息 (Timestamp or Timestamp Reply Message)
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Type | Code | Checksum |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Identifier | Sequence Number |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Originate Timestamp |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Receive Timestamp |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Transmit Timestamp |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
IP 字段
Addresses (地址)
时间戳消息中源地址将成为时间戳应答消息的目的地址。要构成时间戳应答消息, 只需将源地址和目的地址互换, 将类型代码改为 14, 并重新计算校验和。
ICMP 字段
Type (类型)
- 13 = 时间戳消息 (timestamp message);
- 14 = 时间戳应答消息 (timestamp reply message).
Code (代码)
0
Checksum (校验和)
校验和是从 ICMP Type 开始的 ICMP 消息的反码和的 16 位反码。计算校验和时, 校验和字段应置零。此校验和将来可能被替换。
Identifier (标识符)
如果 code = 0, 用于辅助匹配时间戳和应答的标识符, 可以为零。
Sequence Number (序列号)
如果 code = 0, 用于辅助匹配时间戳和应答的序列号, 可以为零。
描述
消息中接收到的数据 (时间戳) 连同一个附加时间戳一起在应答中返回。时间戳是自午夜 UT (世界时) 以来的 32 位毫秒数。Mills [5] 描述了这些时间戳的一种用途。
Originate Timestamp (发起时间戳) 是发送方最后一次触碰消息后发送的时间, Receive Timestamp (接收时间戳) 是回显方收到消息时第一次触碰它的时间, Transmit Timestamp (发送时间戳) 是回显方发送消息时最后一次触碰消息的时间。
如果时间不能以毫秒为单位提供, 或者无法相对于午夜 UT 提供, 则可以在时间戳中插入任意时间, 但时间戳的最高位也应设置为 1, 以表示这是非标准值。
标识符和序列号可由回显发送方用于辅助将应答与请求匹配。例如, 标识符可以像 TCP 或 UDP 中的端口一样用于标识会话, 序列号可以在每次发送请求时递增。目的地在应答中返回相同的值。
代码 0 可能从网关或主机收到。