首页/网络/抓包与流量分析速查/Connection: close 行为判读
应用层报文判读71 条

Connection: close 行为判读

响应携带 Connection: close 表示服务端随后关闭连接:常见于过载保护、配置上限收尾或代理策略;连续出现会降低复用率。

Connection close 是什么

响应头里的 Connection: close 表示服务端在本次响应之后关闭连接,客户端不应再复用这条 TCP 连接。它出现在几类场景:服务端过载保护、达到长连接请求数上限后的收尾、代理或网关的连接策略、以及应用框架的错误处理分支。判读要点是把应用层的关闭意图与网络层的连接断开对应起来:带 close 头的响应之后应当能看到服务端发出的 FIN,两者对不上就说明中间还有设备在干预。连续多个响应都带 close 会明显削弱连接复用,在高延迟链路上直接表现为页面变慢。

基本信息

协议依据RFC 9112(连接管理)
抓包字段http.connection
版本差异HTTP/1.0 默认关闭,HTTP/1.1 默认保持
对应报文响应之后应当出现服务端发出的 FIN
主要影响复用率下降,握手与慢启动成本重复支付

典型使用场景

  • 复用率分析:统计带 close 的响应比例,评估连接复用是否被削弱
  • 过载识别:某台后端突然大量返回 close,通常是并发或连接数触顶
  • 版本差异核对:HTTP/1.0 与 1.1 默认行为相反,先看请求行的版本
  • 代理策略确认:网关可能统一改写连接策略,需要与设备配置对照
  • 与网络断开区分:应用层的关闭意图和链路异常断连是两回事

过滤与核对

过滤与核对
http.connection contains "close"              # 找出声明关闭的报文
http.connection == "keep-alive"                # 对照声明保持的报文
http.response && http.connection contains "close"   # 只看响应侧
# 随后核对同一条流上是否出现服务端 FIN

连接选项判读

取值含义预期报文
close本次响应后关闭连接随后应出现服务端 FIN
keep-alive保持连接供复用后续请求应复用同一条流
HTTP/1.1 无该头默认保持连接按版本判断而非按字面理解
HTTP/1.0 无该头默认关闭连接不应假设复用
HTTP/1.0 的响应不带 keep-alive 时默认关闭,HTTP/1.1 恰好相反;解读之前先确认请求行中的协议版本,否则很容易把正常行为当成异常。
负载均衡与监控系统的健康检查也会制造大量短连接与关闭响应,做复用率统计时要先剔除探测来源,否则数字会被显著拉低。

易错点

  • close 头与 FIN 报文要一一对应核对,看不到 FIN 说明有中间设备终止了连接或抓包点不完整,两者混为一谈会得出错误结论
  • 健康检查流量制造的大量短连接会拉低复用率统计,不剔除探测来源就下结论会误判服务端策略
  • 只按响应数量算复用率忽略了版本差异,HTTP/1.0 场景下频繁关闭属预期行为
  • 在高延迟链路上反复重建连接会重复支付握手与慢启动成本,调整关闭策略前先量化这部分收益,避免无效优化

数据来源与参考

  • RFC 9112(连接选项)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌