IEFT互联网工程任务小组成员Robin Mark在Twitter上发布,经过了5年多的工作,HTTP/3终于被标准化为RFC 9114。与RFC 9204(QPACK报头压缩)和 RFC 9218(可扩展的优先级)一起为Web带来了一个重要的新篇章!很荣幸能成为其中一员。
这是HTTP超文本传输协议的第三个主要版本,完整的RFC超过了20000字,非常详细地解释了HTTP/3。
正如IEFT在摘要中所述:
QUIC 传输协议具有 HTTP 传输所需的几个特性,例如多路复用、每个流的流量控制和低延迟连接建立。本文档描述了HTTP语义在QUIC上的映射,还确定了QUIC包含的HTTP/2特性,并描述了如何将HTTP/2扩展移植到HTTP/3。
QUIC(Quick UDP Internet Connection)基于UDP的低时延的互联网传输层协议,是谷歌创建,并在2013年发布出来。谷歌当时为了解决传输控制协议(TCP)需要几握手建立连接后才开始传输数据的问题,那么客户端和服务端相距较远就会产生较长的往返时间,从而影响用户的体验,因此QUIC创作出来,就采用了用户数据报协议(UDP)来传输流量,从而减少了客户端和服务器之间的交互次数,加快了传输速度。QUIC在移动网络上发展上起了很大的作用,加快了移动网络速度,广受关注。
RTT(Round-Trip Time):即往返时延,计算机的一个重要指标,它表示从发送端发送数据开始,到发送端收到来自接收端的确认(接收端收到数据后便立即发送确认),总共经过的时间。
原有的TCP协议,是三次握手建立起来的连接(即1.5 RTT),就能够开始传输数据了。HTTP/2阶段,即需要先建立链接,还需要加密版本、加密密钥等,TCP+TLS要耗费3 RTT,其中TCP耗费了1.5 RTT,TLS耗费了1.5 RTT。
RRT建立连接图:
0-RTT是之前连接过的服务器客户端的可能缓存过该链接的某些信息,例如链接ID、链接令牌、链接证书等,继而又与此服务器建立了一个无需再次等待重新握手完成就可以立即传输信息的0-RTT链接,进而可以很大程度的减少建立新链接所需的时间。
在Mobile智能装备时代,Mobile装备接入的网络会常常实行切换,TCP 连接协议由四部分组成,分别是源IP、源端口、目的IP、目的端口,切换网络时需要至少改变其中一个要素,比如IP地址有变动,就需要断开连接,然后重新建立连接的过程,这个过程就是TCP三次握手和TLS四次握手的延迟、TCP慢启动的减速过程,由此看来,连接迁移需要很高的成本。而HTTP/3的QUIC允许移动设备更换IP地址,然后再通过连接ID来标记通信的两个端点,客户端和服务器可以各自由一组ID来标记,只需要记录过上下文信息,例如连接ID、TLS密钥等,即可复用原有连接,无重连的成本,没有卡顿感,从而实现了高效连接迁移功能。
HTTP/3优于HTTP/2的多路复用最大的点是,传输的单个数据流能够保证有序交付并且不影响其他的数据流,此特点就解决了TCP此前已存在的问题。QUIC的一个连接上的多个 Stream(HTTP 请求) 之间没有依赖,比如若多个Stream中的一个丢了一个UDP Packet,那么只能影响这一个Stream的接收情况,并不会影响其他Stream的接收,这种特点能够很好的解决队头阻塞问题。QUIC 基本的传输单元就是 Packet,整个加密和认证过程都是基于 Packet 的,并不会跨越多个 Packet,这样就能避免TLS协议存在的队头阻塞问题。
如图所示,HTTP/3 是基于 HTTP/2 的“升级版”,从 TCP协议更改为 UDP协议。HTTP/3 即保持 QUIC 稳定性,又使用 UDP 来实现高传输速度,加上TLS 的安全性,就保证了连接稳定性、数据包接收顺序及连接安全性。QUIC实际上就是基于UDP协议,再创造了一个更加高效的传输控制协议。
不过,不管怎么说,HTTP/3 进入标准化,也是 HTTP 发展过程中关键的一个里程碑。
参考文献:
[0] IETF publishes HTTP/3 RFC to take the web from TCP to UDP https://www.theregister.com/2022/06/07/http3_rfc_9114_published
[1] QUIC_百度百科 https://baike.baidu.com/item/QUIC/17341272fr=aladdin
文章作者:张立群
排版设计:王蔚棋
手绘插画:岳 媛
原创文章,作者:EBCloud,如若转载,请注明出处:https://www.sudun.com/ask/33774.html