你可以说一下 http 版本的发展过程吗
总结:0.9:只能发送 get,无状态。1.0:新增 post,请求头,状态码,cookie。1.1:新增 put/delete/options/patch,keep-alive,pipeline。2.0:二进制协议,多路复用,头部压缩。3.QUIC 协议,彻底解决TCP队头阻塞问题。
总体演进概述
版本 | 主要特性 |
---|---|
HTTP/0.9 | 最基础版本,仅支持 GET 请求,无状态。 |
HTTP/1.0 | 引入 POST、请求头、状态码、Cookie 等,功能初步完善。 |
HTTP/1.1 | 支持更多方法(PUT/DELETE/PATCH 等),引入长连接和管道机制。 |
HTTP/2.0 | 基于二进制协议,支持多路复用、头部压缩,性能大幅提升。 |
HTTP/3.0 | 使用 QUIC 协议(基于 UDP),彻底解决 TCP 队头阻塞问题。 |
各版本详细说明
HTTP/0.9
- 特点:
- 只允许客户端发送
GET
请求。 - 没有请求头(Headers)和状态码。
- 返回的内容只有 HTML 文档,没有元数据。
- 只允许客户端发送
- 缺点:功能极其有限,现已淘汰。
HTTP/1.0
- 新增特性:
- 支持
POST
方法。 - 引入请求头(如
User-Agent
、Content-Type
)。 - 增加状态码(如
200 OK
,404 Not Found
)。 - 支持 Cookie,实现简单会话跟踪。
- 支持
- 缺点:每次请求都需要建立新的 TCP 连接,效率较低。
HTTP/1.1
- 改进点:
- 新增请求方法:
PUT
,DELETE
,OPTIONS
,PATCH
等。 - 引入
keep-alive
实现持久连接,减少连接开销。 - 支持请求管道化(pipelining),多个请求可一次性发出。
- 新增请求方法:
- 现状:目前仍广泛使用,兼容性好。
HTTP/2.0
- 核心技术:
- 使用二进制协议替代文本协议,解析更高效。
- 支持多路复用,多个请求共用一个 TCP 连接。
- 头部压缩(HPACK)减少传输体积。
- 优势:显著提升加载速度和资源传输效率。
- 常见实现:基于 TLS 的 ALPN 扩展。
HTTP/3.0
- 核心变化:
- 底层协议由 TCP 改为 UDP,使用 Google 提出的 QUIC 协议。
- 彻底解决 TCP 中的队头阻塞问题。
- 优点:
- 更低延迟。
- 更快连接建立。
- 缺点:
- 兼容性差,部分中间设备不支持。
- 部署成本高,尚未大规模普及。