李锋镝的博客

  • 首页
  • 时间轴
  • 说说
  • 读书观影
  • 系列
  • AI工具集
  • 论坛
  • 友圈
    • 友链
    • 朋友圈
    • 游客中心
  • 留言
    • 留言
    • 走心评论
  • 关于
    • 关于本站
    • Now
    • 每日心情
    • 网站地图
    • 网站统计
    • 赞助
  • 星球穿梭
  • 🚇开往
静亦定 动亦定
惟坚韧者始能遂其志
  1. 首页
  2. 中间件
  3. 正文

HTTP3与QUIC详解

2025年12月17日 364 0 4
本文最后更新于 2025年12月17日,距今已 324 天,其中的信息可能已经发生变化,请注意甄别。

HTTP3基于QUIC实现传输层革新,彻底解决HTTP1/HTTP2的TCP层瓶颈;QUIC是UDP上的可靠传输+加密+多路复用综合体,HTTP3则适配其特性优化应用层传输。以下从协议原理、核心细节、全面对比、部署与兼容等维度展开,深度解析并对比四代协议。


一、HTTP1(1.0/1.1)

HTTP1是基于TCP的文本协议,1.0(1996)与1.1(1999)是核心版本,奠定HTTP生态基础但存在诸多性能瓶颈。

核心特性与原理

  1. 传输层依赖TCP:严格基于TCP,需完成三次握手(3RTT),HTTPS场景还需额外TLS握手(2-3RTT),冷启动延迟高。
  2. 文本传输与无帧结构:数据以纯文本传输,解析效率低,无统一帧格式,扩展性差。
  3. 连接模型
    • 1.0默认短连接,每个请求/响应后关闭连接,建立连接开销大。
    • 1.1引入Connection: keep-alive持久连接,默认复用TCP连接,减少建连次数;支持管道化(Pipelining),可连续发送请求,但需按序响应,仍存在严重队头阻塞。
  4. 多路复用能力缺失:无法在单连接并行处理请求,浏览器通常限制6-8个并发TCP连接,资源加载效率低。
  5. 头部冗余:每次请求重复发送大量相同头部(如Cookie、User-Agent),无压缩机制,带宽浪费严重。
  6. 安全性:加密可选,HTTP明文传输易被窃听/篡改,HTTPS需额外配置TLS,部署成本高。

核心瓶颈

  • 队头阻塞:单连接串行响应,一个请求阻塞会导致后续请求全部排队。
  • 高建连延迟:TCP+TLS握手需3-4RTT,首屏加载慢。
  • 连接数限制:并发连接数有限,资源并行加载受限。

二、HTTP2

HTTP2核心是“TCP上的二进制分帧+多路复用”,解决HTTP1的应用层问题,但未触及TCP传输层瓶颈。

核心特性与原理

  1. 二进制分帧层:所有数据拆分为9字节头部+数据的二进制帧,帧类型包括HEADERS、DATA、PRIORITY、PUSH_PROMISE等,解析高效、扩展灵活。
  2. 单连接多路复用:单TCP连接内支持多个独立流(Stream),每个流有唯一ID,请求/响应可交错传输,应用层无队头阻塞。
  3. HPACK头部压缩:结合静态表(预定义常用头部)、动态表(缓存运行时头部)和哈夫曼编码,大幅减少头部冗余,压缩率可达70%+。
  4. 服务器推送(Server Push):通过PUSH_PROMISE帧主动推送关联资源(如HTML关联的CSS/JS),减少请求往返。
  5. 流优先级与流量控制:可通过PRIORITY帧指定流优先级,关键资源优先传输;基于窗口机制实现连接级流量控制。

核心瓶颈

  • 传输层队头阻塞:TCP丢包会导致整个连接上的所有流阻塞(TCP按字节有序传输,丢包需等待重传),弱网环境下性能骤降。
  • 依赖TCP:仍受TCP三次握手、拥塞控制保守等问题影响,建连延迟无本质优化。
  • 加密非强制:虽主流浏览器仅支持HTTPS下的HTTP2,但协议本身未强制加密,存在安全隐患。

三、QUIC协议(HTTP3的传输层基石)

QUIC(Quick UDP Internet Connections,RFC 9000)是UDP上的可靠传输协议,融合TCP可靠性、TLS安全性与多路复用能力,解决TCP固有缺陷。

核心架构与原理

  1. 基于UDP,用户态实现:规避TCP内核态迭代慢的问题,协议更新灵活;通过UDP端口53/443等传输,穿透防火墙更友好。
  2. 连接标识机制:用64位连接ID(Connection ID)标识连接,而非TCP四元组(IP+端口),支持连接迁移(如Wi‑Fi切4G时无缝续传)。
  3. 快速握手与内置加密
    • 首次连接:1RTT完成握手+TLS 1.3加密协商(合并TCP三次握手与TLS握手流程)。
    • 复用连接:支持0‑RTT,客户端缓存会话票据(Session Ticket),后续连接无需握手即可发送数据。
    • 强制加密:全程使用TLS 1.3,协议头部与数据均加密,无明文传输,抵御中间人攻击。
  4. 流模型与队头阻塞消除
    • 每个连接可创建多个双向/单向流,流独立编号、独立序列号空间。
    • 单流丢包仅影响自身,其他流正常传输,彻底解决传输层+应用层队头阻塞。
  5. 数据包与帧结构
    • 数据包:包含Flags、Connection ID、版本、Packet Number(单调递增,支持乱序确认)和加密数据。
    • 帧类型:Stream帧(传输数据)、ACK帧(确认接收)、Window_Update帧(流控)等。
  6. 拥塞与流量控制优化
    • 拥塞控制:默认Cubic/BBR,支持可插拔算法,适配不同网络场景。
    • 流量控制:连接级+流级双重控制,每个流独立管理接收窗口,避免单一流占用过多带宽。
  7. 丢包恢复机制:支持前向纠错(FEC),通过冗余数据恢复少量丢包;快速重传与乱序确认,减少重传延迟。

四、HTTP3

HTTP3是“QUIC上的HTTP”,保留HTTP核心语义,适配QUIC特性重构传输层交互,彻底解决前两代协议的传输层瓶颈。

核心特性与原理

  1. 传输层绑定QUIC:抛弃TCP,直接基于QUIC流模型传输,流ID映射HTTP请求/响应,单个流对应一个HTTP事务。
  2. QPACK头部压缩:优化HPACK的缺陷,适配QUIC的无队头阻塞特性,采用双向流独立管理动态表,避免HPACK中动态表更新导致的阻塞问题。
  3. 帧结构简化:去除HTTP2中适配TCP的帧类型(如优先级帧、窗口更新帧),保留核心帧(DATA、HEADERS、SETTINGS、PUSH_PROMISE等),适配QUIC原生流控与加密。
  4. 协议协商与降级:通过ALPN协商HTTP3支持,不支持则降级到HTTP2/1;使用Alt‑Svc头部告知客户端支持QUIC的端口与版本。
  5. 兼容HTTP生态:GET/POST、状态码、URI等核心语义不变,现有应用无需大幅修改即可适配。

核心优势

  • 彻底无队头阻塞:QUIC流隔离机制,单流丢包不影响其他流。
  • 超低建连延迟:1‑RTT冷启动,0‑RTT热启动,比HTTP2快50%+。
  • 连接迁移:网络切换无感知,提升移动场景体验。
  • 强制安全:TLS 1.3内置,无安全漏洞。

四、HTTP1/HTTP2/HTTP3+QUIC 全面对比

对比维度 HTTP1(1.1) HTTP2 HTTP3(基于QUIC) QUIC(传输层)
传输层基础 TCP TCP QUIC(基于UDP) UDP(可靠传输封装)
队头阻塞 严重(应用层+传输层) 应用层无,传输层有(TCP丢包阻塞) 无(QUIC流独立隔离) 无(流级独立传输)
握手延迟 TCP三次握手(1RTT)+ TLS四次握手(2RTT),共3-4RTT 同HTTP1 1RTT(首次),0RTT(复用会话) 1RTT(首次),0RTT(复用会话)
连接标识 IP+端口 IP+端口 连接ID(64位) 连接ID(64位)
连接迁移 不支持 不支持 支持(无缝切换网络) 支持(核心特性)
加密特性 可选(HTTP明文,HTTPS需TLS) 推荐HTTPS,非强制 强制TLS 1.3,全程加密 强制TLS 1.3,内置加密
多路复用 无(多连接并行,限制6-8个) 单TCP连接多流并行(应用层) QUIC多流并行(传输层+应用层) 单连接多流独立传输
头部压缩 无 HPACK QPACK(适配QUIC,无阻塞) 适配QPACK,流级动态表管理
服务器推送 无 支持(PUSH_PROMISE) 支持(适配QUIC流) 支持(单向流实现)
拥塞控制 依赖TCP(Cubic等) 依赖TCP 可插拔(BBR/Cubic),流级优化 可插拔算法,拥塞信号更精准
流量控制 TCP连接级 HTTP2连接级+流级 QUIC流级独立控制 流级独立流量控制
部署成本 低(无额外配置) 中(需TLS+ALPN) 高(需QUIC网关/服务器支持) 高(需客户端/服务器适配)
弱网表现 差(TCP重传慢,阻塞扩散) 中等(受TCP丢包影响) 优(快速重传,流隔离) 优(FEC+快速重传,连接稳定)

五、核心总结与实践建议

  1. 协议演进逻辑:HTTP1解决“无持久连接”,HTTP2解决“应用层队头阻塞”,HTTP3+QUIC解决“传输层瓶颈”,核心是从应用层优化走向传输层革新。
  2. 场景适配
    • 低延迟/高可靠场景(直播、支付、实时通信、移动APP):优先用HTTP3。
    • 静态资源服务:HTTP2过渡,逐步升级HTTP3。
    • 旧设备兼容:必须支持HTTP3+HTTP2+HTTP1降级。
  3. 部署要点
    • 服务器:Nginx 1.25+内置QUIC支持,Cloudflare/AWS等CDN默认支持HTTP3。
    • 客户端:Chrome/Firefox/Safari最新版均支持,iOS 15+/Android 11+适配良好。
    • 协议协商:通过Alt‑Svc头部与ALPN实现多协议兼容。
本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可
分享到

HTTP3与QUIC详解

也可使用浏览器菜单中的「分享」功能

微信扫一扫分享

标签: http http/2 http3 QUIC
最后更新:2025年12月17日

岁月同一天 11 月 6 日

回望过去的今天,你在写什么

  • AI
    1 年前 2025年11月6日
    AI能写代码,却造不出软件:软件工程的核心竞争力从未改变

    “我用AI拼了个Demo,就差上线了,能帮我变成产品吗?” 最近越来越多非技术从业者带着这样的需求找上门——他们可能是律…

  • 代码人生
    1 年前 2025年11月6日
    西蒙学习法实战指南:6个月攻克新领域,从入门到能用的高效路径

    作为IT从业者,我们每天都面临新技术的冲击——今天是AI大模型,明天是云原生,后天是低代码开发。有限的时间与无限的学习需…

  • AI
    1 年前 2025年11月6日
    从Token到计费:大模型背后的文本编码逻辑与商业本质

    你是否有过这样的困惑?——给大模型发一段500字的中文需求,却被扣除了800多个Token;同样一篇文章,在GPT-4中…

  • 6 年前 2020年11月6日
    8条经验轻松上手IDEA插件开发

    IDEA作为我们(后端Java开发者)必不可少的IDE,以其智能的代码提示、多样的框架支持、简洁的开发界面等特性,被业界…

  • 其他
    7 年前 2019年11月6日
    架构师究竟比高级开发厉害在哪?

    目前我在互联网公司里干了1年多,接触了多位技术和业务的架构师,由于我正在升级到架构师,所以能直观地感受到高级开发和架构的…

  • 转载
    7 年前 2019年11月6日
    如何在面试中介绍自己的项目经验

    在面试时,经过寒暄后,一般面试官会让介绍项目经验 。常见的问法是,说下你最近的(或最拿得出手的)一个项目。 根据我们的面…

相关文章
  • 宝塔面板NGINX开启http32026年8月31日
  • HTTP和HTTPS协议2019年8月15日
  • Spring HTTP客户端演进:从RestTemplate到WebClient与RestClient2025年10月29日
  • 网站升级到http/22021年4月8日
  • 探讨全球多站点跨机房数据传输场景下QUIC协议的优劣2025年6月25日

李锋镝

既然选择了远方,便只顾风雨兼程。

打赏 点赞
< 上一篇
下一篇 >
1234567891112131415161718192021222324252627282930313233343536373839404142434446474849505152535455575859606162636465666769727476777879808182858687909293949596979899
取消回复
…

文章评论

  • klcdmLv 1

    学到了,这些东西正好不太了解。、
    缺少很多关于服务器网站安全方面的知识

    WindowsWindowsChrome 121.0.0.0Chrome 121.0.0.0中国中国-广东-湛江
    2025年12月22日
    00 回复
    • 李锋镝博主

      @klcdm 能帮助到大家就好

      macOSmacOSChrome 142.0.0.0Chrome 142.0.0.0中国中国-北京
      2025年12月22日
      00 回复
  • ACEVSLv 1

    专业~

    WindowsWindowsChrome 143.0.0.0Chrome 143.0.0.0中国中国-山东-青岛
    2025年12月17日
    00 回复
    • 李锋镝博主

      @ACEVS :15:

      macOSmacOSChrome 142.0.0.0Chrome 142.0.0.0中国中国-北京
      2025年12月18日
      00 回复
  • 苟利国家生死以,岂因祸福避趋之。

    听点儿音乐吧 朋友~
    文章目录
    最新 热点 随机
    最新 热点 随机
    给服务器加了WAF 又一个逆天改命的人:小小徐 AI的生成能力等于生产力吗? NGINX严重漏洞(CVE-2026-15176、CVE-2026-93479、CVE-2026-97205) Kratos-plus v1.1.27更新说明 php2shell远程执行漏洞修复(CVE-2026-109618 和 CVE-2026-109619)
    给主题增加了游客中心功能心气没了,干什么都不得劲我觉得是时候公布我的导航网站了给服务器加了WAF游本昌去世关于主题加载速度优化的一点儿小演进
    n8n深度解析:可视化编排与灵活拓展的双引擎驱动 宝塔面板NGINX开启http3 Java浮点数运算 居住证签注... php2shell远程执行漏洞修复(CVE-2026-109618 和 CVE-2026-109619) 是时候优雅的和NullPointException说再见了
    最近评论
    fairy 发布于 2 小时前(11月06日) 机器人快来我这里吧!
    李锋镝 发布于 2 小时前(11月06日) 都是机器人,防不住
    李锋镝 发布于 2 小时前(11月06日) 是的,太烦了
    李锋镝 发布于 2 小时前(11月06日) 可以同一台服务器
    fairy 发布于 4 小时前(11月06日) 这流量,好厉害啊。我一年都没那么多
    标签聚合
    ElasticSearch 多线程 日常 Spring IDEA 架构 Claude MySQL WordPress SpringBoot JAVA JVM 数据库 AI编程 Redis 分布式 SQL K8s Theme AI
    友情链接
    • 懋和道人
    • Mr.Sun的博客
    • 老张博客
    • Honesty
    • 知向前端
    • 林羽凡
    • lijie blog
    • 志文工作室
    • 韩情脉脉
    • 九仞之行
    • 皮皮社
    • sssr7844的博客
    • 彬红茶日记
    • Serendipity
    • 搬砖日记
    • 韩小韩博客
    • 哥斯拉
    • 刘永博客
    • 瓦匠个人小站

    COPYRIGHT © 2016-2026 lifengdi.com. ALL RIGHTS RESERVED.

    lifengdi.com 十年之约虫洞

    Domain age badge for lifengdi.com

    Theme Kratos-plus By Dylan Li

    津ICP备2024022503号-3

    京公网安备11011502039375号