深入解读HTTP3的原理及应用

深入解读HTTP3的原理及应用

HTTP3是HTTP协议的最新版本。从诞生之初,HTTP就是交换超文本文档的首选应用层协议。多年来,为了跟上互联网的发展,以及WWW上交换的内容种类增加,HTTP进行了几次重大升级。
本文将深入探讨HTTP/3,介绍HTTP协议的演变历程,重点介绍HTTP/3的特点,并对HTTP/3将会带来的互联网变化提供新的视角。
在万维网诞生之时,万维网仅仅是一群交换超文本文件的计算机。在计算机之间交换文件是一个简单的程序,包括请求和响应。在此基础上设计了一个简单的基于文本的协议。HTTP(超文本传输协议)应运而生。后来,它被起草成了一个标准化的IETF协议,定义在RFC1945中,也被称为HTTP/1.0。
多年来,HTTP从HTTP/1.0发展到HTTP/1.1,再到HTTP/2。在每一次迭代中,协议都增加了新的功能,以处理大量的需求,如应用层需求、安全考虑、会话处理和媒体类型等。要深入了解HTTP/2及其从HTTP/1.0演变而来的HTTP/2,请看我们的HTTP/2概念文章。
尽管经历了几次修订,但HTTP的底层传输机制基本没有变化。但是,随着互联网流量的激增,在移动电话的推动下,HTTP的传输机制在保证网页浏览体验的流畅性方面变得问题重重。
HTTP/3是为了处理HTTP/2.0的传输相关问题而生的,可以在各种设备上更快地访问Web。它基于一个新的传输层协议,称为QUIC(QuickUDPInternetProtocol),在UDP之上工作。这一选择与之前版本的HTTP截然不同,之前版本都是基于TCP。TCP是一个比UDP更可靠的协议,那么为什么要在UDP之上重新设计HTTP的传输层呢?
让我们来看看在TCP上运行HTTP的局限性,并深入了解一下基于QUIC协议的HTTP/3的设计思想。
当IETF正式标准化HTTP/2时,Google正在独立构建一个新的传输协议,名为gQUIC。它后来成为新互联网草案,并被命名为QUIC。gQUIC最初的实验证明,在网络条件较差的情况下,gQUIC在增强网页浏览体验方面的效果非常好。因此,gQUIC的发展势头越来越好,IETF的大多数成员赞成建立一个在QUIC上运行的HTTP新规范。这个新的倡议被称为HTTP/3,以区别于当前的HTTP/2标准。
从语法和语义上看,HTTP/3与HTTP/2相似。HTTP/3遵循相同的请求和响应消息交换顺序,其数据格式包含方法、标题、状态码和body。然而,HTTP/3的显著的偏差在于协议层在UDP之上的堆叠顺序。
HTTP/3功能的核心是围绕着底层的QUIC协议来实现的。在讨论QUIC和UDP之前,我们有必要先列出TCP的某些限制,这也是导致QUIC发展的原因。
TCP可能会间歇性地挂起数据传输
如果一个序列号较低的数据段还没有接收到,即使其他序列号较高的段已经接收到,TCP的接收机滑动窗口也不会继续处理。这将导致TCP流瞬间挂起,在更糟糕的情况下,即使所有的段中有一个没有收到,也会导致关闭连接。这个问题被称为TCP流的行头阻塞(HoL)。
TCP不支持流级复用
虽然TCP确实允许在应用层之间建立多个逻辑连接,但它不允许在一个TCP流中复用数据包。使用HTTP/2时,浏览器只能与服务器打开一个TCP连接,并使用同一个连接来请求多个对象,如CSS、JavaScript等文件。在接收这些对象的同时,TCP会将所有对象序列化在同一个流中。因此,它不知道TCP段的对象级分区。
TCP会产生冗余通信
TCP连接握手会有冗余的消息交换序列,即使是与已知主机建立的连接也是如此。
QUIC协议在以下设计选择的基础上,通过引入一些底层传输机制的改变,解决了这些问题。
1.选择UDP作为底层传输层协议。在TCP之上建立新的传输机制,将继承TCP的上述所有缺点。因此,UDP是一个明智的选择。此外,QUIC是在用户层构建的,所以不需要每次协议升级时进行内核修改。
流复用和流控。QUIC引入了连接上的多路流复用的概念。QUIC通过设计实现了单独的、针对每个流的流控,解决了整个连接的行头阻塞问题。
灵活的拥塞控制机制。TCP的拥塞控制机制是刚性的。该协议每次检测到拥塞时,都会将拥塞窗口大小减少一半。相比之下,QUIC的拥塞控制设计得更加灵活,可以更有效地利用可用的网络带宽,从而获得更好的吞吐量。
更好的错误处理能力。QUIC使用增强的丢失恢复机制和转发纠错功能,以更好地处理错误数据包。该功能对于那些只能通过缓慢的无线网络访问互联网的用户来说是一个福音,因为这些网络用户在传输过程中经常出现高错误率。
更快的握手。QUIC使用相同的TLS模块进行安全连接。然而,与TCP不同的是,QUIC的握手机制经过优化,避免了每次两个已知的对等者之间建立通信时的冗余协议交换。
通过在QUIC之上构建基于HTTP/3的应用层,您可以获得增强型传输机制的所有优势,同时保留HTTP/2的语法和语义。但是,你也必须注意到,HTTP/2不能直接与QUIC集成,因为从应用到传输的底层帧映射是不兼容的。因此,IETF的HTTP工作组建议将HTTP/3作为新的HTTP版本,并根据QUIC协议的帧格式要求修改了帧映射。
除此之外,HTTP/3还使用了一种新的HTTP头压缩机制,称为QPACK,是对HTTP/2中使用的HPACK的增强。在QPACK下,HTTP头可以在不同的QUIC流中不按顺序到达。与HTTP/2中的TCP确保数据包的按顺序传递不同,QUIC流是不按顺序传递的,在不同的流中可能包含不同的HTTP头。因此,QPACK使用查找表机制对报头进行编码和解码。
为什么HTTP/3很重要?
TCP已经有40多年的历史了。它在1981年通过RFC793从而标准化。多年来,它经历了多次更新,是一个非常强大的传输协议,可以支持互联网流量的增长。然而,由于设计上的原因,TCP从来就不适合处理有损无线环境中的数据传输。在互联网的早期,有线网络将网络中的每一台计算机连接起来。
现在,随着智能手机和便携式设备的数量超过台式机和笔记本电脑的数量,超过50%的互联网流量已经通过无线传输。这种趋势给整体的网络浏览体验带来了问题,其中最重要的是在无线覆盖率不足的情况下,TCP中的行头阻塞。
Google的一些初步实验证明,QUIC作为Google部分热门服务的底层传输协议,极大地提高了速度和用户体验。部署QUIC作为YouTube视频的底层传输协议,导致YouTube视频流的缓冲率下降了30%,这直接影响了用户的视频观看体验。在显示谷歌搜索结果时,也有类似的改善。
网络条件较差的情况下提升非常明显,这促使谷歌更加积极地完善该协议,并最终向IETF提出标准化。
由于这些早期的试验所带来的所有改进,QUIC已经成为带领万维网走向未来的重要因素。在QUIC的支持下,HTTP从HTTP/2到HTTP/3的改头换面,朝着这个方向合理地迈出了一步。
HTTP/3将改善我们上网的体验,特别是在仍无法使用高速无线网络的地区。尽管HTTP/2已经解决了一部分问题,然而HTTP/3更进一步。
物联网(IoT)
HTTP可能不是物联网的首选协议,但在某些情况下,基于HTTP的通信非常适合特定的应用。HTTP/3可以解决从传感器收集数据的移动电话的无线连接损耗问题。这个问题同样适用于安装在车辆或可移动资产上的独立IoT设备。通过HTTP来访问这些设备,可以更加可靠。
大数据
全球各地的企业都在觉醒,意识到从多个部门收集数据的潜力,并将其整合成更大的信息共享API,供内部和外部受众共享。这些API也为数据的货币化铺平了道路,通过托管这些数据作为流API服务可以实现数据的货币化。随着时间的推移,这些服务会吐出海量的数据。通过HTTP/3托管的流API将使它们比HTTP/2更健壮、更有弹性。
WebVR
随着浏览器能力的提升,内容格局正在快速变化。其中一个领域就是基于网络的VR。虽然还处于起步阶段,但有很多的用例可以让VR在加强协作方面发挥关键作用。网络在促进VR互动方面占据了核心位置。VR应用需要更多的带宽来渲染虚拟场景中的复杂细节,因此迁移到HTTP/3会大有收获。
过渡到HTTP/3不仅涉及到应用层的变化,还涉及到底层传输层的变化。因此,与它的前身HTTP/2相比,HTTP/3的采用更具挑战性,因为后者只需要改变应用层。传输层承受着网络中的大量中间层审查。这些中间层,如防火墙、代理、NAT设备等会进行大量的深度数据包检查,以满足其功能需求。因此,新的传输机制的引入对IT基础设施和运维团队来说有一些影响。
然而,HTTP/3被广泛采用的另一个问题是,它是基于QUIC的,在UDP上运行。大多数的Web流量,以及IETF定义的知名服务都是在TCP之上运行的。这也是为什么长时间运行HTTP/3的UDP会话会被防火墙的默认数据包过滤策略所影响的原因。
随着IETF正在进行的标准化工作,这些问题最终都会得到解决。此外,考虑到Google在早期QUIC实验所显示的积极结果,人们对HTTP/3的支持是压倒性的,这将最终迫使中间层厂商标准化。
针对受限的IoT设备,HTTP/3由于过于繁琐从而无法采用。许多IoT应用部署的设备的外形尺寸非常小。因此,它们的RAM和CPU功率都是有限的。为了使设备在电池功率、低比特率和有损连接等限制条件下高效运行,必须执行此要求。HTTP/3在现有的UDP之上,以QUIC的形式在传输层处理,增加了HTTP/3在整个协议栈中的占用空间。这使得HTTP/3较为笨重,不适合那些IoT设备。但这种情况很少出现,而且存在专门的协议,这就避免了直接在此类设备上支持HTTP的需要。此外,还有以物联网为核心的协议,如MQTT。
IETF的HTTP工作组正致力于在2020年后期发布HTTP/3。因此它还没有被NGINX和Apache等主流web服务器正式支持。不过,有几个lib可以用来实验这个新协议,也提供了非官方的补丁。
以下是支持HTTP/3和QUIC传输lib的列表。请注意,这些实现都是基于互联网标准草案某一个版本,而这个版本很可能会被更高的版本所取代,最终的标准会在RFC中发布。
Quiche(https://github.com/cloudflare/quiche)
Quiche提供了通过QUIC协议发送和接收数据包的底层编程接口。它还支持HTTP/3模块,通过其QUIC协议实现发送HTTP数据包。除此之外,它还为NGINX服务器提供了一个非官方的补丁,可以安装和托管一个能够运行HTTP/3的Web服务器。除此以外,还提供了额外的程序来支持Android和iOS移动应用上使用HTTP/3。
Aioquic(https://github.com/aiortc/aioquic)
Aioquic是QUIC的python实现。它还内置HTTP/3的测试服务器和客户端库。Aioquic建立在asyncio模块之上,asyncio模块是Python的标准异步I/O框架。
Neqo(https:/github.com/mozilla/neqo)
Neqo是Mozilla使用Rust实现QUIC和HTTP/3。
如果你想尝试QUIC,请查看这个由QUIC工作组维护的QUIC协议的开源实现链接。https://github.com/quicwg/base-drafts/wiki/Implementations
原文地址:https://www.ably.io/concepts/http3?utm_medium=referral&utm_source=reddit&utm_campaign=evergreen#limitations
如何写出简洁的CQRS代码?
区块链及比特币入门指南
Coinbase如何构建区块链基础设施
本文由高可用架构编译。技术原创及架构实践文章,欢迎通过公众号菜单「联系我们」进行投稿。
高可用架构改变互联网的构建方式

主题测试文章,只做测试使用。发布者:最新稳定辅助网,转转请注明出处:https://www.744broad.com/14266.html

(0)
上一篇 2023年3月5日 下午12:27
下一篇 2023年3月5日 下午12:33

相关推荐

  • 如何用 Rust 编写一个 Linux 内核模块

    如何用 Rust 编写一个 Linux 内核模块 编者按:近些年来Rust语言由于其内存安全性和性能等优势得到了很多关注,尤其是Linux内核也在准备将其集成到其中,因此,我们特邀阿里云工程师苏子彬为我们介绍一下如何在Linux内核中集成Rust支持。2021年4月14号,一封主题名为《Rustsupport》的邮件出现在LKML邮件组中。这封邮件主要介绍了…

  • 2022-05-21:给定一个数组arr,长度为n,表示n个服务员,每个人

    2022-05-21:给定一个数组arr,长度为n,表示n个服务员,每个人 2022-05-21:给定一个数组arr,长度为n,表示n个服务员,每个人服务一个人的时间。给定一个正数m,表示有m个人等位。如果你是刚来的人,请问你需要等多久?假设:m远远大于n,比如n<=1000,m<=10的9次方,该怎么做?来自谷歌。答案2022-05-21:方法…

    RUST资讯 2023年2月16日
    100
  • V社、育碧等厂商因steam最优惠条款遭反垄断起诉

    V社、育碧等厂商因steam最优惠条款遭反垄断起诉 本周早些时候,V社、育碧、CDPR等公司遭到了一起反垄断起诉,该诉讼要求开发商在其他游戏商店以与steam商店相同的价格出售游戏。诉讼称,steam发行协议中存在类似“最惠国待遇(MostFavoredNations)”的条款,该条款中。卖方同意向客户提供比其他商店更优惠的服务。这意味着其他商店,例如Epi…

    RUST资讯 2023年2月22日
    100
  • 保障通行安全,青岛西海岸陈家贡湾特大桥维修加固工程即将启动

    保障通行安全,青岛西海岸陈家贡湾特大桥维修加固工程即将启动 记者徐润杰通讯员李国华柳昕汝为保障群众通行安全,青岛西海岸新区交通运输局拟对国道G228丹东线跨越新区琅琊和泊里两镇的陈家贡湾特大桥,实施为期180天的维修加固工程,工程将采取半幅封闭施工方式进行。陈家贡湾特大桥,全长1811.5米,桥宽24.6米,建成通车于2009年10月。近年来随着青岛港董家口…

    RUST资讯 2023年2月23日
    80
  • Google宣布推出私有计算核心服务 以实现更深入的网络和ML模型隔离

    Google宣布推出私有计算核心服务 以实现更深入的网络和ML模型隔离 早在5月发布Android12时,Google同时宣布了私有计算核心。这是一项开源计划,提供了一个沙盒式的安全环境,将智能回复、现在播放和实时字幕等服务与操作系统和应用程序的其他部分隔离。其目的是让数据在你的设备上保持隐私,并以保护隐私的方式利用云。现在,Google已经通过私有计算核心…

    RUST资讯 2023年2月18日
    90
  • 「咖啡知识」咖啡爱好者一定要知道的一种病——叶锈病

    「咖啡知识」咖啡爱好者一定要知道的一种病——叶锈病 此文翻译自BBCFUTURE的Thediseasethatcouldchangehowwedrinkcoffee多年来,哥伦比亚的研究人员始终在参加一场鲜为人知的战斗,对抗一种可能会影响到世界各地咖啡饮用的神秘疾病。如果你在20世纪60年代坐飞机降落到波哥大(Bogota),从机场出来首先映入眼帘的可能是一…

    RUST资讯 2023年2月14日
    80
  • 经济学人全球头条:宜家旅行杯致癌,中国台湾富豪榜,春节租赁男女友

    经济学人全球头条:宜家旅行杯致癌,中国台湾富豪榜,春节租赁男女友 宜家旅行杯被检出超标致癌物质发布全球召回信息1月15日,宜家中国官网发布了产品召回信息,称其出售的在印度生产的“TROLIGTVIS特鲁利维斯旅行杯”检出超标致癌物质,宜家敦促所有拥有该旅行杯的顾客尽快停止使用,并启动全球召回。福布斯发布中国台湾富豪榜郭台铭跌出前三中国台湾富豪榜发布,50位(…

    RUST资讯 2023年2月28日
    30
  • 腐蚀地面火车系统已更新!腐蚀玩家开火车游戏预告片

    腐蚀地面火车系统已更新!腐蚀玩家开火车游戏预告片 《腐蚀》是Steam上最热门的开放世界沙盒生存游戏,开发商Facepunch也一直在为它推出更新。4月时游戏中加入了铁路网络,但没有火车,官方称火车会在稍后加入。今天《腐蚀》发布了“地面火车”预告片,火车更新正式上线!开发商表示,目前的火车系统沿用了一些已有素材,比如一些之前在游戏里摆设的不能动的火车;之后他…

    RUST资讯 2023年2月25日
    50
  • 《美国工厂》:根本就不是中国与美国的问题

    《美国工厂》:根本就不是中国与美国的问题 近来大火的奈飞纪录片《美国工厂》,讲述了一个令美国人感到辛酸的故事:代顿市的通用汽车工厂关门,几千工人失业生计无着;几年后来自中国的福耀玻璃进驻了厂区,失业的工人们重新有薪水可以拿。但美国工人的劳动效率和时间,都无法与中国工人相比,厂方的高强度要求和低薪让美国工人非常不适,一度想要成立工会以对抗厂方。厂方的态度是:成…

    RUST资讯 2023年2月13日
    70
  • 亲子好去处:瑞典免费开放国家级博物馆全收录!

    亲子好去处:瑞典免费开放国家级博物馆全收录! 历史博物馆Historiskamuseet概况:介绍瑞典历史的方方面面,特别是瑞典中世纪艺术。其维京文化方面的藏品堪称世界第一。(Naturhistoriskariksmuseet)自然历史博物馆及Cosmonova3D太空剧院概况:如皇宫般的建筑古老美丽,含9个关于自然和人类历史的长期展览。让你更加了解宇宙和地…

关注微信