0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

HTTP/3 + QUIC:性能有余 安全不足

SDNLAB 来源:SDNLAB 2023-05-19 16:02 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

HTTP 概述

超文本传输协议(HTTP)全称Hyper Text Transfer Protocol,用于使用超文本链接加载网页。HTTP 是一种应用层协议,主要涉及客户端向服务器发出请求,然后服务器发送响应消息。

HTTP 是一种无状态协议,目前主要与 TLS(传输层安全)协议一起使用,TLS为 HTTP 提供机密性、完整性和身份验证机制——通常称为 HTTPS。 HTTP 由各种不同的组件组成,用于交换实际数据和元数据:

HTTP 请求方法(即 GET、POST、PUT、PATCH、DELETE)

HTTP 标头(即 Cookie、XFF、主机、内容类型、连接)

HTTP 响应码- 表示请求状态的数值(例如:404 Not Found,表示在服务器上找不到请求的资源)

HTTP的历史

历史上最早的HTTP协议是1989年CERN(译注:即“欧洲核子研究组织”的原称 - Conseil Européen pour la Recherche Nucléaire)的 Tim Berners-Lee 发明的,目前命名为HTTP/0.9。然而,由于缺乏现代的传输机制、头文件、方法等,它从未获得官方的RFC,实际上也不再被使用。下面列出了官方 HTTP 初始规范 RFC,重点介绍了它们引入时最重要的新功能: HTTP/1.0 - 1996 年 5 月 - RFC 1945

支持 HTTP 报头

支持 HTTP 状态码

支持 Content-Type 报头

增加了新的POST 和 HEAD 方法

HTTP/1.1 - 1997 年 1 月 - RFC 2068

引入持久连接- 可以通过单个连接发送多个请求

强制主机头 - 对web代理路由很重要

新的 HTTP 状态码 100

新的 HTTP 方法 - PUT、PATCH、DELETE、CONNECT、TRACE 和 OPTIONS

支持各种压缩和解压缩方法- Gzip 最常用

HTTP/2.0 - 2015 年 5 月 - RFC 7540

支持请求多路复用,引入 HTTP 流,现在请求/响应可以多路复用并且不是连续的

支持请求优先级,例如,CSS 文件应该在 JS 文件之前发送

自动 Gzip 压缩

HTTP 连接重置支持,如果在 HTTP 级别发生错误,可以立即重置连接

支持服务器推送,服务器可以在没有明确请求的情况下主动将内容推送回客户端。

支持报头压缩 (HPAK)

HTTP/3.0 - 2022 年 6 月 - RFC 9114

使用 QUIC 协议代替TCP/TLS 栈 - RFC 9000

2022 年 6 月,IETF(互联网工程任务组)HTTP 组不仅发布了 HTTP/3 RFC 9114,还决定对 HTTP RFC 结构进行细化、清理和重建。此外,有些东西已经从 HTTP 标准中分离出来,并移至它们自己的 RFC 中。

HTTP 语义- RFC 9110:HTTP 的总体架构、常用术语和共享协议方面,例如请求和响应消息/doc/rfc9111s、方法、状态码、头和尾字段、消息内容、表示数据、内容编码等等。

HTTP 缓存- RFC 9111:HTTP 缓存和相关的报头字段来控制响应缓存的行为。

HTTP/1.1 - RFC 9112

HTTP/2.0 - RFC 9113

QPAC - RFC 9204

310fed2a-f568-11ed-90ce-dac502259ad0.png

| 图 1 HTTP 相关 RFC

在最初的HTTP/1.0发布之后,用户很快发现它缺少很多潜在的特性,需要进行一些优化。仅半年之后就发布了HTTP/1.1来解决这些问题。而新的官方HTTP/2标准花了整整18年的时间来开发,主要是为了解决性能方面的问题。7年后的2022年6月,HTTP/3协议被引入。

HTTP/3协议最大的变化是放弃了对 TCP/TLS 堆栈的支持,并用新的互联网协议——QUIC传输协议取而代之。

让我们比较一下 HTTP/2 和 HTTP/3 协议。

HTTP/2 与 HTTP/3

311fcc90-f568-11ed-90ce-dac502259ad0.png

| 图2HTTP/2 vs. HTTP/3

我们逐层进行分析:

1)第 3 层没有变化——IP 堆栈保持不变;支持 IPv4 和 IPv6

2)在第 4-6 层,我们看到了主要差异:

UDP(用户数据报协议)取代了TCP 协议进行包转发

QUIC:

取代了所有 TCP 协议功能,如面向连接、提供拥塞控制和避免、流量控制机制等

集成TLS1.3协议,负责流量加解密

TLS 层正在与 QUIC 集成,并提供密钥协商、身份验证和会话恢复功能

流复用机制也从HTTP层搬到了QUIC层

3)在 HTTP 层使用更高效的 QPACK 头压缩算法,可以利用 QUIC 协议功能 HTTP/2 和 HTTP/3 之间最大的区别是使用 QUIC over UDP 而不是 TCP 作为传输机制,其中 QUIC 协议不仅集成了 TCP 典型功能,还集成了 TLS 来提供安全性和流复用。值得一提的是,在 QUIC 实现中,TLS 的使用是强制性的——因此 HTTP/3 不再有纯文本 HTTP。

HTTP/2与 HTTP/3- 性能考虑

减少线头阻塞

通过将流多路复用从HTTP层移到QUIC传输层,HOL阻塞的情况可能会减少,不过它在很大程度上取决于 Web 浏览器上的特定多路复用实现。

0-RTT 会话设置

下图通过客户端和服务器之间示例流的往返时间来比较 HTTP/2 和 HTTP/3:

312cbfcc-f568-11ed-90ce-dac502259ad0.png

| 图 3 不同实现之间的 RTT 比较

TLS1.3 的特性是0-RTT 会话恢复,假设我们最近与特定的 Web 服务器进行过通信,我们可以自动重用密钥,并在初始会话设置时开始传输实际数据。对于 TCP,它会将 RTT 减少到 2,而QUIC 可以减少到 1。

下图显示了 TCP 和 QUIC 在最佳情况下的差异:

3135a592-f568-11ed-90ce-dac502259ad0.png

| 图 4 TLS1.3 0-RTT TCP与QUIC对比

虽然这看起来只是节省一个 RTT,但是在卫星和长距离连接方面可能是一个巨大优势。

连接迁移

由于 QUIC 协议使用了叫做源和目标Circuit ID (CID) 的新字段,现在在不丢失文件传输的情况下从一个连接迁移到另一个连接要容易得多。例如,连接可以轻松地从 Wi-Fi 迁移到 5G,并且仍然可以重用现有的 QUIC 会话。

总结性能考虑因素——通常在现代城市地区——从 TCP+HTTP/2 迁移到 QUIC+HTTP/3 的好处可能不会那么大。然而,不太理想的连接条件将变成 QUIC+HTTP/3 应该表现得更好并提供更好的性能和可靠性。

在性能方面,如果是在现代城市地区,从TCP+HTTP/2迁移到QUIC+ HTTP/3的优势可能不是那么大。然而,在连接条件不太理想的情况下,QUIC+HTTP/3的表现会更好,并能够提供更好的性能和可靠性。

此外,TCP 实现通常是在操作系统内核上,这大大减慢了新 TCP 扩展和机制的开发和采用,而QUIC是用户空间实现。随着时间的推移,越来越多的 QUIC 功能将被转移到操作系统级别,以提高性能,此外还将引入 SmartNIC,将部分或全部 QUIC 功能卸载到硬件级别。

HTTP/2 与 HTTP/3 - 安全考虑

HTTP/3 与 HTTP/2 有两个主要的安全考虑因素:

最终用户角度

从最终用户的角度来看,默认情况下使用 HTTP/3 应该更加安全。HTTP/3目前仅支持 TLS1.3 安全通信,此外与 HTTP/2 相比,HTTP/3 暴露在网络报头中的信息要少得多。

目前谷歌、Facebook等公司已经支持 HTTP/3了,甚至在 RFC 最终确定之前,谷歌服务实际上就在 QUIC 上使用 HTTP/2,所以它被称为 HTTP/2 over QUIC,后来变成了 HTTP/3。

中间人视角(防火墙 TLS 代理)

所有主要的下一代防火墙都使用一种称为 TLS 代理的技术,以便能够解密 TLS 流量,基本上,防火墙成为充当代理的中间人设备,下图说明了这一点。

3145058c-f568-11ed-90ce-dac502259ad0.png

| 图 5 防火墙传统

TLS 代理解决方案,来源PaloAlto Networks 这种方法不再适用于 QUIC 协议,因为很少有支持解密 QUIC 协议的供应商,并且存在很多挑战,所有 NGFW检测模块都必须重写才能支持此类功能,这肯定会花费很多时间.

另一个问题是,目前还没有真正的方法来有效地跟踪这样的连接。理论上,目标Circuit ID听起来是个不错的选择,然而,在活动连接期间,客户端可以随意更改其源Circuit ID。另一方面,在第4层,它看起来就像是动态src-port和dst-port为443的常规UDP数据包,打开此类流量可能会导致通过防火墙发起UDP打洞攻击。

幸运的是,如果无法建立快速连接,则会自动回退到 HTTP/2 over TCP,然后防火墙可以对其进行解密和检查。

HTTP/2 与 HTTP/3 使用统计

根据Web Technologies Surveys,截至 2022 年 11 月,约 42% 的网络流量是 HTTP/2。但是,自 2021 年 11 月以来,它的使用率一直在下降。

31550360-f568-11ed-90ce-dac502259ad0.png

| 图 6 HTTP/2的使用情况,2022 年 11 月 另一方面,HTTP/3 协议的使用自 2021 年以来一直在增加,并在 2022 年 11 月达到 26%。

315f889e-f568-11ed-90ce-dac502259ad0.png

| 图 7 HTTP/3的使用情况,2022 年 11 月 HTTP/3的缺点在于前述的与 QUIC 不兼容的中间防火墙内容检查和解密机制。截至撰写本文时,几乎没有支持 HTTP/3 解密和检查的防火墙供应商。

总 结

HTTP/3 主要是为了引入一个更健壮、灵活和现代的传输层协议——QUIC。QUIC 协议不必只与 HTTP 一起使用,有一些新的举措可以将它与其他协议一起使用,例如 DNS 和 SSH。

其次是性能提升,如果与 HTTP/2+TCP+TLS1.3(0-RTT)的最佳可能实现相比,HTTP/3 仍然有一个往返时间 (RTT) 的优势。在现代、快速、城市化的网络中,这可能听起来不多,但绝对是一种改进。在较慢的网络和流量突发的情况下,加载页面/资源可能会节省几百毫秒。在连接迁移方面也有好处,特别是允许移动用户更改连接方法并且仍然能够继续下载文件或维持现有连接。

最后,QUIC 仍处于开发阶段的早期,第 1 版专注于完成基本的传输和安全协议,更多高级功能尚未出现,并且随着时间的推移它只会变得更好更快。由于现有的实现是在用户空间而不是操作系统级内核空间中开发的,因此新的高级功能的开发应该更快更容易采用。目前HTTP/3 已经在互联网上得到了部署和使用。谷歌、Meta、微软、Akamai、Cloudflare、Fastly、F5 和爱立信等大型科技公司已经在大量使用它。




审核编辑:刘清

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • RFC
    RFC
    +关注

    关注

    0

    文章

    17

    浏览量

    10281
  • Quic
    +关注

    关注

    0

    文章

    25

    浏览量

    7512
  • HTTP协议
    +关注

    关注

    0

    文章

    67

    浏览量

    10517
  • TCP通信
    +关注

    关注

    0

    文章

    146

    浏览量

    4770
  • TLS
    TLS
    +关注

    关注

    0

    文章

    54

    浏览量

    4869

原文标题:HTTP/3 + QUIC:性能有余,安全不足

文章出处:【微信号:SDNLAB,微信公众号:SDNLAB】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    CW32L010新品安全低功耗MCU性能如何?有哪些优势?

    CW32L010新品安全低功耗MCU性能如何?有哪些优势?
    发表于 11-24 07:31

    专业解析SiLM8263BAHB-DG 高性能双通道隔离栅极驱动器

    。用户可以通过外部电阻灵活设定高低侧开关之间的死区时间,轻松优化桥式电路(如半桥、全桥)的开关效率,有效防止直通风险,简化设计并提升安全性。 宽电压兼容与强健保护: 输入侧兼容 3V 至 18V
    发表于 08-16 09:18

    ?ADUM7704:隔离式Σ-Δ ADC,工业测量的“安全卫士”!

    在工业自动化、电力监测、医疗设备等场景中,传感器信号采集常面临高压隔离需求与高精度测量的双重挑战——传统ADC方案要么隔离性能不足,要么精度难以兼顾。ADI推出的ADUM7704隔离式
    发表于 08-10 01:30

    Linux主要的性能有哪些?

    都有确定的用途。它支持32位和64位硬件,能运行主要的unix工具软件、应用程序和网络协议。linux继承了unix以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。 Linux主要特性 1 永久免费 Linux是一款免费的操作系统,用户可以通过网络或其他途径免费获得,并可以任
    的头像 发表于 04-30 18:09 483次阅读
    Linux主要的<b class='flag-5'>性能有</b>哪些?

    真双极和准双极,差动跟伪差动使用的性能有差别吗?

    最近需要用到差动输入的adc,找了很多型号,发现有真双极和准双极,差动输入方式的还分差动跟伪差动。网上找不到相关介绍,一般我们用单极adc要测量双极信号需要将信号抬高1/2vcc,我的理解是准双极的原理和抬高输入信号的原理一样。不知道真双极和准双极,差动跟伪差动使用的性能有差别吗?
    发表于 02-08 07:52

    ADS5482参考电压最低是多少?选择低电压时,对性能有什么影响?

    参考电压最低是多少?选择低电压时,对性能有什么影响?
    发表于 01-13 06:57

    如何使用 cURL 测试 HTTP 协议

    cURL是一个强大的命令行工具,用于传输数据,支持多种协议,包括HTTP、HTTPS、FTP等。使用cURL测试HTTP协议可以帮助你理解HTTP请求和响应的工作原理,以及调试和验证你的HTT
    的头像 发表于 12-30 09:26 2077次阅读

    HTTP 1.1 和 HTTP 2.0 的区别

    HTTP(超文本传输协议)是互联网上应用最为广泛的协议之一,用于在客户端和服务器之间传输数据。随着技术的发展,HTTP协议也在不断地更新和优化。HTTP/1.1是1999年发布的,而HTTP
    的头像 发表于 12-30 09:25 1782次阅读

    如何实现 HTTP 协议的安全

    协议的安全性,可以采取以下几种方法: 1. 使用HTTPS HTTPS(安全超文本传输协议)是HTTP安全版本,它在HTTP的基础上通过S
    的头像 发表于 12-30 09:22 1482次阅读

    HTTP 协议的工作原理

    HTTP协议的工作原理 1. HTTP协议概述 HTTP是一个应用层协议,它定义了客户端与服务器之间请求和响应的格式。HTTP协议基于TCP/IP模型,通常使用80端口进行通信。
    的头像 发表于 12-30 09:21 1587次阅读

    HTTP 和 HTTPS 的区别

    在互联网时代,数据传输安全变得越来越重要。HTTP 和 HTTPS 是两种广泛使用的网络协议,它们在数据传输方面扮演着关键角色。尽管它们的名字相似,但它们在安全性和用途上有着显著的区别。 HT
    的头像 发表于 12-30 09:19 2321次阅读

    HTTP 协议的基本概念

    HTTP(HyperText Transfer Protocol,超文本传输协议)是一种用于分布式、协作式、超媒体信息系统的网络协议。HTTP 是互联网上应用最为广泛的协议之一,它定义了客户端(比如
    的头像 发表于 12-29 15:12 2224次阅读

    HTTP缓存头的使用 本地缓存与远程缓存的区别

    HTTP缓存头是一组HTTP响应头,它们控制浏览器和中间代理服务器如何缓存网页内容。合理使用HTTP缓存头可以显著提高网站的加载速度和性能,减少服务器的负载。 1.
    的头像 发表于 12-18 09:41 813次阅读

    如何才能有效地针对性地对电气安全问题进行管理呢?#电工

    电气安全
    jf_55902079
    发布于 :2024年12月17日 15:23:29

    ‌水库大坝安全监测系统的功能有什么

    在浩瀚的自然与人工交织的水利网络中,水库大坝作为关键节点,其安全稳定运行关乎国计民生。为了保障这一水利巨擘的稳固,水库大坝安全监测系统以科技之力筑起一道坚不可摧的水利防线。
    的头像 发表于 12-07 15:32 728次阅读