浏览器工作原理与实践
李兵
前盛大创新院高级研究员
56402 人已学习
新⼈⾸单¥59
登录后,你可以任选4讲全文学习
课程目录
已完结/共 46 讲
浏览器工作原理与实践
15
15
1.0x
00:00/00:00
登录|注册

31|HTTP/3:甩掉TCP、TLS 的包袱,构建高效网络

HTTP/3面临的挑战
HTTP/3性能改进
中间设备僵化
部署问题
服务器和浏览器端支持
快速握手功能
集成了TLS加密功能
类似TCP的功能
UDP协议
绕过TCP协议
操作系统导致TCP协议僵化
中间设备僵化
握手延迟
RTT
队头阻塞影响传输效率
HTTP/2传输多路请求
TCP协议僵化
TCP建立连接的延时
TCP队头阻塞
头部压缩、服务器推送
多路复用技术
解决HTTP/1问题
总结
HTTP/3的挑战
QUIC协议
TCP协议僵化
TCP建立连接的延时
TCP队头阻塞
HTTP/2
HTTP/3

该思维导图由 AI 生成,仅供参考

前面两篇文章我们分析了 HTTP/1 和 HTTP/2,在 HTTP/2 出现之前,开发者需要采取很多变通的方式来解决 HTTP/1 所存在的问题,不过 HTTP/2 在 2018 年就开始得到了大规模的应用,HTTP/1 中存在的一大堆缺陷都得到了解决。
HTTP/2 的一个核心特性是使用了多路复用技术,因此它可以通过一个 TCP 连接来发送多个 URL 请求。多路复用技术能充分利用带宽,最大限度规避了 TCP 的慢启动所带来的问题,同时还实现了头部压缩、服务器推送等功能,使得页面资源的传输速度得到了大幅提升。在 HTTP/1.1 时代,为了提升并行下载效率,浏览器为每个域名维护了 6 个 TCP 连接;而采用 HTTP/2 之后,浏览器只需要为每个域名维护 1 个 TCP 持久连接,同时还解决了 HTTP/1.1 队头阻塞的问题。
从目前的情况来看,HTTP/2 似乎可以完美取代 HTTP/1 了,不过 HTTP/2 依然存在一些缺陷,于是就有了 HTTP/3。和通常一样,介绍 HTTP/3 之前,我们先来看看 HTTP/2 到底有什么缺陷。

TCP 的队头阻塞

虽然 HTTP/2 解决了应用层面的队头阻塞问题,不过和 HTTP/1.1 一样,HTTP/2 依然是基于 TCP 协议的,而 TCP 最初就是为了单连接而设计的。你可以把 TCP 连接看成是两台计算机之前的一个虚拟管道,计算机的一端将要传输的数据按照顺序放入管道,最终数据会以相同的顺序出现在管道的另外一头。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

HTTP/3是一种新的网络传输协议,旨在解决HTTP/2存在的一些缺陷。相比HTTP/2,HTTP/3采用了基于UDP的新传输协议QUIC,绕过了TCP的队头阻塞和连接建立延迟等问题,从而提高了传输效率并能更快地建立连接和传输数据。该协议集成了类似TCP的流量控制、传输可靠性、TLS加密功能以及HTTP/2中的多路复用功能,同时实现了快速握手功能。然而,HTTP/3在实际应用中面临着严峻的挑战,包括服务器和浏览器端对其支持不完整、系统内核对UDP的优化程度不足以及中间设备对UDP的优化程度低等问题。尽管HTTP/3解决了TCP带来的问题,但由于改动了底层协议,其推广仍会面临巨大挑战。未来,HTTP/3的标准制定、实践和协议优化仍需走很长一段路,而其增长速度也会比HTTP/2缓慢许多。HTTP/3的性能改进主要体现在解决了TCP的内部问题,提高了传输效率和连接速度。然而,其面临的挑战主要来自于应用支持不完整、部署问题以及中间设备的优化程度不足。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《浏览器工作原理与实践》
新⼈⾸单¥59
立即购买
登录 后留言

全部留言(26)

  • 最新
  • 精选
  • 有铭
    我的看法:这些年但凡觉得TCP不满足自己需求的人,基本都是在UDP上重新“发明”一套自己的流控和包顺序控制算法。说白了吧,就是重新造轮子再做一个(自己认为)更好的TCP。只是这类型的协议,目前没有一个能真的威胁到TCP的,固然有老师说的TCP协议僵化存在的原因,但是我也在想:TCP就真的这么不堪吗
    2019-10-17
    4
    16
  • splm
    意思是H1.1到H2解决的队头阻塞,只是形式上的。因为这个问题本质上依旧没有解决,因为TCP特性就是这样的,是不是只要不摆脱TCP就意味着一直会有阻塞的问题?这个版本升级感觉更多的应该是减少长连接的个数,减少了带宽抢占,增加了资源优先级。而从H2到H3,骨子里就不想依赖TCP,使用UDP,并附上了TCP一些优秀特性,减少握手和增加可靠性。这是我对这几个版本迭代过程的理解。
    2019-10-24
    2
    13
  • Jack.Huang
    腾讯这篇文章讲http3,也讲的不错。https://mp.weixin.qq.com/s/iF0wbV5o7HVjGG_Cb-RcOg
    2020-06-26
    10
  • Geek_f74777
    能翻墙的同学推荐可以看看Revisiting HTTP2 https://youtu.be/wR1gF5Lhcq0
    2019-10-15
    1
    10
  • HucerF
    非科班的看起来都比较舒服,讲解的不错
    2020-06-17
    8
  • 刹那
    之前看的一知半解,现在把tcp协议学习了之后发现看起来轻轻好多,果然基础很重要啊
    2020-06-01
    3
  • LearnAndTry
    从http发展历程中也看到我们项目迭代的影子。 有好的优化方案往往因为历史包袱久久不能落地。改动越接近底层推动难度越大。 渐进式改动比较容易推行。
    2020-05-12
    3
  • xh
    tcp2会使用二进制分针层将请求分成一个一个帧,它和tcp将请求分成一个一个包有什么区别?帧还会分成多个包吗
    2022-01-20
    2
  • 撒哈拉
    http3 核心是要解决 TCP 数据包丢包严重时带来的性能问题。 基于 UDP,添加一个 QUICK 层,实现 TCP 所拥有的优点,流量控制,拥塞控制,数据包重传等特性;集成TLS加密,能更快的握手,支持多路复用,一个连接传送多路数据,缩短握手时间
    2021-11-15
    1
    1
  • neohope
    很多时候,重新设计,比在现有设计上做优化,更容易,也会更优雅。 但现实中经常遇到的是,推到重来的代价付不起,只能不断优化。 希望最终可以推动TCP-IP整个协议族的进步,逐步从根源上解决问题。
    2020-07-16
    1
收起评论
显示
设置
留言
26
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部