HTTP1.0 — HTTP1.1 — HTTP2.0 — HTTP3.0发展概览
本文最后更新于128 天前,其中的信息可能已经过时,如有错误请发送邮件到1986413837@qq.com

HTTP(HyperText Transfer Protocol,超文本传输协议)是互联网应用层最重要的协议之一,它经历了从最初的简单、无状态到现在的高性能、安全、基于 UDP 的三次重大演变

每一次迭代都旨在解决前一版本在性能、并发和延迟方面的瓶颈

Ⅰ.HTTP1.0 : 构建可扩展性 (1996)

HTTP/1.0 是第一个得到广泛使用的 HTTP 版本。

核心特点与问题

特点/设计描述存在的问题
无状态 (Stateless)服务器不保留客户端的任何信息每次请求都需要携带完整的身份信息,增加开销
短连接 (Short-lived)每次 HTTP 请求/响应完成后,TCP 连接就会立即关闭每次请求都需要进行 TCP 三次握手,造成严重的网络延迟(Latency)
不支持 Host 头部一个 IP 地址只能对应一个域名(网站)无法在同一服务器上托管多个虚拟主机。
仅支持 GET/POST/HEAD请求方法有限灵活性较差

关键认知: HTTP/1.0 为每个资源请求都建立并关闭一个新的 TCP 连接,这是它最大的性能瓶颈

Ⅱ.HTTP1.1 : 标准化的协议 (1997)

HTTP/1.1 几乎与 1.0 版本同时期发布,目的是消除 1.0 中的歧义并解决其主要性能问题

改进点解决的问题/带来的好处关键实现机制
长连接 (Persistent Connections)避免每次请求都进行 TCP 握手和挥手,大大降低延迟引入 Connection: Keep-Alive(后成为默认行为)。TCP 连接在一个请求结束后保持打开,供后续请求复用
管道化 (Pipelining)允许客户端在收到前一个响应之前,就发送下一个请求理论上提升并发。实际中因“队头阻塞”问题难以广泛应用
队头阻塞 (Head-of-Line Blocking, HOL)在长连接中,如果一个请求的响应被阻塞,那么后续请求的响应也会被阻塞TCP 层面和 HTTP 层面都存在。客户端通常使用多开 TCP 连接来绕开此问题(如浏览器最多 6 个)
缓存机制提升资源加载速度,减少服务器压力引入 Cache-Control, Etag, If-None-Match 等头部
Host 头部允许多个域名共享同一个 IP 地址服务器可以根据 Host 头部区分不同的虚拟主机
断点续传支持大文件的分段传输引入 Range 头部

关键认知: HTTP/1.1 的长连接是其最大的性能突破,但队头阻塞低效的并发(需要多个 TCP 连接)成为新的瓶颈

Ⅲ.HTTP2.0 : 为了更优异的表现 (2015)

HTTP/2 基于 Google 的 SPDY 协议,核心目标是在不改变 HTTP 语义(如方法、状态码)的前提下,大幅提升性能

突破点描述解决的问题/带来的好处
二进制分帧 (Binary Framing)将 HTTP 消息封装成二进制的帧 (Frames),而非纯文本提高解析效率和传输效率
多路复用 (Multiplexing)一个 TCP 连接上,同时处理任意数量的请求和响应彻底解决了 HTTP/1.1 的 HOL 阻塞问题(在 HTTP 应用层)。消除了多 TCP 连接的开销
头部压缩 (Header Compression)使用 HPACK 算法压缩请求/响应头部,移除冗余信息减少传输数据量,尤其是对于包含大量 Cookie 的请求
服务器推送 (Server Push)服务器可以在客户端请求之前,主动向其推送所需资源减少客户端发起的请求数量,提前加载资源,优化用户体验

关键认知: HTTP/2 的 多路复用 是其核心。它在一个 TCP 连接上实现了并行传输,但底层的 TCP 协议自身的 HOL 阻塞问题依然存在

Ⅳ.HTTP3.0 : 基于 QUIC 的 HTTP (2022)

HTTP/3 放弃了 TCP,改用基于 UDP 协议QUIC 协议 作为底层传输协议,以彻底解决 TCP 带来的瓶颈

变革点描述解决的问题/带来的好处
基于 UDP 的 QUIC 协议QUIC 在 UDP 上实现了可靠传输、连接管理、流量控制等功能彻底解决了 TCP 协议层面的 HOL 阻塞。QUIC 内部的多条“流”相互独立,一条流的丢失不影响其他流
连接迁移 (Connection Migration)连接不再绑定 IP 地址和端口号当用户在 Wi-Fi 和 4G 间切换时,无需重新建立连接,连接可以保持
更快的连接建立 (0-RTT/1-RTT)集成了 TLS 加密和握手,通常只需一次往返(1-RTT)甚至零次往返(0-RTT)即可建立安全连接大幅减少了连接建立时间,优化了首次访问的延迟
内置加密QUIC 协议设计之初就强制使用 TLS 1.3 进行加密提升安全性,避免中间设备干扰协议

关键认知: HTTP/3 是一个革命性的进步,它通过更换底层传输协议(从 TCP 到 QUIC/UDP),彻底消除了底层协议导致的 HOL 阻塞,并在建立连接、连接迁移等方面带来了巨大优化

Ⅴ.总结对比

特性HTTP/1.0HTTP/1.1HTTP/2HTTP/3 (QUIC)
连接模型短连接,多次 TCP 握手/挥手长连接,多个 TCP 连接并行 TCP 连接,多路复用 UDP (QUIC) 连接,多流独立
队头阻塞严重(每次连接)存在(TCP 层和 HTTP 层)存在(在 TCP 层)基本解决(QUIC 流之间相互独立)
数据格式纯文本纯文本二进制二进制
头部处理无压缩无压缩HPACK 压缩QPACK 压缩
安全/加密默认不加密默认不加密 (可升级 HTTPS)默认推荐加密强制要求加密 (TLS 1.3)
底层协议TCPTCPTCPUDP

Life's a struggle, I'll conquer it.
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇