首页/网络/抓包与流量分析速查/内容编码与压缩判读
应用层报文判读71 条

内容编码与压缩判读

Content-Encoding: gzip/br 决定实体压缩形态:排查"响应变慢"时要区分压缩开销与传输节省,文本类接口压缩通常净收益明显。

内容编码是什么

内容编码表示实体在传输前被压缩或做过其他编码处理,取值常见 gzip、deflate、br:客户端在请求头里用 Accept-Encoding 声明自己能接受哪些编码,服务端挑一种并在响应头里用 Content-Encoding 告知。排查「响应变慢」时要区分压缩开销与传输节省:文本类接口压缩后的净收益通常明显,而图片、视频这类已压缩内容再压一次收益有限,反而多消耗一点处理资源。

基本信息

适用平台Wireshark / tshark 解析的 HTTP 明文流量(HTTP/1.1)
过滤字段http.content_encoding、http.accept_encoding
常见取值gzip、deflate、br、identity
查看方式Wireshark 可显示解压后的实体内容,便于对照

典型使用场景

  • 判断响应体积偏大是内容本身大还是没有启用压缩
  • 核对客户端是否真的声明了可接受的编码
  • 评估网关改写编码对前后端行为的影响
  • 排查客户端解压失败类报错,确认编码取值与实现匹配
  • 对比启用压缩前后的传输字节数,量化收益
  • 为静态资源与接口分别制定压缩策略提供数据

对比观察

对比观察
http.accept_encoding contains "gzip"        # 请求侧声明
http.content_encoding contains "gzip"        # 响应侧实际取值
# 实体大小对比: 压缩后与解压后(Wireshark 可查看解压内容)
# 若 Accept-Encoding 有声明而响应无编码,说明服务端或网关未启用
# 已压缩格式(图片/视频)再次压缩收益有限,通常不值得

字段逐项读法

字段含义异常信号
Accept-Encoding客户端可接受的编码列表缺失说明客户端不支持压缩
Content-Encoding实体实际使用的编码与声明不匹配会导致解压失败
压缩后长度传输层实际字节数与解压后差异小说明内容本身不可压
解压后长度应用真正处理的数据量评估节省要以此为基准
抓包里显示的实体长度是压缩态,评估传输节省要拿解压后的尺寸对比,单看压缩后长度会低估原始数据量。
中间设备可能改写或移除编码声明,出现响应无法解析时以实际收到的报文头与字节为准。

易错点

  • 用压缩后长度评估接口数据量:会明显低估真实数据规模,容量与成本估算随之偏小
  • 忽略 Accept-Encoding 声明:服务端未压缩可能是客户端根本没声明可接受编码
  • 对已压缩内容继续压缩:收益有限还占用处理资源,策略上应排除这类资源
  • 只在一侧抓包判断编码:中间设备会改写编码,客户端侧看到的才是最终结果

数据来源与参考

  • RFC 9110(内容编码)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌