Wireshark 是一个强大的网络协议分析工具,支持多种类型的过滤器来帮助用户捕获和分析网络流量。
根据使用场景和功能,Wireshark 的过滤器可以分为以下两类:
1. 捕获过滤器(Capture Filter)
- 定义:在数据包捕获阶段应用的过滤器,用于限制 Wireshark 捕获哪些数据包。
- 特点:
- 使用 BPF(Berkeley Packet Filter)语法。
- 在捕获过程中实时生效,减少不必要的数据包被保存到内存或磁盘中。
- 性能更高,适合大规模流量环境。
- 常见用法:
text
host 192.168.1.1 # 捕获与 192.168.1.1 相关的所有流量
port 80 # 捕获端口为 80 的流量
tcp and src 192.168.1.1 # 捕获来自 192.168.1.1 的 TCP 流量
2. 显示过滤器(Display Filter)
- 定义:在数据包捕获完成后,用于筛选和显示特定数据包的过滤器。
- 特点:
- 使用 Wireshark 自定义语法,比捕获过滤器更灵活。
- 在捕获完成后应用,不会影响实际捕获的数据。
- 支持复杂的逻辑表达式和协议字段过滤。
- 常见用法:
text
ip.addr == 192.168.1.1 # 显示与 192.168.1.1 相关的所有流量
tcp.port == 80 # 显示端口为 80 的 TCP 流量
http.request.method == "GET" # 显示 HTTP GET 请求
dns.qry.name contains "google" # 显示包含 "google" 的 DNS 查询
过滤器语法对比
功能 | 捕获过滤器(BPF) | 显示过滤器(Wireshark) |
---|---|---|
语法 | BPF | Wireshark 自定义语法 |
应用时间 | 数据包捕获阶段 | 数据包捕获完成后 |
性能 | 更高效 | 较低效 |
灵活性 | 较低 | 更高 |
示例 | host 192.168.1.1 | ip.addr == 192.168.1.1 |
常用过滤器示例
1. 捕获过滤器示例
- 按 IP 地址过滤:
text
host 192.168.1.1
- 按端口过滤:
text
port 80
- 按协议过滤:
text
tcp udp icmp
- 组合条件:
text
tcp and src 192.168.1.1
2. 显示过滤器示例
- 按 IP 地址过滤:
text
ip.addr == 192.168.1.1
- 按端口过滤:
text
tcp.port == 80
- 按协议字段过滤:
text
http.request.method == "GET" dns.qry.name contains "google"
- 组合条件:
text
ip.addr == 192.168.1.1 && tcp.port == 80
如何选择过滤器?
- 如果需要减少捕获的数据量:使用捕获过滤器(Capture Filter)。
- 如果需要灵活分析已捕获的数据:使用显示过滤器(Display Filter)。
通过合理使用这两种过滤器,可以显著提高网络分析的效率和准确性。