元宇宙时代的HTTP应该是什么样?

原创
01/17 13:02
阅读数 26

运行整个Web世界的HTTP协议即将进行一次更新!互联网工程任务组(IETF)最近发布了业内诸多机构多年合作的产物:HTTP/3。HTTP/3使用QUIC这种全新传输协议可以在最具挑战性的网络上带来更好的性能。同时,这些更新也让我们在HTTP的文档方面有更多问题需要注意。


延伸阅读,了解 Akamai cloud-computing
 

 

一、使用QUIC和HTTP/3的优势

QUIC的RFC于去年发布时,Akamai曾通过一篇博客文章介绍了这种新的传输协议能为整个互联网带来的优势。HTTP/3和HTTP/2一样实现了多路复用和更好的拥堵控制,但不会导致在丢包情况下会降低性能的队头阻塞(Head-of-line blocking)。HTTP/3还提供了更快速的连接设置,例如TCP Fast Open以及TLS 1.3 Early Data,但不会对首次请求的大小进行严格限制。

由于HTTP/3运行在QUIC之上,因此也能从加密传输带来的创新中获益。我们已经发现有HTTP代理开始使用QUIC数据报扩展(RFC 9221)来承载UDP和TCP流量(这种对HTTP的扩展是iCloud专用代理的核心,Apple在Akamai的帮助下提供了这项功能)。

很多人可能觉得,HTTP/3不是已经推出了一段时间了吗?早在一年多以前,HTTP/3和QUIC规范在技术上就已经完成并稳定了,此次RFC的发布则意味着就算还不是最终版,但这个草案版本也已经被业内广泛采用。HTTP/3已经被大部分主流浏览器和25%的网站所支持。

由于可以在用户空间内实现,因此无需更改内核即可启用:只需安装支持这项技术的客户端或服务器软件就行了(但一定要记得为这些软件安装更新,因为很多操作系统还在通过内核修复继续改善QUIC性能)。

当然,如果需要最佳安全性和性能,那么你的网站可能已经在使用内容分发网络(CDN)。过去几年里,Akamai一直在与相关组织合作部署QUIC,并通过IETF关注QUIC的发展历程,目前已经在为客户提供测试版的HTTP/3服务。此外,对大部分流行的Web服务器软件来说,目前都在通过预览产品的方式提供对HTTP/3的支持。

二、RFC是什么?

并非所有RFC都是标准,看看RFC 1796就知道了。RFC系列内容提供了各种类型的文档:信息、诗歌、段子……但大部分RFC都是IETF的技术出版物,借此定义了互联网的很多基础协议,例如IP、TCP、TLS以及HTTP。

RFC(Request for Comments,征求意见稿)的发布需要进行严格审查:在作为标准RFC发布前,文档需要征集并处理成千上万的不同意见。在将RFC确定为互联网标准之前,它必须是“稳定、可被充分理解的”,并且是“技术上可行的”,有“大量实操经验的”,并且“在互联网的部分或全部位置有获得认可的用途”。

与其他规范“活跃文档”的性质不同,RFC一经发布就永远不会改变。如果需要更改内容,则需要发布新的RFC来“废除”或“更新”原先的RFC。因此RFC 7230-7235定义HTTP/1.1的过程中废除了RFC 2616,而RFC 2616废除了RFC 2068。虽然每次修订版都与之前的版本兼容,但新版的目的是更易于实现,更准确地反映互联网实际使用的协议。

三、原先的HTTP文档

随着HTTP/3的发布,我们也迎来了一系列新版本的HTTP RFC。其中包含另一个HTTP/1.1 RFC,一个新版HTTP/2 RFC,以及面向HTTP/3的官方RFC。这其中有一个文件似乎是全新的:HTTP Semantics(HTTP语义),不再包含版本号,已经被宣布为互联网的一个标准。

我们已经将HTTP/1.x用了几十年,并把它看作一种单一的技术:用于发出请求和给出回应的,基于文本的协议。实际上它可以通过能携带双向文本的任何协议来传输(不过通常为TCP)。该技术有很多扩展点:我们可以定义新方法、新状态代码,甚至新的标头。

HTTP/2出现时,我们不得不试着定义HTTP的下一个主要版本到底该是什么样。15年前,RFC 2145提到一个全新的主要版本将会改变“对其他标头字段的解释”,而其他小版本主要是为了解决向后兼容性问题。

但HTTP/2带来了更大的变化,它是一种二进制协议,不再是基于文本的协议!RFC 7540(2015年的HTTP/2)曾试图指出HTTP/1.1的哪些部分实际上是独立于特定版本,依赖RFC 7231-7235以及RFC 7230“选定的部分”的。

四、一个叫做HTTP的协议

2016年,一份互联网草案描述了开始在社区中流行的一种HTTP新概念:使用一种名为HTTP的单一协议,不再有版本之分。这里所说的“版本”实际上就是“映射”,借此以全新并且实用的方式在网络上传达相同的HTTP请求和响应。

HTTP社区将这些层次拆分开来,如今通过新的RFC反映了这些概念:

  • HTTP Semantics (RFC 9110) 定义了与版本或传输无关的HTTP协议。
  • HTTP Caching (RFC 9111) 定义了与版本或传输无关的HTTP资源缓存方式。
  • HTTP/1.1 (RFC 9112) 定义了HTTP在传输中的经典映射,通常为TCP。
  • HTTP/2 (RFC 9113) 定义了HTTP在TCP上的优化映射。
  • HPACK (RFC 7541) 定义了HTTP/2中头尾字段的压缩方式。
  • HTTP/3 (RFC 9114) 定义了HTTP在QUIC上的映射(RFC 9000-9002)。
  • QPACK (RFC 9204) 定义了HTTP/3中头尾字段的压缩方式。

HTTP和QUIC RFC之间的关系

五、一套连贯的规范

过去几年里,这些文档都是并行开发和编辑的。如今,随着整套规范的发布,我们已经获得了一个连贯的规范集,其中跨越三种不同的传输映射,描述了HTTP的实际使用情况。如果您的组织需要参考特定版本的HTTP规范,请务必选择相应版本的最新规范。如果您已经开始探索HTTP/3能为自己网站带来的价值,那么现在已经是时候开始尝试了!


这篇文章的内容感觉还行吧?有没有想要立即在 Linode 平台上亲自尝试一下?别忘了,现在注册可以免费获得价值 100 美元的使用额度,快点自己动手体验本文介绍的功能和服务吧↓↓↓
欢迎关注 Akamai ,第一时间了解高可用的 MySQL/MariaDB 参考架构,以及丰富的应用程序示例。
展开阅读全文
加载中
点击引领话题📣 发布并加入讨论🔥
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部