概述

ICMP(INTERNET CONTROL MESSAGE PROTOCOL)Internet控制报文协议

ICMP协议工作在三层(网络层),由ICMP头和填充数据组成,并填充在IP报文内部

ICMP协议依赖于IP协议,在ICMP头中没有目标和源地址。IP协议中的协议号字段为0x01时表示这是一个ICMP协议。

头部

ICMP头由ICMP类型和code组成,当类型字段为3时,code字段具有实际意义

ICMP类型字段 含义
8 ping请求
0 ping应答
3 目标主机不可达(被路由器或防火墙策略拦截)
11 路由环路(TTL超时)

作用

  1. 网络探测
  2. 路由跟踪
  • windows:tracert [IP]
  • linux或路由器:traceroute [IP]
  • 路由跟踪的原理是发送一个TTL值为1的数据包,当到达路由器时,路由器将TTL减一,回馈一个头部类型字段为11(TTL超时)的ICMP报文,收到的报文即为跟踪到的路由器,然后将TTL值加一继续发送跟踪一下个路由器。如果路由器有自我防御机制不提供ICMP回馈则无法跟踪,但不影响跟踪下一个路由器。
  1. 错误反馈(当type字段为3时code字段的含义)
  • 0 = net unreachable;
  • 1 = host unreachable;
  • 2 = protocol unreachable;
  • 3 = port unreachable;
  • 4 = fragmentation needed and DF set;
  • 5 = source route failed.