6.2 ICMP 报文类型

ICMP 报文根据其类型字段和代码字段组合进行分类,各种类型如图 6-3 所示。表格末尾两列指示了 ICMP 报文是查询报文还是差错报文。区分这两类报文很重要,因为 ICMP 差错报文有时需要特殊处理。

例如,永远不会生成 ICMP 差错报文来响应另一个 ICMP 差错报文。这一规则防止了差错响应的无限循环。当发送 ICMP 差错报文时,它始终包含导致该差错的 IP 数据报的 IP 首部和前 8 个字节数据。这使得接收 ICMP 差错报文的模块能够将其与特定的协议和数据报相关联。

(图 6-1 ICMP 封装在 IP 数据报内部,图 6-3 各种 ICMP 报文类型)

ICMP 报文结构:

  • 20 字节 IP 首部
  • 8 位类型
  • 8 位代码
  • 16 位检验和
  • (不同类型和代码有不同的内容)