ICMP 类型过滤是什么
icmp.type 与 icmp.code 用来过滤 ICMP 消息:8 与 0 是 Echo 请求与应答,3 是目的不可达(其中代码 4 表示需要分片,定位 MTU 问题时必看),11 是超时,traceroute 正是依赖它工作。IPv6 环境下的对应字段是 icmpv6.type 与 icmpv6.code。
基本信息
| 适用工具 | Wireshark 3.x / 4.x |
|---|---|
| 过滤字段 | icmp.type 与 icmp.code |
| 常见取值 | 8 与 0 为 Echo,3 为不可达,11 为超时 |
| IPv6 对应 | icmpv6.type 与 icmpv6.code |
| 配合条件 | 用 ip.addr 限定对端更精确 |
典型使用场景
- 确认目标是否回应 Echo 请求,排除应用层因素
- 定位路径 MTU 问题:抓需要分片的通知报文
- 排查 traceroute 结果异常,确认中间跳是否回应
- 核对策略设备是否按预期放行 ICMP
- IPv6 环境下检查邻居发现是否正常进行
常用示例
常用示例
icmp.type == 8 # Echo 请求
icmp.type == 0 # Echo 应答
icmp.type == 3 && icmp.code == 4 # 需要分片(MTU 问题)
icmp.type == 11 # 超时(traceroute)
icmpv6.type == 135 # IPv6 邻居请求类型与代码速查
| 类型与代码 | 含义 | 用途 |
|---|---|---|
| 8 / 0 | Echo 请求与应答 | 连通性验证 |
| 3 代码 4 | 需要分片 | 定位路径 MTU 问题 |
| 3 其他代码 | 网络或主机不可达 | 判断可达性故障 |
| 11 | 超时 | 环路与 traceroute 分析 |
| icmpv6 135 / 136 | 邻居请求与通告 | IPv6 地址解析 |
只按 type 过滤会混入多种不可达原因,定位具体问题时需要叠加 code 条件。
ICMP 携带的原始报文片段可能被策略设备限速或丢弃,抓不到不代表路径没有问题。
补充要点
- 先按 type 分类,再按 code 细分,能把不可达问题定位到具体环节
- 把 ICMP 与同时段的 TCP 抓包对照,可判断失败是网络层还是传输层
- ICMPv6 的邻居发现与路由通告是 IPv6 的基础功能,排障时不能当作噪音过滤掉
- 策略设备对 ICMP 的处理常与 TCP 不同,放行 TCP 不代表 ICMP 也放行
需要长期观察 ICMP 行为时,把过滤条件保存成按钮,避免每次手工重写表达式。
补充要点
- 先按类型粗筛,再按代码细分,定位原因会更快
- 把 ICMP 与同时段的传输层抓包对照,可区分网络层与传输层问题
- 策略设备对 ICMP 的处理常与业务协议不同,放行规则要分别核对
- IPv6 环境使用对应的 icmpv6 字段,不要沿用 ICMP 表达式
组合用法
- 按类型粗筛后再按代码细分,定位不可达原因更精确
- 把 ICMP 与传输层抓包放在同一时间窗对照,区分网络层与业务层问题
- 策略设备对 ICMP 的放行规则常与业务协议不同,需要分别验证
- IPv6 排障使用 icmpv6 字段,并重点关注邻居发现相关类型