✅HTTP不同版本之间的区别?
典型回答
前面两篇文章分别介绍了HTTP 1.X、2和3的特性,这一篇是把3个放一起比较一下。
| 特性/版本 | HTTP/0.9 | HTTP/1.0 | HTTP/1.1 | HTTP/2 | HTTP/3 |
|---|---|---|---|---|---|
| 发布年份 | 1991 | 1996 | 1997 | 2015 | 2022 |
| 多路复用 | ❌ | ❌ | ❌ | ✅ | ✅ |
| 连接复用 | ❌ | ❌ | ✅(Keep-Alive) | ✅ | ✅ |
| 二进制格式 | ❌ | ❌ | ❌ | ✅ | ✅ |
| 首部压缩 | ❌ | ❌ | ❌ | ✅(HPACK) | ✅(QPACK) |
| 服务器推送 | ❌ | ❌ | ❌ | ✅ | ⚠️ 被移除(多数实现不支持) |
| 使用协议 | TCP | TCP | TCP | TCP | QUIC (UDP) |
| 延迟优化 | ❌ | ❌ | 部分支持 | 很好 | 最佳(支持 0-RTT) |
| 明文/加密 | 明文 | 明文 | 明文 | 可加密(常用 TLS) | 强制加密(TLS over QUIC) |
HTTP/1.1(目前仍广泛使用)
- 默认启用 Keep-Alive(连接复用)。
HTTP/2
- 使用 二进制帧格式,更高效。
- 支持 多路复用(多个请求并发共用一个 TCP 连接,避免队头阻塞)。
- 支持 头部压缩(HPACK)。
- 支持 服务端推送(Server Push)。
缺点:仍然基于 TCP,存在队头阻塞(Head-of-Line Blocking)。
HTTP/3(最新)
- 使用 QUIC 协议(基于 UDP)替代 TCP。
- 消除了 TCP 层的队头阻塞。
- 支持 0-RTT 建连,极大降低连接延迟。
- 更安全:强制加密传输。
- 更适应现代网络(如移动网络、弱网)。
缺点:实现复杂性高,对中间设备兼容性要求更高。