概述
Nginx 支持 QUIC 协议和 HTTP/3,提供更快的网络性能。
QUIC 和 HTTP/3 原理:
QUIC(Quick UDP Internet Connections)是一种基于 UDP 的传输协议,提供更低的连接建立延迟、改进的拥塞控制、连接迁移、多路复用等特性。HTTP/3 是基于 QUIC 的 HTTP 协议版本,提供更快的页面加载、更好的性能、解决 HTTP/2 的队头阻塞问题。
QUIC 和 HTTP/3 优势:
- 更低的连接建立延迟:QUIC 支持 0-RTT 连接建立,大大减少了连接建立时间
- 改进的拥塞控制:QUIC 改进了拥塞控制算法,提高网络性能
- 连接迁移:QUIC 支持连接迁移,客户端可以在不同网络之间切换而不中断连接
- 多路复用:QUIC 支持多路复用,避免 HTTP/2 的队头阻塞问题
- 更快的页面加载:HTTP/3 基于 QUIC,提供了更低的连接建立延迟和更好的性能
- 更好的性能:HTTP/3 避免了 HTTP/2 的队头阻塞问题,提供了更好的性能
QUIC 协议详解
QUIC 协议架构
QUIC 协议架构分为三层:
- 传输层:提供可靠的、有序的、基于数据报的传输
- 加密层:提供端到端的加密和认证
- 应用层:提供 HTTP/3 等应用协议
QUIC 连接建立
QUIC 连接建立过程:
- 客户端发送 ClientHello:客户端发送 ClientHello 消息,包含客户端支持的加密套件、密钥交换参数等
- 服务器发送 ServerHello:服务器发送 ServerHello 消息,包含服务器选择的加密套件、密钥交换参数等
- 客户端发送 Finished:客户端发送 Finished 消息,确认连接建立
- 服务器发送 Finished:服务器发送 Finished 消息,确认连接建立
QUIC 0-RTT 连接建立
QUIC 0-RTT 连接建立过程:
- 客户端发送早期数据:客户端在连接建立过程中发送早期数据
- 服务器处理早期数据:服务器处理早期数据,并返回响应
QUIC 连接迁移
QUIC 连接迁移过程:
- 客户端检测网络变化:客户端检测网络变化,如从 Wi-Fi 切换到 4G
- 客户端发送新的路径挑战:客户端发送新的路径挑战,验证新路径
- 服务器响应路径挑战:服务器响应路径挑战,确认新路径
- 客户端切换到新路径:客户端切换到新路径,继续使用旧连接
QUIC 多路复用
QUIC 多路复用原理:
- QUIC 使用流(Stream):QUIC 使用流(Stream)来传输数据,每个流是独立的、有序的、可靠的
- QUIC 流互不阻塞:QUIC 流互不阻塞,一个流的丢包不会影响其他流
- QUIC 流可以并发传输:QUIC 流可以并发传输,提高传输效率
QUIC 拥塞控制
QUIC 拥塞控制原理:
- QUIC 使用可插拔的拥塞控制算法:QUIC 使用可插拔的拥塞控制算法,如 Cubic、BBR 等
- QUIC 拥塞控制基于流:QUIC 拥塞控制基于流,每个流可以有不同的拥塞控制算法
- QUIC 拥塞控制更精确:QUIC 拥塞控制更精确,可以更准确地检测网络拥塞
HTTP/3 协议详解
HTTP/3 协议架构
HTTP/3 协议架构分为三层:
- 传输层:使用 QUIC 协议
- 加密层:使用 QUIC 加密层
- 应用层:使用 HTTP/3 协议
HTTP/3 请求流程
HTTP/3 请求流程:
- 客户端发送请求:客户端发送 HTTP/3 请求
- 服务器处理请求:服务器处理 HTTP/3 请求
- 服务器返回响应:服务器返回 HTTP/3 响应
HTTP/3 多路复用
HTTP/3 多路复用原理:
- HTTP/3 使用 QUIC 流:HTTP/3 使用 QUIC 流来传输数据
- HTTP/3 流互不阻塞:HTTP/3 流互不阻塞,一个流的丢包不会影响其他流
- HTTP/3 流可以并发传输:HTTP/3 流可以并发传输,提高传输效率
HTTP/3 0-RTT 请求
HTTP/3 0-RTT 请求原理:
- 客户端发送早期请求:客户端在连接建立过程中发送早期请求
- 服务器处理早期请求:服务器处理早期请求,并返回响应
HTTP/3 连接迁移
HTTP/3 连接迁移原理:
- HTTP/3 使用 QUIC 连接迁移:HTTP/3 使用 QUIC 连接迁移,客户端可以在不同网络之间切换而不中断连接
- HTTP/3 连接迁移对应用透明:HTTP/3 连接迁移对应用透明,应用不需要关心连接迁移
QUIC 和 HTTP/3 对比
| 特性 | QUIC | HTTP/3 |
|---|
| 协议层 | 传输层 | 应用层 |
| 传输协议 | UDP | QUIC |
| 加密 | 内置加密 | 使用 QUIC 加密 |
| 多路复用 | 支持 | 支持 |
| 连接迁移 | 支持 | 支持 |
| 0-RTT | 支持 | 支持 |
| 拥塞控制 | 支持 | 使用 QUIC 拥塞控制 |
QUIC 和 HTTP/2 对比
| 特性 | HTTP/2 | HTTP/3 |
|---|
| 传输协议 | TCP | QUIC |
| 加密 | 可选 | 内置 |
| 多路复用 | 支持 | 支持 |
| 队头阻塞 | 存在 | 不存在 |
| 连接迁移 | 不支持 | 支持 |
| 0-RTT | 不支持 | 支持 |
| 拥塞控制 | TCP 拥塞控制 | QUIC 拥塞控制 |
相关章节
- [QUIC 协议](12.1-QUIC 协议.md)
- [HTTP/3 协议](12.2-HTTP3 协议.md)
- [配置 QUIC](12.3-配置 QUIC.md)
- [配置 HTTP/3](12.4-配置 HTTP3.md)
- 性能优化