首页/网络/抓包与流量分析速查/TLS ServerHello 字段判读
应用层报文判读71 条

TLS ServerHello 字段判读

服务端应答的选择结果集中于此:版本、随机数、会话 ID、选中套件与扩展;对比 ClientHello 能看出请求与实际选择的差异。

ServerHello 判读要点

ServerHello 是服务端对 ClientHello 的应答,一次握手里几乎所有选择结果都集中在这一条消息里:协议版本、随机数、会话 ID、选中的密码套件,以及 key_share、ALPN、supported_versions 等扩展。把 ServerHello 与 ClientHello 并排看,就能看清「客户端要什么」和「服务端给什么」之间的差距,是 TLS 排错最先该看的一帧。

基本信息

消息类型tls.handshake.type == 2,方向服务端到客户端
关键字段tls.handshake.ciphersuite、tls.handshake.extensions_*
1.3 特性ServerHello 之后所有消息加密,后续细节需解密
特例HelloRetryRequest 复用 ServerHello 结构,随机数为固定常量

典型使用场景

  • 核对协商结果:版本、套件、曲线是否与客户端预期一致
  • 排查 ALPN 选错:确认最终跑的是 h2 还是 http/1.1
  • 确认 SNI 对应证书是否被选中,排查证书串站问题
  • 识别 HelloRetryRequest,解释多出来的一次往返
  • 多虚拟主机环境下逐台核对实际生效的配置

一条命令取全关键字段

一条命令取全关键字段
tshark -r t.pcap -Y "tls.handshake.type==2" -T fields -e ip.src -e tls.handshake.extensions.supported_version -e tls.handshake.ciphersuite -e tls.handshake.extensions_alpn_str
# 输出:服务端地址 / 协商版本 / 选中套件 / ALPN 结果,用来一眼核对三项选择
tshark -r t.pcap -Y "tls.handshake.type==2 && tls.handshake.random" -T fields -e tls.handshake.random
# 随机数等于固定 HRR 常量时,说明这一帧是 HelloRetryRequest 而不是真正的 ServerHello

字段逐项读法

字段含义判读要点
version / supported_versions协议版本1.3 以扩展为准,记录层字段固定为 0x0303
random服务端随机数等于 HRR 常量即为 HelloRetryRequest
session_id会话标识1.2 用于会话恢复,1.3 兼容与 PSK 场景使用
cipher_suite选中的密码套件必须出现在客户端列表内,否则不应被选中
compression_method压缩方法现代实现恒为 0,非 0 说明实现异常
extensions扩展集合key_share、ALPN、supported_versions 等都在这里
TLS 1.3 下 ServerHello 之后的消息全部加密,证书、Finished、应用层参数都看不到明文。要逐项核对必须导出会话密钥(SSLKEYLOGFILE)后交给 Wireshark 解密,或改用两端日志对照。
多主机共享同一入口时,同一个 IP 下不同 SNI 的 ServerHello 可能完全不同。分析前先按 SNI 或主机名分组,否则会把多个虚拟主机的配置混成一份结论。

速查流程

  • 先看版本是否为期望值,不是就先查版本协商
  • 再看选中套件是否在客户端列表内,不在说明中间设备有干预
  • 接着看 ALPN 结果是否与应用预期一致,HTTP/2 与 HTTP/1.1 混用常见
  • 出现两次 ServerHello 时标记 HelloRetryRequest,解释额外往返
  • 最后与客户端侧抓包对照,确认两侧看到的协商结果一致

易错点

  • 把 HelloRetryRequest 当成服务端异常:它是 1.3 的正常换组流程,只是多一次往返
  • 用记录的 legacy 字段判断版本:1.3 一律显示 0x0303,会得出错误结论
  • 不按 SNI 分组就汇总统计:多虚拟主机的 ServerHello 混在一起,结论不可用
  • 未解密就认为服务端没发证书或没有后续消息:1.3 中它们都在加密记录里

数据来源与参考

  • RFC 8446(ServerHello)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌