HTTP 协议的发展历史主要经历了 HTTP/0.9、HTTP/1.0、HTTP/1.1、HTTP/2 和 HTTP/3 等阶段,具体如下:
- HTTP/0.9:1990 年问世,最初的 HTTP 版本,没有正式版本号,后来为区分后续版本被称为 HTTP/0.9。它是一个 “单行协议”,请求报文只有单行文本,仅支持 GET 请求方法,只能传输 HTML 格式的文本,没有请求头、响应头和状态码等信息,功能非常有限,仅能满足早期万维网传输简单文本页面的基本需求。
- HTTP/1.0:1996 年 11 月,IETF 发布了 informational 文档 RFC 1945,正式描述了 HTTP/1.0。该版本引入了请求头和响应头的概念,增加了多种请求方法,如 POST、HEAD 等,同时支持传输更多类型的数据,不仅限于 HTML 文本。但 HTTP/1.0 每个请求都需要新建 TCP 连接,性能相对较低。
- HTTP/1.1:1997 年初,HTTP 工作组发布了第一个真正标准化的版本 HTTP/1.1(RFC 2068)。此版本引入了持久连接(keep - alive),默认长连接,使多个请求复用同一 TCP 连接,避免了反复建立连接的开销,提高了一定并发度。还支持流水线方式,允许同时发送多个请求,提高了传输效率。另外,HTTP/1.1 还引入了缓存控制、虚拟主机、分块传输编码等新特性,增强了协议的性能、灵活性和安全性,成为了多年来的主流协议。
- HTTP/2:2015 年正式标准化发布(RFC 7540)。HTTP/2 采用二进制协议取代了 HTTP/1.x 的文本协议,减少了解析复杂性。引入了多路复用特性,允许在一个 TCP 连接上同时处理多个请求,解决了 HTTP/1.1 中的队头阻塞问题,大幅提高了并发性能。同时,还使用头部压缩技术(HPACK)减少了数据传输量,进一步提高了效率,此外还支持服务器推送等功能。
- HTTP/3:2022 年正式发布(RFC 9114),也被非正式地称为 “HTTP over QUIC”,因为它基于 UDP 之上的 QUIC 协议,取代 TCP 作为传输层协议。HTTP/3 引入了 0 - RTT 握手,加快了连接建立速度,利用 QUIC 在传输层的革新,实现了更低的延迟和更强的抗丢包性能,对于移动网络、高延迟网络环境以及需要频繁建立连接的应用有显著的优化作用。并且 HTTP/3 保持向下兼容,若服务器不支持则自动回退到 HTTP/2 或 1.1 通信。