返回文章列表

文章

从What、Why、When和How等角度阐述QUIC

目录
  1. 1️⃣ What:QUIC 是什么?
  2. 并且 额外集成了 TLS 1.3(这是关键差异点)。
  3. 2️⃣ Why:为什么要 QUIC?
  4. 2.1 TCP 的核心痛点
  5. ❌ 1. 连接建立慢(RTT 多)
  6. 在移动网络 / 跨国网络下,这个延迟是灾难性的。
  7. ❌ 2. 队头阻塞(Head-of-Line Blocking)
  8. ❌ 3. 内核协议,演进极慢
  9. 2.2 QUIC 的设计目标
  10. 3️⃣ When:什么时候该用 QUIC?
  11. 3.1 QUIC 适合的场景
  12. ✅ Web 访问(HTTP/3)
  13. ✅ 移动网络 / 弱网环境
  14. ✅ 实时应用
  15. 3.2 不适合 QUIC 的场景
  16. ❌ 内网高可靠、低延迟
  17. ❌ 老旧网络设备
  18. 4️⃣ How:QUIC 是怎么做到的?
  19. 这是技术精华部分。
  20. 4.1 基于 UDP,但“不是 UDP”
  21. 4.2 流级别的多路复用(无队头阻塞)
  22. ➡ 真正解决了 HTTP/2 over TCP 的队头阻塞
  23. 4.3 连接建立:1-RTT / 0-RTT
  24. 4.4 Connection ID:连接 ≠ 五元组
  25. 4.5 强制加密(TLS 1.3 内建)
  26. 5️⃣ 一句话总结

1️⃣ What:QUIC 是什么?#

QUIC(Quick UDP Internet Connections) 是一种 基于 UDP 的传输层协议,最早由 Google 提出,后来标准化为 IETF QUIC,并作为 HTTP/3 的底层传输协议。 一句话定义:

QUIC = 在 UDP 之上实现的、集成了可靠传输 + 拥塞控制 + TLS 加密的“用户态传输协议” 它本质上做了三件事:

TCP 负责的QUIC 也负责
可靠性(重传、有序)
拥塞控制
流量控制
连接管理

并且 额外集成了 TLS 1.3(这是关键差异点)。#

2️⃣ Why:为什么要 QUIC?#

这是核心问题:TCP 不行了吗? 答案是:TCP 在现代互联网场景下“太慢、太僵硬、太难改”

2.1 TCP 的核心痛点#

❌ 1. 连接建立慢(RTT 多)#

以 HTTPS 为例:

TCP 三次握手     -> 1 RTT
TLS 握手        -> 1~2 RTT
HTTP 请求开始   -> 至少 2~3 RTT

在移动网络 / 跨国网络下,这个延迟是灾难性的。#

❌ 2. 队头阻塞(Head-of-Line Blocking)#

TCP 是 字节流

丢了一个包 → 后面的全部等着

即使是不同 HTTP 请求,也会互相拖累。

HTTP/2 虽然有多路复用,但底层还是 TCP,一丢包全卡。


❌ 3. 内核协议,演进极慢#

TCP 在 操作系统内核

  • 改一个算法 → 升级内核
  • 中间盒(NAT、防火墙)“假设 TCP 行为” ➡ 创新几乎不可能

2.2 QUIC 的设计目标#

QUIC 的目标非常明确:

把 TCP + TLS + HTTP/2 的痛点一次性解决 具体来说:

目标对应手段
减少 RTT0-RTT / 1-RTT 建连
消除队头阻塞流级别可靠性
更快演进用户态 + UDP
更安全强制加密(TLS 1.3)
移动友好Connection ID

3️⃣ When:什么时候该用 QUIC?#

3.1 QUIC 适合的场景#

一句话:高延迟、高丢包、强实时性、跨网络切换 典型场景:

✅ Web 访问(HTTP/3)#

  • Google
  • Cloudflare
  • YouTube
  • Facebook

QUIC + HTTP/3 已经是“事实标准”


✅ 移动网络 / 弱网环境#

  • 4G / 5G
  • 地铁、电梯
  • WiFi ↔ 蜂窝切换

✅ 实时应用#

  • 实时音视频(WebRTC)
  • 在线游戏
  • 远程桌面

3.2 不适合 QUIC 的场景#

理性说,它不是银弹

❌ 内网高可靠、低延迟#

  • 数据中心内部
  • RDMA / TCP already fine

❌ 老旧网络设备#

  • UDP 被限流 / 丢弃
  • 企业防火墙

4️⃣ How:QUIC 是怎么做到的?#

这是技术精华部分。#

4.1 基于 UDP,但“不是 UDP”#

QUIC 只是借用了 UDP 的壳

应用
 └─ QUIC
     ├─ 可靠性
     ├─ 拥塞控制
     ├─ 流量控制
     ├─ 加密(TLS 1.3)
UDP
IP

UDP 的作用只有两个:

  • 绕过内核 TCP
  • 避开中间盒限制

4.2 流级别的多路复用(无队头阻塞)#

TCP:

一个字节流

QUIC:

多个 Stream(独立重传)

Stream A 丢包 ❌
Stream B、C 正常继续 ✅

真正解决了 HTTP/2 over TCP 的队头阻塞#

4.3 连接建立:1-RTT / 0-RTT#

协议首次连接
TCP + TLS2~3 RTT
QUIC1 RTT
QUIC(已缓存)0 RTT

0-RTT:客户端直接带数据发请求 (代价是要处理重放攻击)


4.4 Connection ID:连接 ≠ 五元组#

TCP 连接绑定:

(src IP, src port, dst IP, dst port)

QUIC 使用:

Connection ID

结果:

  • 手机从 WiFi 切到 5G
  • IP / Port 变化
  • 连接不断 ➡ 对移动设备是“质变级提升”

4.5 强制加密(TLS 1.3 内建)#

QUIC 的特点:

  • 没有明文模式
  • 包头可见极少信息
  • 中间设备无法篡改 安全性和一致性远高于 TCP + TLS 拼装方案。

5️⃣ 一句话总结#

QUIC 是一个在 UDP 之上、用户态实现的现代传输协议,通过流级多路复用、快速建连、连接迁移和内建 TLS,系统性解决了 TCP 在高延迟、弱网和移动场景下的性能与演进问题,并成为 HTTP/3 的基础。