支持 QUIC 和 HTTP/3

概述

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 协议架构分为三层:

  1. 传输层:提供可靠的、有序的、基于数据报的传输
  2. 加密层:提供端到端的加密和认证
  3. 应用层:提供 HTTP/3 等应用协议

QUIC 连接建立

QUIC 连接建立过程:

  1. 客户端发送 ClientHello:客户端发送 ClientHello 消息,包含客户端支持的加密套件、密钥交换参数等
  2. 服务器发送 ServerHello:服务器发送 ServerHello 消息,包含服务器选择的加密套件、密钥交换参数等
  3. 客户端发送 Finished:客户端发送 Finished 消息,确认连接建立
  4. 服务器发送 Finished:服务器发送 Finished 消息,确认连接建立

QUIC 0-RTT 连接建立

QUIC 0-RTT 连接建立过程:

  1. 客户端发送早期数据:客户端在连接建立过程中发送早期数据
  2. 服务器处理早期数据:服务器处理早期数据,并返回响应

QUIC 连接迁移

QUIC 连接迁移过程:

  1. 客户端检测网络变化:客户端检测网络变化,如从 Wi-Fi 切换到 4G
  2. 客户端发送新的路径挑战:客户端发送新的路径挑战,验证新路径
  3. 服务器响应路径挑战:服务器响应路径挑战,确认新路径
  4. 客户端切换到新路径:客户端切换到新路径,继续使用旧连接

QUIC 多路复用

QUIC 多路复用原理:

  1. QUIC 使用流(Stream):QUIC 使用流(Stream)来传输数据,每个流是独立的、有序的、可靠的
  2. QUIC 流互不阻塞:QUIC 流互不阻塞,一个流的丢包不会影响其他流
  3. QUIC 流可以并发传输:QUIC 流可以并发传输,提高传输效率

QUIC 拥塞控制

QUIC 拥塞控制原理:

  1. QUIC 使用可插拔的拥塞控制算法:QUIC 使用可插拔的拥塞控制算法,如 Cubic、BBR 等
  2. QUIC 拥塞控制基于流:QUIC 拥塞控制基于流,每个流可以有不同的拥塞控制算法
  3. QUIC 拥塞控制更精确:QUIC 拥塞控制更精确,可以更准确地检测网络拥塞

HTTP/3 协议详解

HTTP/3 协议架构

HTTP/3 协议架构分为三层:

  1. 传输层:使用 QUIC 协议
  2. 加密层:使用 QUIC 加密层
  3. 应用层:使用 HTTP/3 协议

HTTP/3 请求流程

HTTP/3 请求流程:

  1. 客户端发送请求:客户端发送 HTTP/3 请求
  2. 服务器处理请求:服务器处理 HTTP/3 请求
  3. 服务器返回响应:服务器返回 HTTP/3 响应

HTTP/3 多路复用

HTTP/3 多路复用原理:

  1. HTTP/3 使用 QUIC 流:HTTP/3 使用 QUIC 流来传输数据
  2. HTTP/3 流互不阻塞:HTTP/3 流互不阻塞,一个流的丢包不会影响其他流
  3. HTTP/3 流可以并发传输:HTTP/3 流可以并发传输,提高传输效率

HTTP/3 0-RTT 请求

HTTP/3 0-RTT 请求原理:

  1. 客户端发送早期请求:客户端在连接建立过程中发送早期请求
  2. 服务器处理早期请求:服务器处理早期请求,并返回响应

HTTP/3 连接迁移

HTTP/3 连接迁移原理:

  1. HTTP/3 使用 QUIC 连接迁移:HTTP/3 使用 QUIC 连接迁移,客户端可以在不同网络之间切换而不中断连接
  2. HTTP/3 连接迁移对应用透明:HTTP/3 连接迁移对应用透明,应用不需要关心连接迁移

QUIC 和 HTTP/3 对比

特性QUICHTTP/3
协议层传输层应用层
传输协议UDPQUIC
加密内置加密使用 QUIC 加密
多路复用支持支持
连接迁移支持支持
0-RTT支持支持
拥塞控制支持使用 QUIC 拥塞控制

QUIC 和 HTTP/2 对比

特性HTTP/2HTTP/3
传输协议TCPQUIC
加密可选内置
多路复用支持支持
队头阻塞存在不存在
连接迁移不支持支持
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)
  • 性能优化