回显或回显应答消息 (Echo or Echo 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 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Data ...
+-+-+-+-+-
IP 字段
Addresses (地址)
回显消息中源地址将成为回显应答消息的目的地址。要构成回显应答消息, 只需将源地址和目的地址互换, 将类型代码改为 0, 并重新计算校验和。
ICMP 字段
Type (类型)
- 8 = 回显消息 (echo message);
- 0 = 回显应答消息 (echo reply message).
Code (代码)
0
Checksum (校验和)
校验和是从 ICMP Type 开始的 ICMP 消息的反码和的 16 位反码。计算校验和时, 校验和字段应置零。如果总长度为奇数, 则在计算校验和时, 接收到的数据用一个零字节填充。此校验和将来可能被替换。
Identifier (标识符)
如果 code = 0, 用于辅助匹配回显和应答的标识符, 可以为零。
Sequence Number (序列号)
如果 code = 0, 用于辅助匹配回显和应答的序列号, 可以为零。
Data (数据)
可变长度数据。
描述
回显消息中接收到的数据必须在回显应答消息中返回。
标识符和序列号可由回显发送方用于辅助将应答与回显请求匹配。例如, 标识符可以像 TCP 或 UDP 中的端口一样用于标识会话, 序列号可以在每次发送回显请求时递增。回显方在回显应答中返回相同的值。
代码 0 可能从网关或主机收到。