应用层报文判读71 条

按 SNI 过滤流量

同一 IP 上多站点共享 443:tls.handshake.extensions_server_name 是区分目标域名的直接字段,聚焦单站点时首选。

按域名聚焦加密流量

同一个地址上常驻多个站点,加密流量里内容不可读,唯一能直接区分站点的是握手阶段客户端给出的目标域名(服务器名称指示)。它出现在明文握手里,因此既可用于过滤,也可用于比对证书与请求域名是否一致。要注意它的可见范围很窄:一旦握手完成进入加密传输,这个字段就不复存在;会话恢复或客户端问候加密等形态下,也可能根本不出现。

基本信息

适用平台Wireshark / tshark 解析的 TLS 握手
过滤字段tls.handshake.extensions_server_name
可见范围仅握手阶段的明文部分
关联字段证书中的域名列表、请求中的域名头

典型使用场景

  • 同一地址多站点时聚焦某个站点的全部会话
  • 排查「部分客户端证书告警」这类与域名相关的差异
  • 确认负载均衡是按域名还是按地址转发
  • 核对长连接实际连接到了哪个站点
  • 为证书更换后的验证提供报文级证据
  • 排查协议探测类请求命中了哪个默认站点

过滤用法

过滤用法
tls.handshake.extensions_server_name == "api.example.com"
tls.handshake.extensions_server_name contains "example"
# 会话恢复或握手加密时该字段可能不出现,需换其他判据
# 与证书域名列表比对可判断是否匹配
# 与请求中的域名头比对可判断路由依据

观察项逐项读法

观察项含义异常表现
握手域名客户端指定的目标站点缺失会导致命中默认站点
证书域名列表服务端出示的适用范围与该域名不符即触发校验告警
请求域名头应用层声明的目标站点与握手域名不一致会造成路由歧义
握手阶段位置该字段所在报文会话恢复时可能不再出现
该字段只在握手中明文出现,用它做过滤时必须覆盖到握手报文,只抓传输阶段会筛不出任何结果。
握手域名与证书域名不一致会直接触发校验告警,排查时两者要一起核对,而不是只看其中一个。

易错点

  • 只抓传输阶段就按域名过滤:字段只存在于握手中,抓包范围不对会得出「没有该站点流量」的错误结论
  • 把只抓到的握手当成全部会话:会话恢复场景可能不携带该字段,数量统计会偏低
  • 混淆握手域名与证书域名:两者不一致正是故障原因,混为一谈会漏掉关键线索
  • 忽略握手中该字段缺失的后果:缺失时会命中默认站点,表现为返回错误页而非连接失败

数据来源与参考

  • RFC 6066(SNI)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌