首页/网络/抓包与流量分析速查/Wireshark 过滤 HTTP/2 流量
Wireshark 技巧75 条

Wireshark 过滤 HTTP/2 流量

http2 协议字段可过滤 HTTP/2 帧与头部:http2.header.name 匹配头名、http2.streamid 按流号定位、http2.type 按帧类型筛选。

HTTP/2 过滤是什么

HTTP/2 不再有请求行,方法、路径与主机名都以伪头形式承载在 HEADERS 帧里,所以不能用 HTTP/1.x 的字段过滤。http2 相关字段可以按帧类型、流编号与头部名称筛选:用头部名称匹配路径、用流编号跟踪单个请求、用帧类型过滤控制帧。

基本信息

适用工具Wireshark 3.x / 4.x
主要字段http2.header.name、http2.header.value、http2.streamid、http2.type
伪头示例:method、:path、:authority
前提明文 HTTP/2 或已导入密钥解密
协议特点多条流复用同一条连接

典型使用场景

  • 按路径找出报错的接口请求
  • 跟踪单条流查看某个请求的完整往返
  • 过滤控制帧,排查流控与重置行为
  • 核对前端实际请求的接口与预期是否一致
  • 对比 HTTP/1.1 与 HTTP/2 环境下的请求差异

常用示例

常用示例
http2.header.name == ":path" && http2.header.value contains "/api"   # 按路径过滤
http2.streamid == 3                                                    # 跟踪单条流
http2.type == 1                                                        # HEADERS 帧
http2 && http2.header.name == ":authority"                             # 按主机名

字段与用途

字段含义用途
http2.header.name头部名称(含伪头)按名称定位字段
http2.header.value头部取值匹配路径或主机名
http2.streamid流编号跟踪单个请求
http2.type帧类型过滤头部帧或数据帧
HTTP/2 跑在加密传输之上时需先完成解密,否则 http2 字段不会出现。
头部经压缩传输,抓包中看到的是解析器还原后的取值,异常时先核对解析版本。

补充要点

  • 同一连接上多条流共享五元组,排查单个请求必须结合流编号
  • 按流编号过滤后再看该流的完整帧序列,能判断是客户端取消还是服务端重置
  • 服务器推送会额外产生流,分析时不要把推送流当成本次请求的响应
  • 流编号与连接编号一起记录,复现问题会更方便
HTTP/2 的统计视图与 HTTP/1.x 分开,接口级统计需要结合路径伪头自行过滤。

补充要点

  • 头部经压缩传输,分析器还原的取值需与协议版本对应
  • 多路复用意味着单连接的统计不能代表单个请求的耗时
  • 按流编号过滤后再看帧序列,能判断是客户端取消还是服务端重置
  • 服务器推送会额外产生流,分析请求响应时要注意区分

易错点

  • 沿用 HTTP/1.x 字段过滤 HTTP/2 流量,结果为空的结论不可靠
  • 忽略多路复用特性,按连接统计吞吐却当成单请求的耗时
  • 未解密就尝试过滤,误判为服务端没有返回相应头部

数据来源与参考

  • Wireshark 显示过滤器参考(http2)
  • RFC 9113(HTTP/2)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌