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

Wireshark HTTP/2 统计

Statistics → HTTP/2(或 HTTP → Load Distribution 视图)给出流数量、帧类型分布与头部统计,评估网关侧协议行为。

HTTP/2 统计看什么

HTTP/2 把多个请求复用到一条 TCP 连接上,传统的「一个请求一条连接」视角失效:连接级的重传与拥塞会影响该连接上所有请求。统计入口把流数量、帧类型分布与设置参数汇总出来,用来回答两类问题——一条连接上到底跑了多少请求,以及帧层面的交互是否健康。前提是流量已解密或本身明文。

基本信息

图形入口Statistics → HTTP/2,版本较旧时可能没有独立入口
前提条件需要解密(配置密钥日志)或明文 h2c 流量
核心字段http2.streamid 标识并发流,http2.headers.* 为头部字段
连接设置http2.settings 给出初始窗口与并发流上限等参数
常见帧类型HEADERS、DATA、SETTINGS、WINDOW_UPDATE、RST_STREAM、GOAWAY、PING
关联维度按 tcp.stream 定位连接,再按 streamid 落到具体请求

典型使用场景

  • 并发评估:确认网关是否真的把请求复用到少数连接上,还是频繁新建连接
  • 慢请求归因:判断某个请求的延迟是自身处理慢,还是被同连接上的其他流拖累
  • 网关行为核对:对照 SETTINGS 与 WINDOW_UPDATE,验证服务端流量控制参数是否符合预期
  • 错误定位:统计 RST_STREAM 与 GOAWAY,区分单请求取消与整连接被关闭
  • 压测复盘:对比压测前后的流数量与帧分布,评估多路复用是否达到预期

常用过滤与统计

常用过滤与统计
# 每条 TCP 连接上有多少条并发流
tshark -r a.pcap -Y 'http2' -T fields -e tcp.stream -e http2.streamid | sort | uniq -c
# 展开单条流看帧交互与头部
tshark -r a.pcap -Y 'tcp.stream == 7 && http2.streamid == 5' -V | head -60
# 统计复位流(帧类型 3)与设置帧(帧类型 4), 展开看具体字段
tshark -r a.pcap -Y 'http2.type == 3' -V | grep -i 'reset\|error' | head
tshark -r a.pcap -Y 'http2.type == 4' -V | head -40

帧类型与判读

帧类型作用异常线索
HEADERS发起请求或返回响应头同一流上重复出现需确认是尾部头还是异常
DATA承载响应体大量小 DATA 帧可结合窗口判断发送受限
SETTINGS交换连接参数参数被改小可能限制并发与吞吐
WINDOW_UPDATE补充流或连接窗口频繁且数值很小说明消费端处理慢
RST_STREAM取消单个流成批出现通常是被上层主动中断
GOAWAY关闭整条连接伴随大量流中断说明服务端在收尾
PING探测往返与保活间隔过密会带来额外往返开销
帧数量多不等于效率低:多路复用下报文被拆成多个小帧是常态,判读重点应放在耗时、错误帧与窗口变化上,而不是帧的绝对数量。
加密的 HTTP/2 必须先解密才能看到帧级信息;只做了 TLS 解密但未配置 Wireshark 的协议关联时,可能显示为普通 TCP 流,需要检查解密配置是否生效。

易错点

  • 在未解密的 HTTPS 流量上统计 HTTP/2,界面只有 TCP 层数据,误判为「没有 HTTP/2 流量」
  • 把连接级的重传归因到某一具体请求:同一 TCP 连接上的拥塞会影响所有并发流,需要按 streamid 逐个确认受影响范围
  • 以帧数多寡评价效率,忽略多路复用本身会拆分帧,得出与实际吞吐相反的结论
  • 忽略两套流控的层次:HTTP/2 的流窗口与 TCP 的接收窗口独立变化,只看一层会把背压来源判错

数据来源与参考

  • Wireshark User's Guide(HTTP2 统计)
  • RFC 9113(HTTP/2)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌