Categories
程式開發

5分钟看懂HTTP3


本文最初发布于jesuisundev.com网站,经原作者授权由InfoQ中文站翻译并分享。

你连HTTP2都还没搞明白,就有人开始谈HTTP3了,真让人火大。但HTTP3会受到关注也是有理由的:它速度很快。

很久以前

谈未来之前,咱们先讲讲现实。你了解HTTP吗?这个定义于1991年的协议是用来管理Web的。它的全名是超文本传输​​协议,让你可以从网页中获取资源,网页数据从Web服务器传输到你的浏览器上。它基于较低级别的协议——TCP,这里是重点——而且它是无状态的。这意味着每个请求都是完全独立的。页面上显示的每个GIF图片都在互联网上独立存在,这对这些GIF图片本身来说是好事。但对我们来说,这样的一个系统是有些支离破碎的。

问题在于每个请求一次只会查找一个文件。每次都要创建一个昂贵的TCP连接。想象一下,如果你的页面上有10,000个小技巧,这会是多么沉重的负担啊。

我知道有很多人喜欢我上一篇文章中制作的图片,所以为了更好地向大家解释互联网的协议机制,这里我会再做一张图。

5分钟看懂HTTP3 1

尽管浏览器可以同时发出六个不同的请求,但是HTTP仍然很慢,并且需要很多TCP连接。另外,我们开发人员通常不会在意这一点。我们喜欢在页面上塞满各种垃圾。比如说巨大的jQuery库,包含300个无用的CSS样式表,结尾是一个透明的8兆大PNG图。

当谷歌发现我们在互联网上到处倾倒垃圾后,他们就开始搞一个称为SPDY的东西了。目的是什么呢?当然是加快互联网的速度。

SPDY是一个规范,建议继续使用HTTP,但要更改一些规则。通过压缩标头、对请求进行优先级排序和多路复用,它将把所有TCP请求和连接变成单独的一个!

具体来说,当你读取HTML时,浏览器会查看你在页面中要询问的所有内容。然后,它可以一次获取所有内容,这样就可以避免一个文件一个文件地获取了。

HTTP2的第一份草案基于SPDY。HTTP2很快被广泛采用,随后互联网上的一切变得快多了。今天,互联网上42.7%的内容使用HTTP2。

5分钟看懂HTTP3 2

关于HTTP3

HTTP2是以HTTP为基础并改动一些规则的产物。HTTP3也是如此。换句话说,解释清楚现状后,我就可以很容易地讲明白未来是什么样子的。

谷歌是一个极客组织,他们永远不会停止脚步。SPDY演变成为HTTP2后,他们认为它仍然不够快。因此,他们开始讨论QUIC这个项目。这是谷歌开发的第二项将成为HTTP协议的正式升级的技术。那么,这个协议有什么特别之处?

HTTP3的主要改进在传输层上。传输层不会再有我前面提到的那些繁重的TCP连接了。现在,一切都会走UDP。

顺便说一下,QUIC的意思是“快速UDP Internet连接”。协议的这种更改将显著加快连接建立和数据传输的速度。然而,虽说UDP肯定更快、更简单,但它不具备TCP的可靠性和错误处理能力。

TCP必须进行多次往返,才能以方形且稳定的方式建立连接。UDP不会顾虑那么多,而且它确实可以快速运行,代价是稳定性下降和丢包的风险。但是,UDP能大大减少请求中的延迟。到同一服务器的重复连接的延迟几乎为零,因为不需要往返来建立连接。

5分钟看懂HTTP3 3

HTTP3是HTTP2的复用和压缩,协议从TCP更改为UDP。然后,谷歌的那些人在协议中添加了他们做的层,以确保稳定性、数据包接收顺序及安全性。

因此,HTTP3在保持QUIC稳定性的同时使用UDP来实现高速度,同时又不会牺牲TLS的安全性。是的,在QUIC中就有TLS1.3,你可以用它发起优雅的SSL。这些层的底层机制是下面这样:

5分钟看懂HTTP3 4

2018年,QUIC演变成为HTTP3。互联网工程任务组(Internet Engineerring Task Force)的那帮制定互联网协议的哥们同意了这个提案。这是个好消息,因为对于我们这些急躁的人们来说,互联网的速度永远都不够快。

结语

HTTP3代表着充满魅力的未来,它的HTTP基础潜能已经被谷歌的那些极客发挥到极致。在撰写本文时,只有4.6%的互联网内容在使用HTTP3,但这个数字在未来几年中可能会增长许多。本文只是简单谈了谈这方面的知识,但如果你想了解更多,网上有很多的文章可供你参考。

原文链接:

https://www.jesuisundev.com/en/understand-http3-in-5-minutes