HTTP 协议自诞生以来经历了多次重要版本迭代,核心演进目标是 提升性能、降低延迟、支持更高并发、增强功能扩展性 。主流版本包括 HTTP/0.9、HTTP/1.0、HTTP/1.1、HTTP/2、HTTP/3 ,其中 HTTP/1.1 是目前应用最广泛的版本,HTTP/2 和 HTTP/3 是高性能场景的升级方向。
一、HTTP/0.9
比较老,而且目前几乎没有应用场景,这里不讨论。
二、HTTP/1.0(1996 年,首个标准化版本)
HTTP/1.0 是 第一个正式标准化的版本(RFC 1945),大幅扩展了协议功能,奠定了 HTTP 的基本框架,核心特性如下:
- 丰富的请求方法 :新增
POST、HEAD方法,支持向服务器提交数据(如表单)、仅获取响应头部。 - 引入请求 / 响应头部 :新增
Header字段,实现了元数据传输,例如Content-Type(指定响应体格式,如text/html、image/jpeg)、Content-Length(指定响应体长度),从此支持传输图片、音频等非文本资源。 - 状态码机制 :新增 20+ 个状态码,如
200 OK(成功)、404 Not Found(资源不存在)、500 Internal Server Error(服务器错误),实现了标准化的错误处理。 - 默认短连接 :核心缺陷------ 每次 HTTP 请求都需要建立新的 TCP 连接,请求完成后关闭连接。TCP 三次握手 / 四次挥手的开销巨大,一个包含多张图片的网页会触发多次连接建立 / 关闭,性能极低。
局限性:短连接导致的性能瓶颈,无虚拟主机支持,缓存机制简陋,无法支撑大规模高并发场景。
三、HTTP/1.1
HTTP/1.1 是 HTTP 协议的里程碑版本 (RFC 2616,后由 RFC 7230-7235 修订),是 当前互联网的主流协议版本
- 默认长连接(持久连接) :默认开启
Connection: keep-alive,一个 TCP 连接可复用,处理多个 HTTP 请求 / 响应,彻底消除了连接建立 / 关闭的开销,大幅提升并发性能。 - 必传
Host头部 :解决了虚拟主机问题,一台服务器可部署多个域名的网站(服务器通过Host字段区分不同域名),这是现代 Web 服务器的核心能力。 - 支持分块传输编码(
Transfer-Encoding: chunked) :无需提前知道响应体长度,支持动态生成内容(如流式数据、大文件下载),数据分块传输,末尾用0\r\n\r\n标识结束。 - 完善的缓存机制 :新增
Cache-Control(替代 HTTP/1.0 的Expires)、ETag/If-None-Match、Last-Modified/If-Modified-Since等字段,实现精准的缓存控制,降低带宽消耗。 - 管线化请求:同一个长连接上,客户端可连续发送多个请求,无需等待前一个请求的响应,提升 TCP 连接利用率。
- 字节范围请求(
Range) :支持断点续传和分块下载,客户端可请求资源的部分内容,服务器返回206 Partial Content状态码。 - 丰富的状态码和请求方法 :新增
PUT、DELETE、OPTIONS等方法,状态码扩充到 40+ 个,错误处理更精准。
核心优势:功能完善、兼容性好,是目前绝大多数 Web 服务的默认版本;核心缺陷 :存在 队头阻塞 问题 ------ 同一个 TCP 连接上,多个请求是串行执行的,若前一个请求响应缓慢,后续请求会被阻塞。
四、HTTP/2(2015 年,高性能二进制版本)
HTTP/2 是 HTTP/1.1 的高性能升级版 (RFC 7540),基于 Google 的 SPDY 协议优化而来,核心目标是 解决 HTTP/1.1 的队头阻塞问题,提升并发性能,核心特性如下:
- 二进制帧传输 :HTTP/1.x 是纯文本协议,HTTP/2 采用 二进制帧 作为基本传输单元,协议解析效率更高(二进制比文本解析更快、更节省带宽)。
- 多路复用 :核心特性------ 同一个 TCP 连接上,可同时传输多个请求 / 响应(每个请求 / 响应对应一个独立的「流」),流之间互不阻塞。即使某个流的响应缓慢,也不会影响其他流的传输,彻底解决了 HTTP/1.1 的队头阻塞问题。
- 头部压缩(HPACK 算法) :HTTP/1.x 的头部字段每次请求都会重复传输(如
User-Agent、Host),HTTP/2 通过 HPACK 算法对头部进行压缩,消除冗余字段,大幅减少头部传输体积。 - 服务器推送 :服务器可主动向客户端推送资源(如客户端请求
index.html时,服务器主动推送style.css、script.js),无需客户端手动请求,提升页面加载速度。 - 流优先级:客户端可给不同的流设置优先级,服务器优先处理高优先级的流(如页面核心 HTML 优先于图片)。
核心优势:性能远超 HTTP/1.1,支持更高并发;部署要求:大部分浏览器要求 HTTP/2 必须基于 TLS 加密(即 HTTPS),少数场景支持明文 HTTP/2,但应用较少。
五、HTTP/3(2022 年,基于 UDP 的新一代版本)
HTTP/3 是 HTTP 协议的最新版本 (RFC 9114),核心目标是 解决 TCP 协议本身的队头阻塞问题 ,采用 QUIC 协议 作为传输层协议(基于 UDP),核心特性如下:
- 基于 UDP 传输(QUIC 协议) :HTTP/1.x 和 HTTP/2 都基于 TCP,而 TCP 是字节流协议,存在 TCP 层的队头阻塞------ 同一个 TCP 连接上,若某个数据包丢失,所有后续数据包都要等待重传,导致阻塞。QUIC 基于 UDP,每个流独立传输,单个流的数据包丢失不会影响其他流,彻底解决了 TCP 层的队头阻塞。
- 更快的连接建立 :TCP 建立连接需要 3 次握手(明文)或 1-RTT(TLS 1.2)/ 0-RTT(TLS 1.3),而 QUIC 协议将 TCP 握手、TLS 握手、HTTP 握手 合并为一次,实现 0-RTT 或 1-RTT 的连接建立,大幅降低延迟。
- 兼容 HTTP/2 的核心特性:继承了 HTTP/2 的多路复用、头部压缩、服务器推送等特性,同时解决了 HTTP/2 基于 TCP 的队头阻塞问题。
- 连接迁移:基于连接 ID 标识连接,而非 TCP 的「IP + 端口」。当客户端网络切换(如从 WiFi 切换到 5G)时,无需重新建立连接,直接迁移连接,提升移动网络下的用户体验。
核心优势:延迟更低、抗丢包能力更强、移动网络适应性更好;局限性:部署成本较高(需要服务器支持 QUIC 协议),目前逐步在主流大厂(如谷歌、阿里云)推广。
各版本核心特性对比表
|----------|----------|------------|-------------------------|------------------|-----------------|
| 版本 | 发布时间 | 核心传输方式 | 核心优势 | 核心缺陷 | 适用场景 |
| HTTP/0.9 | 1991 | 纯文本 | 极简,仅传输 HTML | 功能单一,无扩展性 | 目前无 |
| HTTP/1.0 | 1996 | 纯文本 | 标准化,支持多资源类型、状态码 | 默认短连接,性能低 | 低早期 Web 服务(已淘汰) |
| HTTP/1.1 | 1999 | 纯文本 | 长连接、Host 头、缓存增强,兼容性好 | HTTP 层队头阻塞 | 绝大多数 Web 服务(主流) |
| HTTP/2 | 2015 | 二进制帧 | 多路复用、头部压缩,解决 HTTP 层队头阻塞 | TCP 层队头阻塞,依赖 TLS | 高性能 HTTPS 服务 |
| HTTP/3 | 2022 | QUIC(UDP) | 解决 TCP 层队头阻塞,连接建立快、支持迁移 | 部署成本高,兼容性待提升 | 高并发、低延迟、移动网络 |
版本演进核心逻辑总结
HTTP 协议的演进始终围绕 「提升性能、降低延迟、支持更高并发」 三大目标:
- 从短连接到长连接:HTTP/1.1 解决了连接开销问题;
- 从串行到多路复用:HTTP/2 解决了 HTTP 层的队头阻塞;
- 从 TCP 到 QUIC:HTTP/3 解决了 TCP 层的队头阻塞。