ICMP 是网络层协议。ICMP 报文有两种,即 ICMP 差错报告报文和 ICMP 询问报文。

ICMP 报文被封装在 IP 数据报中发送

ICMP 差错报告报文

类型何时向源点发送该种报文
终点不可达路由器或主机不能交付数据包时
源点抑制当路由器或主机因为拥塞而丢弃数据报时
时间超过当路由器收到生存时间 TTL 为零的数据报时
参数问题当路由器或主机收到的数据报的首部中有的字段值不正确时
改变路由(重定向)路由器把改变路由报文发送给主机,让主机知道下次应将数据报发送给另外的服务器

对于以下几种情况,不再发送 ICMP 差错报告报文:

  1. 对 ICMP 差错报告报文,不再发送 ICMP 差错报告报文
  2. 多个分片的数据报,只对第一个分片发送 ICMP 差错报告报文
  3. 对具有多播地址的数据报,都不发送 ICMP 差错报告报文
  4. 对具有特殊地址(如 127.0.0.0 或 0.0.0.0)的数据报,都不发送 ICMP 差错报告报文

Traceroute 指令使用了 ICMP 时间超过报文

ICMP 询问报文

ICMP 询问报文有四种类型:

  1. 回送请求和回答报文(如分组网间探测 PING )
  2. 时间戳请求和回答报文
  3. 地址掩码请求和回答报文
  4. 路由器询问和通告报文

Tip

PING 测试过程中可能出现超时,因为路由器收到 IP 数据报后,若为了转发该数据报而查询下一跳 IP 地址对应的 MAC 地址时,这一过程所耗费的时间若超过了 IP 数据报能在路由器中缓存的最大时间,则路由器会丢弃该 IP 数据报。