31|HTTP/3:甩掉TCP、TLS 的包袱,构建高效网络
李兵
该思维导图由 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
《浏览器工作原理与实践》,新⼈⾸单¥59
立即购买
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
登录 后留言
全部留言(26)
- 最新
- 精选
- 有铭我的看法:这些年但凡觉得TCP不满足自己需求的人,基本都是在UDP上重新“发明”一套自己的流控和包顺序控制算法。说白了吧,就是重新造轮子再做一个(自己认为)更好的TCP。只是这类型的协议,目前没有一个能真的威胁到TCP的,固然有老师说的TCP协议僵化存在的原因,但是我也在想:TCP就真的这么不堪吗2019-10-17416
- splm意思是H1.1到H2解决的队头阻塞,只是形式上的。因为这个问题本质上依旧没有解决,因为TCP特性就是这样的,是不是只要不摆脱TCP就意味着一直会有阻塞的问题?这个版本升级感觉更多的应该是减少长连接的个数,减少了带宽抢占,增加了资源优先级。而从H2到H3,骨子里就不想依赖TCP,使用UDP,并附上了TCP一些优秀特性,减少握手和增加可靠性。这是我对这几个版本迭代过程的理解。2019-10-24213
- Jack.Huang腾讯这篇文章讲http3,也讲的不错。https://mp.weixin.qq.com/s/iF0wbV5o7HVjGG_Cb-RcOg2020-06-2610
- Geek_f74777能翻墙的同学推荐可以看看Revisiting HTTP2 https://youtu.be/wR1gF5Lhcq02019-10-15110
- HucerF非科班的看起来都比较舒服,讲解的不错2020-06-178
- 刹那之前看的一知半解,现在把tcp协议学习了之后发现看起来轻轻好多,果然基础很重要啊2020-06-013
- LearnAndTry从http发展历程中也看到我们项目迭代的影子。 有好的优化方案往往因为历史包袱久久不能落地。改动越接近底层推动难度越大。 渐进式改动比较容易推行。2020-05-123
- xhtcp2会使用二进制分针层将请求分成一个一个帧,它和tcp将请求分成一个一个包有什么区别?帧还会分成多个包吗2022-01-202
- 撒哈拉http3 核心是要解决 TCP 数据包丢包严重时带来的性能问题。 基于 UDP,添加一个 QUICK 层,实现 TCP 所拥有的优点,流量控制,拥塞控制,数据包重传等特性;集成TLS加密,能更快的握手,支持多路复用,一个连接传送多路数据,缩短握手时间2021-11-1511
- neohope很多时候,重新设计,比在现有设计上做优化,更容易,也会更优雅。 但现实中经常遇到的是,推到重来的代价付不起,只能不断优化。 希望最终可以推动TCP-IP整个协议族的进步,逐步从根源上解决问题。2020-07-161
收起评论