HTTP各版本的演进与区别

3 阅读3分钟

HTTP 各版本演进与区别

一、HTTP 是什么

HTTP(HyperText Transfer Protocol)超文本传输协议,是应用层协议,基于 TCP(HTTP/3 基于 UDP),用于客户端与服务端通信。核心特点:无状态、简单可扩展、明文传输


二、HTTP/0.9(1991)—— 极简原型

特点

  • 只有 GET 方法
  • 只有请求行,无请求头、响应头
  • 响应只有 HTML 文本
  • 一次请求 = 一次连接,连接立即关闭
  • 无状态、无缓存、无错误码

示例

GET /index.html

定位

最原始协议,仅能获取简单网页,几乎不用。


三、HTTP/1.0(1996)—— 初步完善

新增能力

  1. 新增请求方法:POST、HEAD

  2. 引入 请求头 / 响应头

    • Content-Type、Content-Length、Authorization…
  3. 支持多种资源:HTML、图片、视频、文件

  4. 支持状态码、缓存、重定向

  5. 支持长连接(但默认还是短连接)

缺点

  • 每个请求必须新建 TCP 连接,三次握手开销大
  • 队头阻塞严重
  • 无 Host 头,一台服务器只能绑一个域名

四、HTTP/1.1(1999)—— 统治时代

目前最广泛、最经典的版本,统治互联网 20 年。

核心改进

  1. 默认长连接(Keep-Alive)一个 TCP 连接可发送多个请求,大幅减少握手开销。
  2. Host 请求头一台服务器可部署多个网站(虚拟主机)。
  3. 更多请求方法PUT、DELETE、OPTIONS、PATCH 等,支持 RESTful。
  4. 缓存机制增强ETag、Cache-Control、If-Modified-Since 等。
  5. 分块传输Transfer-Encoding: chunked,支持大文件流式传输。
  6. 管道化(Pipeline)可同时发多个请求,但依旧队头阻塞

HTTP/1.1 致命问题

  • 队头阻塞(Head-of-line Blocking)一个请求卡住,后面所有请求都排队。
  • 头部巨大、无压缩、重复传输 Cookie、User-Agent。
  • 并发有限,浏览器一般同域名开 6~8 个连接

五、HTTP/2(2015)—— 性能革命

基于 Google SPDY 协议,目标:更快、更安全、更并发

核心特性

  1. 二进制分帧不再是文本协议,拆成更小的 “帧”,有序传输。
  2. 多路复用(Multiplexing)****一个 TCP 连接,同时传输无数请求 / 响应真正解决队头阻塞(应用层)。
  3. 头部压缩 HPACK去掉重复头部,大幅减少体积。
  4. 服务器推送(Server Push)服务端主动把 CSS、JS 推给客户端,不用等浏览器请求。
  5. 流量控制、优先级

仍存在的问题

TCP 层队头阻塞依旧存在一个丢包 → 整个连接等待重传。


六、HTTP/3(2022 正式标准化)—— 未来主流

彻底解决 TCP 队头阻塞,基于 QUIC 协议 + UDP

核心改进

  1. 底层从 TCP → UDP + QUIC
  2. 无队头阻塞每个流独立,丢包只影响当前流。
  3. 0-RTT 握手复用连接,几乎无延迟。
  4. 连接迁移切换 Wi‑Fi / 流量,不断线、不重连。
  5. 内置加密,安全更强

现状

  • 主流浏览器、CDN 都已支持
  • 移动端、弱网环境优势巨大
  • 未来会逐步替代 HTTP/2

七、HTTP 各版本对比总结(表格版)

版本协议连接队头阻塞头部核心亮点
HTTP/0.9文本短连接严重极简
HTTP/1.0文本短连接严重完善基础
HTTP/1.1文本长连接应用层阻塞长连接、Host、缓存
HTTP/2二进制单连接多流TCP 层阻塞HPACK多路复用、推送
HTTP/3QUIC/UDP多路流QPACK0-RTT、无阻塞、迁移

八、一句话记忆

  • HTTP/1.1:能用,但慢
  • HTTP/2:性能起飞,但受限于 TCP
  • HTTP/3:彻底解决阻塞,未来标配