Wireshark抓包过滤器ICMP协议字段:详细参考
ICMP协议基础
ICMP(Internet控制消息协议)是TCP/IP协议族的核心协议之一,主要用于诊断网络连接问题和传递控制消息。在Wireshark中,ICMP协议字段是网络故障排查的关键分析对象。
抓包过滤器基础语法
Wireshark抓包过滤器使用Berkeley Packet Filter(BPF)语法,ICMP相关过滤规则需遵循以下格式:
icmp[字段偏移量:长度] 操作符 值
例如过滤ICMP回显请求:icmp[0] == 8
核心ICMP协议字段
类型字段(Type)
- 偏移量:0字节,长度:1字节
- 常用值:
- 8:回显请求(Ping请求)
- 0:回显应答(Ping响应)
- 3:目标不可达
- 11:超时
过滤示例:
icmp[0] == 8 // 只捕获Ping请求
icmp[0] == 3 and icmp[1] == 1 // 捕获主机不可达消息
代码字段(Code)
- 偏移量:1字节,长度:1字节
- 与类型字段配合使用,细化消息类型
常见组合: | 类型 | 代码 | 含义 | |------|------|------| | 3 | 0 | 网络不可达 | | 3 | 1 | 主机不可达 | | 3 | 2 | 协议不可达 | | 11 | 0 | 传输超时 |
校验和字段(Checksum)
- 偏移量:2字节,长度:2字节
- 用于验证ICMP报文完整性,过滤示例:
icmp[2:2] == 0x1234
高级过滤技巧
组合条件过滤
icmp[0] == 8 and ip src 192.168.1.1 // 捕获来自特定IP的Ping请求
按数据长度过滤
icmp[8:] // 过滤ICMP报文数据部分
icmp[8:4] == 0xdeadbeef // 匹配特定数据内容
协议实现参考
ICMP协议解析在Wireshark源码中主要通过以下文件实现:
实际应用场景
网络连通性测试
icmp[0] == 8 or icmp[0] == 0 // 捕获所有Ping请求和响应
异常流量监控
icmp[0] == 3 or icmp[0] == 5 or icmp[0] == 11 // 捕获网络错误消息
注意事项
- 抓包过滤器在捕获时生效,不同于显示过滤器
- 偏移量从0开始计数
- 多字节字段需考虑字节序
- 复杂过滤规则建议结合IP层过滤条件
官方文档参考
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考



