
HTTP已经有30多年的历史了,但它仍然是Web的基础,也是互联网上最流行的协议之一。它不仅用于浏览、看视频和听音乐,还用于应用程序和机器对机器通信,甚至还作为构建其他协议的基础,形成了经典互联网沙漏图中的“第二腰”。
为什么HTTP如此成功?一个答案是,对于大多数需要应用程序协议的应用程序来说,它击中了一个“甜蜜点”。“使用HTTP构建协议”(由HTTP工作组于2022年作为一项最佳当前实践RFC发布)一文认为,HTTP的成功源于以下因素:
-实施者、规范编制者、管理员、开发人员和用户的熟悉程度;
-各种客户端、服务器和代理实施的可用性;
-易用性;
-Web浏览器的可用性;
-重用现有机制,例如身份认证和加密;
-目标部署中存在HTTP服务器和客户端;以及
-穿越防火墙的能力。
另一个重要因素是使用、实施和标准化HTTP的社区。我们共同努力,积极维护和开发协议,以确保其可互操作,并满足当今的需求。如果HTTP停滞不前,另一种协议将(理所当然地)取代它,那么我们将失去社区的所有投资、共享理解和互操作性。
为此,Cloudflare和其他很多公司及组织派工程师参与IETF,这是大多数讨论和标准化大部分互联网协议的方式。我们还参加和赞助社区活动,例如HTTP Workshop,讨论人们有什么问题,他们需要什么,并了解哪些更改可能有助于他们。
那么,在2022年进行所有这些工作组会议、规范文件和附带活动中发生了什么事情呢?Web协议的实施者和部署者在做什么?接下来会发生什么呢?
新规范:HTTP/3
在规范方面,2022年最重大的事件就是HTTP/3的发布,因为它通过更有效地使用网络来释放Web性能,在满足现代应用程序和网站的要求方面迈出了巨大的一步。
在20世纪90年代,HTTP/0.9和HTTP/1.0对每个请求都使用一个新的TCP连接,这是对网络极其低效的利用。HTTP/1.1引入了持久连接(通过`Connection:Keep-Alive`标头被向后移植到HTTP/1.0)。这个改进帮助服务器和网络应对了爆炸式的Web流行,但即使是在那个时候,社区也知道它有重大局限性,特别是队头阻塞(某个连接上的一个未完成请求会阻止其他请求完成)。
这在90年代和21世纪初还不太重要,但今天的Web页面和应用对网络的要求使得这些限制对性能至关重要。页面通常有数百个资源争夺网络资源,而HTTP/1.1无法胜任。经过最初的一些错误,社区终于在2015年通过HTTP/2解决了这些问题。
然而,消除HTTP中的队头阻塞暴露了更低一层(即TCP)中的相同问题。因为TCP是一种有序的、可靠的交付协议,数据流中一个数据包的丢失会阻止对后续数据包的访问,即使它们位于操作系统的缓冲区中。对于HTTP/2部署而言,这是一个真正的问题,尤其是在非最优网络上。
当然,答案就是取代TCP——互联网的大部分都是基于这个古老的传输协议。经过QUIC工作组的大量讨论和多个草案,QUIC第一版于2021年发布,作为上述替代。
HTTP/3是使用QUIC的HTTP版本。虽然工作组实际上早在2021年就与QUIC一起完成了这个版本,但其发布被推迟到2022年,以便与其他文件的发布同步(见下文)。2022年也是HTTP/3部署具有里程碑意义的一年;Cloudflare看到对新协议采用和信心不断增加。
虽然HTTP/2和HTTP/3之间只有短短几年的间隔,但社区对开发HTTP/4的兴趣并不大。QUIC和HTTP/3都是新事物,人们仍然在学习如何最好地实施协议、运行协议,并使用它们构建网站和应用。虽然我们不能排除迫使将来推出新版本的限制,但IETF基于有关现代网络的广泛行业经验构建了这些协议,并具有显著的可扩展性,可轻松实现任何必要的更改。
新规范:HTTP“核心”
2022年HTTP规范的另一个重大事件是其“核心”文档的发布——这些文档是HTTP规范的核心。核心文档包括:HTTP语义——方法、标头、状态码和消息格式;HTTP缓存——HTTP缓存如何工作;HTTP/1.1——将语义映射到网络上,使用人人都知道和喜爱的格式。
此外,HTTP/2重新发布,以正确地集成以上语义文档,并修复一些突出的问题。
这是这些文档一长串修订中的最新一轮——过去有RFC 723x系列,(可能最众所周知的)RFC 2616,RFC 2068,以及最早的RFC 1945。每个修订的目标都是提高可读性、修复错误、更好地解释概念并阐明协议运行。规范(或实施)欠佳的特性被弃用;改善协议运行的新特性被加入。查看每个文档的“修订记录”附件以了解详情。此外,重要的是,始终参考上面链接的最新修订;老的RFC现已过时。
部署Early Hints
HTTP/2包含服务器推送(server push)特性,当服务器知道客户端将需要什么东西时,它可以“推送”一个请求/响应对给客户端,这样就可以避免发起请求并等待响应的延迟。
在HTTP/2于2015年敲定后,Cloudflare和其他很多HTTP实施推出了服务器推送,期待在性能上突飞猛进。不幸的是,事实证明这比看起来要难;服务器推送实际上要求服务器预测未来,不仅要预测客户端将发送什么请求,还要预测网络状况。而且,当服务器出错时(“过度推送”),所推送的请求将与浏览器发出的真正请求相竞争,这意味着巨大的机会成本,有可能会损害性能,而不是促进性能。当浏览器缓存中已经有副本时,影响更大,因此根本不需要推送。
因此,Chrome在2022年移除了HTTP/2服务器推送。其他浏览器和服务器可能仍然支持它,但社区似乎一致认为,它目前只适用于特定的用途,如浏览器通知特定的Web推送协议。
然而,这并不意味着我们要放弃。103(Early Hints)状态码是由HTTP工作组在2017年作为实验性RFC发布的。它允许服务器在“真正的”最终响应之前,以非最终响应的形式向浏览器发送提示。如果您知道内容中将包含一些资源的链接,浏览器将获取这些资源,但需要更多时间向客户端发送响应(因为它将花费更多时间生成,或者因为服务器需要从其他地方获取它,如CDN),那么这是有用的。
Early Hints可用于许多服务端推送被设计使用的情况——例如,当有页面将需要加载的CSS和JavaScript时。理论上,它们并不像服务端推送那样理想,因为它们只允许在有未完成请求时发送提示,而且将提示发送给客户端并进行操作会增加一些延迟。
然而,在实践中,Cloudflare及其合作伙伴(如Shopify和Google)在2022年试验了Early Hints,发现它们使用起来更安全,有望带来性能提升,包括关键Web性能指标的显著降低。
我们对Early Hints显示的潜力感到兴奋,因而将其集成到Cloudflare Pages中。我们也在评估使用协议中的这一新功能来提高性能的新方法。
注重隐私的中介
对于许多人来说,2022年最令人兴奋的HTTP协议扩展是中介(intermediation)——在协议中插入代理、网关和类似组件,以实现特定目标,通常侧重于改善隐私。
例如,MASQUE工作组正在努力向HTTP添加新的隧道功能,以便中介可将隧道中的流量传递给另一个服务器。
虽然CONNECT实现TCP隧道已有很长时间,MASQUE实现了UDP隧道,允许更多协议更有效地传输,包括QUIC和HTTP/3。
Cloudflare满怀热情地与Apple合作使用MASQUE实施iCloud Private Relay,并增强其客户的隐私,无需完全依赖于一家公司。我们也对该工作组未来的工作感兴趣,包括IP隧道,其将实现基于MASQUE的VPN。
另一个专注于中介的规范是Oblivious HTTP(缩写为OHTTP)。OHTTP使用一组中介来防止服务器使用连接或IP地址跟踪客户端,从而为收集遥测或其他敏感数据等工作提供更大的隐私保障。这个规范正在完成标准流程,我们使用它构建一个重要的新产品:Privacy Gateway,以保护我们客户的隐私。
我们和互联网社区的很多其他人相信这只是一个开端,因为中介能分隔通信,是一个改善隐私的宝贵工具。
协议安全性
最后,2022年期间,HTTP协议的安全相关方面进行了大量工作。Digest字段规范是现已非常古老的`Digest`标头字段的更新,允许将完整性摘要添加到消息中。HTTP消息签名允许对请求和响应进行加密签名——这已经被广泛地临时部署,但直到现在依然缺乏标准。这两个规范都处于标准化的最后阶段。
Cookie规范的一个修订在2022年也取得了重大进展,且应该即将完成。由于不可能在短时间内完全摆脱它们,人们已经做了很多工作来限制它们运作的方式以改善隐私和安全,包括一个新的`SameSite`属性。
Cloudflare已投入多年努力的另一个安全相关规范是Privacy Pass(隐私通行证),又名“Private Access Token(私有访问令牌)”。这些加密令牌可以确保客户端是真实的人,而不是机器人,无需使用侵入性验证码,也不会跟踪用户的在线活动。在HTTP中,它们采用一种新的身份验证模式。
虽然Privacy Pass仍未完全通过标准程序,但在2022年,Apple已经进行了广泛部署,这是一个重要的进展。由于Cloudflare在我们的替代产品——Turnstile使用了这一规范,您的用户今天就可以拥有更好的体验。
2023年展望
那么,下一步将如何发展呢?此外,上述规范还没有完成,HTTP工作组还有一些其他进行中的工作,包括QUERY方法(想象GET但有body),可恢复上传(基于tus),Variants(用于缓存的Vary标头改进版),对结构化字段的改进(包括一个新的Date类型),以及一种将现有标头改造为结构化字段的方式。随着这些工作在2023年的进展,我们将进一步撰文介绍。
在2022年HTTP研讨会上,社区还讨论了我们可以开展哪些新工作来改进该协议。讨论的一些想法包括改进我们的共享协议测试基础设施(目前我们有一些资源,但有很大改进余地),改进(或替代)Alternative Services以允许更智能和正确的连接管理,以及更彻底的更改,例如替代性的、标头二进制序列化。
社区中也在持续讨论HTTP是否应该支持pub/sub,或者是否应该将其标准化,以便在WebSockets(以及即将到来的WebTransport)上工作。虽然现在还很难说,刚刚开始的Media over QUIC相关工作可能提供一个推进这方面工作的机会。
当然,以上并不是全部,HTTP在2023年(及以后)会发生什么还有待观察。HTTP仍在发展,尽管其继续兼容有史以来最大规模的分布式超文本系统——万维网(World Wide Web)。
现在,各行各样越来越多的品牌将产品广告投放到沃尔玛、亚马逊、百思买等电商购物网站,电商广告和营销正在经历一个重大转变。 据统计,美国消费者55%的产品搜索是从亚马逊开始的,这意味着更多的人直接在大型零售网站和电商平台进行产品搜索。 当人们在电商网站搜索产品时,…
码刀科技(www.lekshop.cn)是国内知名企业级电商平台提供商,为企业级商家提供最佳的电商平台搭建(多种模式电商平台搭建:B2B/B2B2C/B2C/O2O/新零售/跨境等)、平台管理系统开发及互联网采购解决方案服务, 联系客服了解更多.