HTTP/3是什么?建立在UDP之上的新协议

2018年11月,互联网工程任务组(IETF)在曼谷举行会议,并通过了新的互联网草案。QUIC传输协议是HTTP / 2的后继协议,已被重命名为HTTP/3。HTTP/3建立在UDP之上,并且已经被著名的互联网公司(例如Google和Facebook)使用。如果您使用的是Chrome浏览器(或微软新版Edge)并连接到Google服务,则可能已经在使用QUIC。

当IETF的互联网草案在2019年6月到期时,已经可以预计将HTTP / 3提升为新的第三代HTTP标准。与HTTP / 2一样,HTTP / 3将再次帮助加快网络速度。

HTTP / 3即将到来

有人说,Web行业渴望更快的速度和更低的延迟仅与Google Chrome渴望获得更多的RAM相匹配。
国际互联网标准组织,负责界定并促进商定的互联网协议标准,例如TCP,IPv6,VoIP,物联网等。它是一个开放的机构,它将网络行业团结在一起,并促进了有关互联网发展方向的研究。

当前,HTTP / 3 的ID阶段是将提案提升到RFC或“征求意见书”级别之前的最后一个讨论阶段,我们可以出于所有目的将其视为正式的互联网协议定义,然后由所有主要的互联网参与者实施。

什么是HTTP/3

HTTP/3是超文本传输​​协议(HTTP)的第三版,以前称为HTTP-QUIC。QUIC(快速UDP Internet连接)最初由Google开发,是HTTP / 2的后继产品。诸如Google和Facebook之类的公司已经在使用QUIC来加快网络速度。

它始于HTTP / 2

HTTP / 2通过无阻塞下载,流水线和服务器推送带来了一些重大改进,这帮助我们克服了基础TCP协议的某些限制。它能够最大程度地减少请求-响应周期和握手的次数。

HTTP / 2在单个TCP连接中推送多个资源成为可能-复用。在静态下载的排序方面也有了更大的灵活性,现在我们的页面不再受到下载线性增长的限制。比方说一个较大的javascript资源文件,不一定成为其他静态资源等待转向的阻塞点。

除了这些,HTTP / 2的标头HPACK压缩和默认二进制格式的数据传输,在许多情况下效率更高。

不过几乎所有的浏览器都要求网站部署SSL才能获得HTTP / 2,这就导致了速度提升不明显甚至有些情况下转换为HTTP / 2后速度变慢,因为SSL加密(HTTPS)会增加握手的次数。

QUIC与HTTP/3

Google于2012年首次部署QUIC(快速UDP Internet连接)。它依靠较低级别的UDP协议重新定义了网络层的边界,在“用户空间”中重新定义了握手,可靠性和安全性功能。

就像HTTP / 2一样,它是Google的SPDY所带头或引领发展的,HTTP/3也将如此。

虽然HTTP / 2确实提供了多路复用功能,并减轻了行头阻塞的影响,但它受到TCP的限制。您可以对多个流复用在一起的单个流使用单个TCP连接来传输数据,但是当其中一个流遭受数据包丢失时,整个连接(及其所有流)都将被劫持,也就是说,直到TCP恢复起作用为止(重新传输丢失的数据包)。也就是说在目的地节点的缓冲区中,即使所有数据包已经被传输并等待,也将被阻塞,直到丢失的数据包被重新传输为止。

QUIC不受此限制。利用基于UDP协议的QUIC,连接的概念不会受到TCP的限制,并且一个流的故障不会影响其余部分。通过专注于UDP 流,QUIC可以实现多路复用,而不必背负一个TCP连接。QUIC的连接建立在比TCP更高的层次上。QUIC连接中的新流不会被迫等待其他流完成。QUIC连接还消除了TCP握手的时间,从而减少了网络延迟。

虽然QUIC取消了TCP,但它在UDP层之上进行了弥补,从而提供了数据包的重新传输,排序等功能。Google云端平台于2018年为其负载均衡器引入了QUIC支持,并且全球平均页面加载时间缩短了8%,部分延迟较高的国家或地区则提高了13%。

在谷歌Chrome浏览器,YouTube,Gmail,谷歌搜索和其他服务之间,谷歌无需等待IETF就可以在互联网的很大一部分上部署QUIC。谷歌的工程师声称,早在2017年已经有7%的互联网流量是通过QUIC进行的。

Google的QUIC版本仅使用HTTP / 2语法专注于HTTP传输。IETF负责QUIC标准化的人决定,IETF版本的QUIC应该能够传输的不仅仅是HTTP。但是,目前未进行基于QUIC的有关非HTTP协议的任何工作。

IETF工作组决定的另一件事是,标准化版本将使用TLS 1.3加密而不是Google的自定义解决方案。与旧版本相比,TLS 1.3还有助于提高协议速度,因为其握手所需的往返次数更少。

目前,Google继续在其产品中使用自己的QUIC版本,同时将其开发工作指向IETF标准。其他大多数互联网公司都建立在IETF版本的基础上(除了加密外,其他两个方面都存在差异)。

如果我们打开Chrome Dev Tools,并在“网络”标签的“协议”列中加载Google的某些产品(例如Gmail),会看到很多资源是通过Google的QUIC协议版本加载的。例如Google Analytics(分析),Google跟踪代码管理器等。如下图:

Google QUIC
Google QUIC

尽管UDP确实为QUIC和HTTP/3提供了一些固有的优势,但它也带来了一些挑战。多年来,TCP一直是主流协议,而UDP尚未成为主流协议,因此,针对它的操作系统和软件通常没有对其优化。据估计,QUIC的CPU负载/要求要高得多,是HTTP / 2的两倍,好在现在流行的PC或移动设备的处理器足够强大。

前面提到的QUIC连接结合了TLS和传输握手。连接建立后,它们将通过唯一的CID(连接ID)进行标识。这些ID不会随着IP更改而改变,还能确保从4G切换到WiFi时的不间断下载。

QUIC是传输层协议,而HTTP是其上的一层,即应用程序层协议或应用程序协议。

由于向后兼容性至关重要,因此IETF提倡HTTP / 3的实现将在响应中包括旧版本(HTT1或HTTP / 2)。

这与HTTP / 2不同,在HTTP / 2中,可以在TLS握手中协商传输。但是,由于IETF几乎已决定采用基于QUIC的HTTP/3作为下一个标准,因此可以预期近期大量的Web客户端会为HTTP/3提供支持。客户端可以缓存来自先前HTTP/3连接的数据,并可以在后续访问同一主机时直接连接(零往返或0-RTT)。

推动HTTP/3是否为时过早?

有些人认为,在尚未完全采用HTTP / 2标准的情况下,推动HTTP / 3(第三版)可能为时过早。这是有道理的,但是,正如我们提到的,该协议已经进行了大规模的测试和实现。谷歌早在2015年就开始对其进行测试,并于2017年开始对Facebook进行测试。

从那时起,其他参与者也加入了标准化工作,例如Akamai和Mozilla。在2018年11月举行的一次IETF会议上,Facebook,苹果,谷歌,Mozilla,NetApp和LiteSpeed Tech等公司明确表示了对QUIC的兴趣。

今年将会有更多的公司采取行动实施新标准,不得不说Google在推动全球互联网发展的道路上贡献很大。站长帮也在密切关注HTTP/3技术的发展,将在合适的时间升级(目前采用HTTP / 2)。

留下评论