第11.10.3章: 现代网络协议
HTTP/1.1、HTTP/2 与 HTTP/3 的对比
| 特性 | HTTP/1.1 | HTTP/2 | HTTP/3 |
|---|---|---|---|
| 年份 | 1997 | 2015 | 2022 |
| 传输层 | TCP | TCP | QUIC(基于 UDP) |
| 二进制 | 文本 | 二进制 | 二进制 |
| 多路复用 | 不支持(队头阻塞) | 支持(TCP 上的流) | 支持(QUIC 上的流) |
| 头部压缩 | 无 | HPACK | QPACK |
| 服务器推送 | 无 | 支持 | 支持 |
| 连接迁移 | 无 | 无 | 支持(无缝切换网络) |
| 0-RTT 恢复 | 无 | 无 | 支持(更快的连接建立) |
QUIC(Quick UDP Internet Connections)
QUIC 是 Google 开发、由 IETF 标准化的传输层协议。它运行在 UDP 之上,提供:
- 更低的延迟 — 0-RTT 连接建立(对比 TCP 的三次握手)
- 没有队头阻塞 — 某个流中的丢包不会阻塞其他流
- 连接迁移 — 可以在 Wi-Fi 与蜂窝网络之间切换而不中断
- 内建加密 — TLS 1.3 集成在传输层
- 更好的拥塞控制 — 采用现代算法,比(位于内核中的)TCP 更容易演进
HTTP/3 用 QUIC 作为传输层。QUIC 也被 WebTransport 等其他协议使用。
WebSocket 与服务端发送事件
- WebSocket — 在单条 TCP 连接上的全双工通信。先以一个 HTTP 升级请求开始,之后双方都可以随时发送数据。用于聊天、实时更新、游戏。
- 服务端发送事件(SSE) — 服务器通过 HTTP 向客户端推送更新。比 WebSocket 简单,但只能服务端到客户端。用于新闻流、通知。