互联网控制消息协议(英语:Internet Control Message Protocol,缩写:ICMP)是互联网协议族的核心协议之一。它用于网际协议(IP)中发送控制消息,提供可能发生在通信环境中的各种问题反馈。通过这些信息,使管理者可以对所发生的问题作出诊断,然后采取适当的措施解决。
报文类型
ICMP协议的消息大致分为两类:Type(出错原因的错误消息)Code(诊断的查询消息)
类型 | 代码 | 状态 | 描述 | 查询 | 差错 |
---|---|---|---|---|---|
0 - Echo Reply | 0 | echo响应 (被程序ping使用) | ● | ||
1 and 2 | 未分配 | 保留 | ● | ||
3 - 目的不可达 | 0 | 目标网络不可达 | ● | ||
1 | 目标主机不可达 | ● | |||
2 | 目标协议不可达 | ● | |||
3 | 目标端口不可达 | ● | |||
4 | 要求分段并设置DF flag标志 | ● | |||
5 | 源路由失败 | ● | |||
6 | 未知的目标网络 | ● | |||
7 | 未知的目标主机 | ● | |||
8 | 源主机隔离(作废不用) | ● | |||
9 | 禁止访问的网络 | ● | |||
10 | 禁止访问的主机 | ● | |||
11 | 对特定的TOS 网络不可达 | ● | |||
12 | 对特定的TOS 主机不可达 | ● | |||
13 | 由于过滤 网络流量被禁止 | ● | |||
14 | 主机越权 | ● | |||
15 | 优先权终止生效 | ● | |||
4 - 源端关闭 | 0 | 弃用 | 源端关闭(拥塞控制) | ● | |
5 - 重定向 | 0 | 重定向网络 | ● | ||
1 | 重定向主机 | ● | |||
2 | 基于TOS 的网络重定向 | ● | |||
3 | 基于TOS 的主机重定向 | ● | |||
6 | 弃用 | 备用主机地址 | |||
7 | 未分配 | 保留 | |||
8 - 请求回显 | 0 | Echo请求 | ● | ||
9 - 路由器通告 | 0 | 路由通告 | ● | ||
10 - 路由器请求 | 0 | 路由器的发现/选择/请求 | ● | ||
11 - ICMP 超时 | 0 | TTL 超时 | ● | ||
1 | 分片重组超时 | ● | |||
12 - 参数问题:错误IP头部 | 0 | IP 报首部参数错误 | ● | ||
1 | 丢失必要选项 | ● | |||
2 | 不支持的长度 | ||||
13 - 时间戳请求 | 0 | 时间戳请求 | ● | ||
14 - 时间戳应答 | 0 | 时间戳应答 | ● | ||
15 - 信息请求 | 0 | 弃用 | 信息请求 | ● | |
16 - 信息应答 | 0 | 弃用 | 信息应答 | ● | |
17 - 地址掩码请求 | 0 | 弃用 | 地址掩码请求 | ● | |
18 - 地址掩码应答 | 0 | 弃用 | 地址掩码应答 | ● | |
19 | 保留 | 因安全原因保留 | |||
20 至 29 | 保留 | Reserved for robustness experiment | |||
30 - Traceroute | 0 | 弃用 | 信息请求 | ||
31 | 弃用 | 数据报转换出错 | |||
32 | 弃用 | 手机网络重定向 | |||
33 | 弃用 | Where-Are-You(originally meant for IPv6) | |||
34 | 弃用 | Here-I-Am(originally meant for IPv6) | |||
35 | 弃用 | Mobile Registration Request | |||
36 | 弃用 | Mobile Registration Reply | |||
37 | 弃用 | Domain Name Request | |||
38 | 弃用 | Domain Name Reply | |||
39 | 弃用 | SKIP Algorithm Discovery Protocol, Simple Key-Management for Internet Protocol | |||
40 | Photuris, Security failures | ||||
41 | 实验性的 | ICMP for experimental mobility protocols such as Seamoby [RFC4065] | |||
42 到 255 | 保留 | 保留 | |||
235 | 实验性的 | RFC3692( RFC 4727) | |||
254 | 实验性的 | RFC3692( RFC 4727) | |||
255 | 保留 | 保留 |
3-目的不可达
路由器无法将数据包发送给目标地址,给发送端主机返回一个目标地址不可达(Destination Unreachable Message)的ICMP消息,并在这个消息中显示不可达的具体原因。如上图
5-重定向消息
如果路由器发现发送端主机使用了次优的路径发送数据,那么他会返回一个ICMP重定向的消息给这个主机。这个消息中包含了最合适的路由信息和数据源。主要发生在路由器有更好的路由信息的情况下。路由器会通过这样的ICMP消息给发送端主机一个更合适的发送路由。
11-ICMP超时
IP包中一个字段叫TTL(Time To Live,生存周期)他会随着每经过一次路由减1,直到减到0时该IP包会被丢弃,此时IP路由器会发送一个ICMP超时的消息(code 0)给发送端主机,并通知该包已被丢弃
0,8-回送消息
用于进行通信的主机或路由之间,判断所发送的数据包是否已经成功到达对端的一种消息。ping命令就是利用这个消息实现的。
向对端主机发送回送请求(ICMP Echo request 类型8)
接受对端主机发回来的回送答应消息(ICMP Echo reply 类型0)
9,10-路由探索消息
用于发现与自己相连网络中的路由器。当一台主机发送出ICMP路由器请求(Router Solicitaion Code 10)时,路由则返回ICMP路由公告消息(Router Adverisment)给主机
参考:《图解TCP/IP》