ICMP 是网络层协议。ICMP 报文有两种,即 ICMP 差错报告报文和 ICMP 询问报文。
ICMP 报文被封装在 IP 数据报中发送
ICMP 差错报告报文
类型 | 何时向源点发送该种报文 |
---|---|
终点不可达 | 当路由器或主机不能交付数据包时 |
源点抑制 | 当路由器或主机因为拥塞而丢弃数据报时 |
时间超过 | 当路由器收到生存时间 TTL 为零的数据报时 |
参数问题 | 当路由器或主机收到的数据报的首部中有的字段值不正确时 |
改变路由(重定向) | 路由器把改变路由报文发送给主机,让主机知道下次应将数据报发送给另外的服务器 |
对于以下几种情况,不再发送 ICMP 差错报告报文:
- 对 ICMP 差错报告报文,不再发送 ICMP 差错报告报文
- 多个分片的数据报,只对第一个分片发送 ICMP 差错报告报文
- 对具有多播地址的数据报,都不发送 ICMP 差错报告报文
- 对具有特殊地址(如 127.0.0.0 或 0.0.0.0)的数据报,都不发送 ICMP 差错报告报文
Traceroute 指令使用了 ICMP 时间超过报文
ICMP 询问报文
ICMP 询问报文有四种类型:
- 回送请求和回答报文(如分组网间探测 PING )
- 时间戳请求和回答报文
- 地址掩码请求和回答报文
- 路由器询问和通告报文
Tip
PING 测试过程中可能出现超时,因为路由器收到 IP 数据报后,若为了转发该数据报而查询下一跳 IP 地址对应的 MAC 地址时,这一过程所耗费的时间若超过了 IP 数据报能在路由器中缓存的最大时间,则路由器会丢弃该 IP 数据报。