giftiaのblog

http 的成长史

· 更新于 · giftia

HTTP/1.0

  • 短连接:每次请求新建 TCP 连接,完成后断开
  • 无 Host 头:不支持虚拟主机
  • 不支持断点续传

HTTP/1.1

  • 长连接:默认 Connection: keep-alive,复用 TCP 连接
  • 管道化:同一连接可并发多个请求,但响应必须按序返回(队头阻塞)
  • 新增缓存控制Cache-ControlETag
  • 新增 Host 字段:支持虚拟主机
  • 支持断点续传Range 请求头

HTTP/2.0

  • 二进制分帧:报文拆为帧传输,按帧标识符重组
  • 头部压缩:HPACK 算法,客户端和服务端维护头部索引表
  • 多路复用:一个 TCP 连接处理多个 Stream,解决 HTTP/1.1 队头阻塞
  • 服务器推送:服务端可主动推送资源

HTTP/3.0

  • 基于 QUIC(UDP):减少 TCP + TLS 握手耗时
  • 无队头阻塞:独立 Stream,丢包不影响其他流
  • 连接迁移:用 64 位随机数标识连接(非 IP+端口),网络切换不断连
  • QPACK 头部压缩:改进的头部压缩算法

对比

特性HTTP/1.0HTTP/1.1HTTP/2.0HTTP/3.0
连接短连接长连接长连接QUIC 长连接
数据格式文本文本二进制分帧二进制分帧
多路复用不支持不支持支持支持
队头阻塞存在存在TCP 层阻塞
头部压缩不支持不支持HPACKQPACK
传输协议TCPTCPTCPQUIC (UDP)