☰
过滤器进阶过滤器是 Wireshark 用得最多的功能。这一节讲清楚两种过滤器的区别、语法规律、以及实战中最好用的一批组合。
2026/9/30 7:20:05 网站建设 项目流程

一、先分清两种过滤器

Wireshark 有两个地方能填过滤条件,位置不同,作用完全不同:

捕获过滤器显示过滤器
位置抓包前,选网卡那个界面抓包后,主界面顶部绿色栏
语法BPF 语法(tcp port 80)Wireshark 语法(tcp.port == 80)
作用不抓不符合的包抓了但不显示不符合的包
能反悔吗不能,没抓就没了能,改一下条件就显示出来
写文章的用处减少文件大小分析时切换视角

核心区别:捕获过滤器是物理丢弃,显示过滤器是视觉过滤。

建议:除非包特别多,否则只用显示过滤器。捕获过滤器留着抓大流量时用。

二、显示过滤器的三种基本写法

写法 1:直接写协议名

tcp udp http dns icmp arp tls http2 quic

只看这个协议,最简单。

写法 2:字段 + 运算符 + 值

ip.addr == 192.0.2.10 tcp.port == 80 http.request.method == "GET" tls.handshake.type == 1
这是最常用的形式。

写法 3:逻辑组合

&& 与(同时满足) || 或(满足一个即可) ! 非(不满足)

&&/||/! 仍能用,但在 Wireshark 3.x+ 会触发警告。对应的推荐写法是 and / or / not。

三、运算符速查

运算符含义示例
==等于ip.addr == 192.0.2.10
!=不等于ip.addr != 192.0.2.10
><大于 / 小于tcp.len > 1000
>=<=大于等于 / 小于等于frame.len >= 1500
contains包含字符串http.host contains "example"
matches正则匹配http.host matches ".*\\.com"
in在集合里tcp.port in {80,443,8080}

注意:==是两个等号,不是=。写一个等号 Wireshark 会报错。

四、常用字段速查

IP 相关

ip.addr == 192.0.2.10 任意方向匹配这个 IP ip.src == 192.0.2.10 只匹配源 ip.dst == 192.0.2.10 只匹配目的 ip.addr in {192.0.2.10, 192.0.2.20} 两个 IP 任一个

TCP / UDP 端口

text tcp.port == 80 任意方向 tcp.srcport == 54321 只匹配源端口 tcp.dstport == 443 只匹配目的端口 tcp.port in {80,443,8080} 三个端口任一个 udp.port == 53

HTTP

text http.request 只看请求 http.response 只看响应 http.request.method == "GET" http.request.uri contains "/api" http.host == "example.com" http.response.code == 200 http.response.code >= 400 所有客户端/服务端错误

TLS

text tls.handshake.type == 1 Client Hello tls.handshake.type == 2 Server Hello tls.alert_message 告警消息 tls.handshake.extensions_alpn_str contains "h2" 协商 HTTP/2

TCP 分析字段(排查故障专用)

text tcp.analysis.retransmission 重传 tcp.analysis.fast_retransmission 快速重传 tcp.analysis.duplicate_ack 重复 ACK tcp.analysis.zero_window 零窗口 tcp.analysis.reset RST tcp.analysis.out_of_order 乱序 tcp.analysis.ack_rtt > 0.1 RTT 超过 100ms

帧相关

text frame.len > 1000 包长超过 1000 frame.time_relative > 10 相对时间超过 10 秒 frame.number == 100 第 100 个包 frame contains "password" 包内容包含 password

五、十组实战组合(背下来)

1. 看某个 IP 的所有通信

text ip.addr == 192.0.2.10

2. 看某个 IP 的 HTTPS 流量

text ip.addr == 192.0.2.10 && tcp.port == 443

3. 看 HTTP 的 POST 请求

text http.request.method == "POST"

4. 看所有 4xx 和 5xx 错误

text http.response.code >= 400

5. 看所有 TCP 重传

text tcp.analysis.retransmission

6. 看重传 + 零窗口(应用慢的典型)

text tcp.analysis.retransmission || tcp.analysis.zero_window

7. 看某个流的所有包

text tcp.stream == 5

8. 看 DNS 查询失败的

text dns.flags.rcode != 0

9. 看 ICMP 错误

text icmp.type == 3 || icmp.type == 11

10. 排除噪声,只看业务流量

text !arp && !mdns && !ssdp && !nbns

arp、mdns、ssdp、nbns是局域网里的广播噪声,分析时经常先排除。


六、三个进阶技巧

技巧 1:右键生成过滤器

不用手打字段名。在协议树里右键任意字段 →Apply as Filter → Selected,Wireshark 自动生成正确的过滤器表达式。

这是最推荐的学习方式:想过滤什么,先右键看看它生成的语法,慢慢就记住了。

技巧 2:过滤按钮栏

过滤器输入框右边有个书签图标,点一下可以保存常用过滤器。下次直接点书签就用。

常用几个可以存进去:

text tcp.analysis.retransmission http.response.code >= 400 tls.handshake.type == 1

技巧 3:颜色 + 过滤器联动

把过滤器和配色规则一起用:

  1. 加一条配色规则:Filter =tcp.analysis.retransmission,红底

  2. 不填过滤器时,重传包也是红的

  3. 填上过滤器时,只显示重传包

这样既能看到全貌,又能一眼抓住异常。


七、常见错误

错误写法报错原因正确写法
ip.addr = 192.0.2.10少一个等号ip.addr == 192.0.2.10
tcp.port = 80同上tcp.port == 80
http.request.method == GET字符串要加引号http.request.method == "GET"
ip.addr == 192.0.2.10/24不支持 CIDRip.addr == 192.0.2.0/24(用ip contains)
tcp.stream = 5少一个等号tcp.stream == 5

字符串一定加双引号,这是最常见的坑。


八、安全脱敏

写文章时,过滤器表达式本身不敏感,但截图里的过滤结果要注意:

位置处理
过滤器栏里的 IP可以保留(只是表达式,不是真实流量)
列表里的 IP 列打码
Info 列里的域名内部域名换成example.com
协议树里的 Cookie打码

小技巧:文章里展示过滤器时,直接用192.0.2.10这种文档地址段,截图也就自动脱敏了。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询