HTTP/3将不再使用TCP

物理学发展到19世纪末期,以经典力学、经典电磁场理论和经典统计力学为三大支柱的经典物理大厦已经建成,而且基础牢固,宏伟壮观。英国著名物理学开尔文男爵断言,物理大厦已经落成,所剩只是一些修饰工作。然而没过多久,随着相对论和量子力学的诞生,旧的物理理论体系被颠覆得天翻地覆。

我之前写过一篇文章《基础软件研发,可能是中老年程序员的最后堡垒》。有朋友就问题,操作系统、数据库之类的软件不都非常成熟吗?我们还能做些什么?

其实计算机自诞生起,一直采用冯.诺依曼体系结构,这么多年也一直未能突破。就在我们认为这种体系结构已经尽善尽美的时候,往往是取得突破之时。当然这种突破性的工作,往往需要多年的技术积累蓄势,然后静候天才人物的诞生。

在互联网世界,TCP/IP协议应该是构筑整个网络的基石。TCP/IP协议因其简单、灵活、易于实现等优点,在众多网络协议中脱颖而出。但TCP/IP并非完美,就拿TCP协议来说,就有慢、效率低、占用系统资源高、易被攻击等缺点。但TCP/IP协议应用这么广,要替换,想想就觉得不可能。然而软件工程师们可不这么想,既然从头推翻TCP/IP协议太难,那就从上层协议着手进行改造。这不,HTTP/3协议就不再使用TCP。

HTTP协议大家应该不陌生,通过浏览器访问网页,就使用到了HTTP协议。它是一种应用层协议,目前广泛使用的版本是1.1。从HTTP/3开始,HTTP协议将构建在QUIC协议之上,一个最初由Google公司开发的传输层网络协议。

QUIC

顾名思义,QUIC(Quick UDP Internet Connections)是基于多路UDP连接的传输层协议。实际上,QUIC是TCP + TLS + UDP上的SPDY的组合,并对TCP之上的HTTP/2实现做了改进。

HTTP/3将不再使用TCP_第1张图片

HTTP/2和HTTP/3协议栈

借助于TLS 1.3加密,QUIC协议在保证安全性的同时,兼顾简单性和速度。Google的工程师在连接建立和数据传输方面开发了一种更有效的协议。根据Google的说法,与TCP + TLS的1-3次往返相比,QUIC握手在发送有效载荷之前通常不需多次往返。即,第一个连接需要一个往返,而随后的连接将降为零。

此外,与当前的TCP相比,它在数据包丢失方面处理得更好。每个重发的数据包都使用一个新的序列号,从而消除了歧义并防止RTO损失。

目前,只有1.2%的顶级网站支持QUIC,但它们通常都是流量非常大的网站:几乎每个Google服务都支持自己的QUIC协议。

需要注意的是,自2016年以来,IETF就一直在开发Google QUIC的标准化版本。但是,IETF的QUIC版本已经与Google的QUIC设计大相径庭,最终谁会胜出,还有待观察。(OSI网络模型就是一个例子,虽然是一个官方标准,但最终TCP/IP成为了事实上的标准)

QUIC安全吗?

目前,各国都把网络安全安全看得非常重要,但HTTP设计之初,并没有过多的考虑安全因素,需要结合SSL协议增强安全。而HTTP/2和HTTP/3在设计时就考虑到了安全问题。QUIC的第一个开发版本包含自己的加密实现。但是,IETF计划使用TLS 1.3取代。

实际上,QUIC的连接建立策略是基于加密和传输握手的结合。

HTTP/3将不再使用TCP_第2张图片

QUIC和TLS集成

使用QUIC,默认情况下将对所有内容进行加密。

小结

如果你希望研究QUIC协议,chromium源码中的网络模块就是一个很好的参考,另外IETF上的一些相关RFC也值得读一读。

为啥突然想到写这个话题呢?其实中国在基础软件领域非常薄弱,但中国要崛起成为科技强国、软件强国,还有很多功课需要补,基础软件就是其中一块,中国一直在大力投入。看似基础软件都已经非常稳固和完善,其实其中仍然孕育着不少机会。普通人虽然难以做一些突破性的工作,但一些协议实现、算法实现、优化等工作,并不需要多少开创性的天赋。从事这些工作,从好的一方面想,其实也可以有效延长软件开发的职业生命周期。

你可能感兴趣的:(HTTP/3将不再使用TCP)