首页/网络/抓包与流量分析速查/Host 头与虚拟主机判读
应用层报文判读71 条

Host 头与虚拟主机判读

同一 IP 多站点靠 Host 区分:Host 缺失或与预期域名不符会命中错误站点,SNI 与 Host 不一致时还可能触发证书告警。

Host 头与虚拟主机

同一个 IP 上可以承载多个站点,区分靠的就是请求里的 Host 头(加密流量里则是握手中的服务器名称指示)。虚拟主机的匹配规则把请求分发到对应站点,Host 缺失、写成 IP 或与预期域名不符时,就会命中默认站点或返回错误页。对加密流量还要留意 Host 与握手域名是否一致:不同网关按不同字段路由,两者不一致时会得到「部分请求正常、部分异常」的表现。

基本信息

适用平台Wireshark / tshark,HTTP/1.1 用 Host 头,HTTP/2 用 :authority 伪头
过滤字段http.host、tls.handshake.extensions_server_name
路由依据明文流量按 Host,加密流量常按握手域名,部分网关两者都看
常见现象直连 IP 命中默认站点或返回错误页

典型使用场景

  • 同一台服务器上多站点表现不一致,核对请求命中了哪个站点
  • 排查「证书告警但某些客户端正常」这类不一致现象
  • 验证负载均衡或网关的路由依据是域名还是地址
  • 确认直连 IP 测试与域名测试结果差异的原因
  • 排查 API 网关按域名分流时的错误命中
  • 为域名迁移或证书更换提供验证依据

比对要点

比对要点
http.host contains "example.com"          # 明文请求的域名
tls.handshake.extensions_server_name == "api.example.com"
# 抓包中比对: Host 头 与 握手中的服务器名称指示
# 两者不一致时,部分网关按前者路由、部分按后者
ts -T fields -e http.host -e ip.dst          # 统计各 Host 的分布

观察项逐项读法

观察项含义异常表现
Host 头取值请求声明的目标站点为空或写 IP 会命中默认站点
握手域名加密流量的目标站点标识与 Host 不一致会引发路由歧义
响应 Server 头响应由哪类组件生成与预期组件不符说明命中错误站点
证书域名服务端出示的域名范围与请求域名不符即触发校验告警
HTTP/2 把域名放在 :authority 伪头里,用 http.host 过滤可能取不到值,需要按版本换用对应字段。
直接访问 IP 时把 IP 当作域名发送属于正常行为,此时返回默认站点或错误页是预期结果,不是故障。

易错点

  • 用 IP 直连的测试结果判断域名配置:两者命中不同站点,结论无法互推
  • 只看 Host 不看握手域名:加密流量下路由可能依据另一个字段,遗漏会造成误判
  • 忽略大小写与末尾点差异:多数实现不敏感,但证书校验可能严格,不一致案例要单独核对
  • 在多站点服务器上按整机统计:不同站点的错误会互相掩盖,需按域名分组

数据来源与参考

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