ICMP(Internet Control Message Protocol)报文类型/代码解读

IPv4 ICMP常见Type

Type 名称 用途
0 Echo Reply ping的响应
3 Destination Unreachable 目标不可达
4 Source Quench 源端抑制,已废弃
5 Redirect 重定向
8 Echo Request ping请求
9 Router Advertisement 路由器通告
10 Router Solicitation 路由器请求
11 Time Exceeded TTL超时,traceroute常用
12 Parameter Problem IP报文参数错误
13 Timestamp Request 时间戳请求
14 Timestamp Reply 时间戳响应
17 Address Mask Request 地址掩码请求,已废弃
18 Address Mask Reply 地址掩码响应,已废弃

最常见的几个

Type 8:Echo Request

客户端发送:

1
Type=8,Code=0

例如执行:

1
ping 8.8.8.8

发送的ICMP请求就是Echo Request。

Type 0:Echo Reply

服务器返回:

1
Type=0,Code=0

也就是ping看到的响应。

所以最经典的一对是:

1
2
Echo Request  → Type 8
Echo Reply → Type 0

Type 3:Destination Unreachable

表示目标不可达。常见Code包括:

Code 含义
0 Network Unreachable
1 Host Unreachable
2 Protocol Unreachable
3 Port Unreachable
4 Fragmentation Needed
13 Communication Administratively Prohibited

例如UDP发送到一个没有监听的端口,可能收到:

1
2
ICMP Type 3
Code 3

即Port Unreachable。

Type 11:Time Exceeded

常用于traceroute/tracert。

1
2
Type=11
Code=0

表示TTL在经过路由器转发时减到0。


ICMPv****6

ICMPv6的Type编号与ICMPv4不是一套体系。例如:

Type 名称
1 Destination Unreachable
2 Packet Too Big
3 Time Exceeded
4 Parameter Problem
128 Echo Request
129 Echo Reply
133 Router Solicitation
134 Router Advertisement
135 Neighbor Solicitation
136 Neighbor Advertisement

总结

1
2
3
4
5
6
7
8
9
10
11
12
ICMPv4:
8 = Echo Request
0 = Echo Reply
3 = Destination Unreachable
11 = Time Exceeded

ICMPv6:
128 = Echo Request
129 = Echo Reply
1 = Destination Unreachable
2 = Packet Too Big
3 = Time Exceeded