http的发展史
HTTP(HyperText Transfer Protocol,超文本传输协议)是用于在 Web 上传输数据的协议。自从 1990 年代初期首次引入以来,HTTP 已经经历了多个版本的演变和改进。以下是 HTTP 的发展历史:
HTTP/0.9
- 引入时间: 1991 年
- 特点:
- 最初的 HTTP 版本,设计非常简单。
- 仅支持 GET 请求。
- 没有 HTTP 头部,服务器响应仅包含纯文本内容。
- 主要用于传输 HTML 文档。
HTTP/1.0
- 引入时间: 1996 年
- 特点:
- 引入了 HTTP 头部,支持更多的请求方法(如 POST 和 HEAD)。
- 支持 MIME 类型,使得传输的内容不仅限于纯文本。
- 每个请求/响应对使用一个独立的 TCP 连接,导致连接开销较大。
HTTP/1.1
- 引入时间: 1997 年
- 特点:
- 持久连接(Persistent Connections):默认情况下,连接在多个请求/响应对之间保持打开状态,减少了连接开销。
- 管道化(Pipelining):允许在同一个连接上同时发送多个请求,而不必等待前一个请求的响应。
- 增加了更多的请求方法(如 PUT、DELETE、OPTIONS 等)。
- 支持分块传输编码(Chunked Transfer Encoding),允许服务器在响应内容长度未知时逐块发送数据。
- 增强了缓存控制和虚拟主机支持。
HTTP/2
- 引入时间: 2015 年
- 特点:
- 二进制协议:HTTP/2 使用二进制格式传输数据,而不是 HTTP/1.x 的文本格式,提高了传输效率。
- 多路复用(Multiplexing):在一个 TCP 连接上同时发送多个请求和响应,消除了 HTTP/1.x 中的队头阻塞问题。
- 头部压缩(Header Compression):使用 HPACK 算法压缩 HTTP 头部,减少了传输的数据量。
- 服务器推送(Server Push):允许服务器在客户端请求之前主动推送资源,提高了页面加载速度。
HTTP/3
- 引入时间: 2020 年(草案阶段)
- 特点:
- 基于 QUIC 协议:HTTP/3 使用基于 UDP 的 QUIC 协议,而不是基于 TCP 的 HTTP/2,提供了更快的连接建立和更好的性能。
- 多路复用:与 HTTP/2 类似,HTTP/3 也支持多路复用,但由于 QUIC 的特性,进一步减少了延迟和队头阻塞问题。
- 内置加密:QUIC 协议内置了 TLS 加密,提供了更高的安全性。
发展历程总结
- HTTP/0.9: 最初的简单协议,仅支持 GET 请求。
- HTTP/1.0: 引入了 HTTP 头部和更多的请求方法,但每个请求/响应对使用独立的 TCP 连接。
- HTTP/1.1: 引入持久连接和管道化,增强了缓存控制和虚拟主机支持,成为最广泛使用的 HTTP 版本。
- HTTP/2: 使用二进制协议、多路复用、头部压缩和服务器推送,提高了传输效率和性能。
- HTTP/3: 基于 QUIC 协议,提供了更快的连接建立和更好的性能,进一步减少了延迟和队头阻塞问题。