首页/网络/抓包与流量分析速查/Wireshark 范围与集合条件
Wireshark 技巧75 条

Wireshark 范围与集合条件

支持数值范围(tcp.port >= 30000)与集合(tcp.port in {80, 443})写法;也可以对时间与长度值做区间限制,表达力比连续 && 更强。

范围与集合写法

显示过滤器支持数值区间与集合两种紧凑写法:字段 in {80, 443, 8080} 表示属于集合,字段 in [1-1023] 或用 >= 与 <= 组合表示连续区间。比起把一串相等判断用 or 连起来,这两种写法更短、也更不容易写错,筛端口段、包长段、帧号段时尤其顺手。

基本信息

适用平台Wireshark 显示过滤器;方括号简写自 4.x 起支持
集合写法字段 in {v1, v2, v3}
区间写法字段 >= a && 字段 <= b,或 字段 in [a-b]
适用字段端口、包长、帧编号等可比较字段

典型使用场景

  • 筛多个服务端口:tcp.port in {80, 443, 8080} 一次覆盖几个服务
  • 找知名端口流量:tcp.dstport in [1-1023] 看系统服务端口上的交互
  • 按包长筛选:tcp.len in [1400-1460] 找接近满 MSS 的数据包
  • 按帧号定位:frame.number in [100-200] 只看某一段交互
  • 与其他条件组合:先框端口集合,再叠加 URI 或状态码条件

常用示例

常用示例
tcp.port in {80, 443, 8080}      # 端口属于该集合
tcp.dstport in [1-1023]          # 目的端口落在知名端口区间
tcp.len in [1400-1460]           # 数据长度接近满 MSS
frame.number in [100-200]        # 只看第 100 到第 200 帧
ip.ttl >= 1 && ip.ttl <= 64      # 全版本通用的区间写法

写法对照

写法含义兼容性
tcp.port in {80, 443}属于该集合各版本均可用
tcp.port in [1-1023]落在闭区间内较新版本更顺手,旧版用比较运算符
ip.ttl >= 1 && ip.ttl <= 64等价的区间表达全版本可用
tcp.port == 80 || tcp.port == 443等价的集合表达全版本可用但冗长
集合与区间只对可比较的数值字段有意义。对字符串字段用 in 需要写成多个相等判断,或者干脆改用 matches 做正则匹配。
端口范围要区分传输层协议:tcp.port in [1-1023] 不会命中任何 UDP 流量。同时关心两种协议时,显式写一条 udp.port 条件更清楚。
IPv6 抓包里同样是范围条件,但地址类字段要换成 ipv6.addr 一类名称。混有 IPv4 与 IPv6 的抓包按地址段筛选时,通常需要分别写两条条件再取并集。
集合里只能写常量,不能拿另一个字段来做比较。需要「两个字段相等」这类判断时要用比较表达式,或者改用 matches 正则,别把字段名当成值写进集合。

易错点

  • 老版本不认 [] 简写,跨版本分享过滤器时用 >= && <= 更稳
  • 端口范围注意区分 TCP 与 UDP,单一条件只覆盖各自协议
  • 区间是闭区间,写 [1400-1460] 会包含两端,别按半开区间理解
  • 对非数值字段滥用 in 会得到语法错误或空结果,先确认字段类型再写

数据来源与参考

  • Wireshark User's Guide(范围与集合)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌