什么是 HTTP/3?QUIC 传输、优势与边界
Scrapeless Agent Browser 为网页自动化提供受管浏览器环境,其中目标请求使用的协议取决于实际的连接路径。
摘要
- HTTP/3 将 HTTP 映射到 QUIC 之上。 请求方法、资源标识符和状态含义仍然属于 HTTP 语义的一部分。
- QUIC 流减少了跨流传输阻塞。 拥塞和应用依赖仍然可能延迟多个资源。
- 仅有 HTTPS 并不能证明在使用 HTTP/3。 观察你正在调查的请求所协商出的协议。
- 每一段网络路径都需要各自的证据。 客户端到代理、代理到源站的连接可以使用不同的协议。
HTTP/3 改变了传输映射
HTTP/3 是在 QUIC 之上传输 HTTP 消息的 HTTP 版本,QUIC 是一种构建在 UDP 之上的安全传输协议。此 HTTP/3 规范 定义了请求、响应、控制信息和 HTTP 字段如何映射到 QUIC 流上。变更主要发生在应用熟悉的资源模型之下:URL 仍然标识资源,方法仍然表达请求语义,而状态仍然描述响应结果。
HTTP/3 不要求应用重命名其端点或用其他数据格式替换 JSON。公开 API 可以在不同 HTTP 版本之间保持相同的业务操作。这样的区分有助于隔离部署工作。传输支持属于承载请求的客户端、服务器和中间节点,而权限、校验、分页以及响应模式属于应用契约。
网站对 HTTP/3 的支持也不意味着每个请求都会使用它。客户端必须支持该协议并协商出兼容的连接,且网络路径必须允许此类流量。浏览器可以在同一页面上为不同的源站使用不同的协议版本。将“支持”视为一种能力,而将观测到的请求协议视为实际使用的证据。
QUIC 在 UDP 之上增加了可靠流
QUIC 在 UDP 之上提供连接管理、可靠流传输、流量控制和拥塞控制。UDP 本身并不提供类似 TCP 那样有序且可靠的字节流服务。此 QUIC 传输规范 定义了这些附加机制,包括在一个连接内的多个流。因此,将 HTTP/3 简单称为不可靠的 UDP 流量,就忽略了实际承载 HTTP 交换的传输层。
QUIC 流中的数据按顺序交付。当丢包仅影响某一个流的数据时,不同流可以独立前进。这减少了在多个 HTTP/2 流共享单一 TCP 字节流时可能出现的跨流传输阻塞。它并不能消除网络时延,也不能保证在所有负载下每个资源都会更快完成。
连接仍然共享有限的网络容量。拥塞控制可能会降低所有流可用的发送速率,连接级别的流量控制也会限制整体传输量。应用本身还可能依赖某个响应之后才能解释另一个响应。当页面必须等待脚本到达之后才能渲染时,即便其他资源仍在独立流上继续下载,页面仍然可能在可见上被延迟。
HTTP/3 与 HTTP/2 有何不同
HTTP/2 通过 TCP 复用 HTTP 流,而 HTTP/3 将它们映射到 QUIC 之上。两个版本都保留了应用的请求/响应模型。它们的分帧、压缩以及连接机制各不相同,因此原始的 HTTP/1.1 文本并不能直接反映任一版本的线缆表示。工具通常会呈现一个归一化视图,以便让协议检查更易读。
| 维度 | HTTP/2 | HTTP/3 |
|---|---|---|
| 底层传输 | TCP | 基于 UDP 的 QUIC |
| 独立 HTTP 流 | 复用在单一 TCP 字节流之上 | 映射到独立的 QUIC 流 |
| 首部压缩 | HPACK | QPACK |
| 通用应用概念 | 方法、URL、状态码、字段 | 方法、URL、状态码、字段 |
| 实际使用证据 | 针对被观测请求所协商出的协议 | 针对被观测请求所协商出的协议 |
两种版本都不会自动让数据源变得完整,或让浏览器会话自动获得授权。请求在任一传输之上都可能收到访问拒绝。响应在任一版本之上都可能包含空的应用结果。将传输诊断与数据接受分开:在认为某次采集成功之前,请检查期望的响应体和所需记录。
性能比较同样需要相当的条件。在可行的情况下,保持源站、内容、客户端环境、缓存状态和观测方法不变。否则,更热的缓存或更快的应用响应可能会被误以为是协议改进。报告实际测量到的内容,而不是给出证据无法支撑的泛化百分比提升。
加密被集成进 QUIC
QUIC 使用 TLS 作为连接建立的一部分来实现加密保护。 用于 QUIC 的 TLS 集成 描述了这种关系。因此,HTTP/3 并不是通过 UDP 套接字公开发送的 HTTP 流量。证书验证和源站认证仍然是用来决定客户端是否正在与预期服务通信的核心。
加密并不能对所有参与方隐藏有关交换的全部信息。服务器会终止受保护的连接并看到应用程序内容。终止连接的授权中间方可以在该连接的一端看到内容。流量模式和路由信息也可能保持可观测性。在说明某个部署的隐私属性时,请说明正在保护的是哪一条网络边界。
安全传输无法修复一个会将凭证发送到错误主机或接受未授权请求的应用程序。请保持可信源站、证书策略和凭证作用范围的一致性。协议现代化应当配合常规应用检查,而不是用来替代这些检查。Web 数据工作流的安全性不仅包含其秘密处理、授权规则和保留输出,还包括其网络传输。
QPACK 仍然存在依赖性权衡
QPACK 为 HTTP/3 压缩 HTTP 字段,同时允许报头处理在 QUIC 的独立流之上运行。该 QPACK 字段压缩规范 将压缩状态更新与引用这些状态的编码字段区段分离开来。这样的设计适用于独立流可能以不同顺序到达的传输环境。
解码器在解码某个字段区段之前仍可能需要动态表更新。因此,QPACK 包含了对可能因压缩状态而被阻塞的流数量的控制。其实践影响要比“HTTP/3 消除了所有阻塞”这一口号更窄:独立的传输流降低了一类特定依赖性,而压缩和应用处理则可能引入其他依赖性。
大多数应用开发者不需要自己实现 QPACK。请在所选浏览器、服务器或库中使用其协议实现,并通过支持的诊断手段观察其行为。如果出现性能问题,请区分响应生成缓慢与报文传输、字段解码以及应用渲染之间的差异。在没有定位延迟来源的情况下改变协议版本,可能会让真正的瓶颈保持原样。
连接迁移具有已定义的条件
QUIC 连接 ID 可以在网络路径发生变化时,让一个连接仍然可被识别。设备在网络接口之间移动是理解这一特性的一个有用场景。连接迁移仍然受端点行为和路径验证的约束;它并不保证任何任意的网络变化都能在毫无中断的情况下保留每一次会话。
请将传输层连接身份与网站的登录应用状态分开对待。Cookie、账户权限和服务器端会话仍然定义用户的应用上下文。传输连接可以发生改变而应用会话继续存在,也可能在网络连接仍然可用时应用会话已经过期。请在各层使用属于该层的标识符和证据进行调试。
对于自动化观测,请记录任务是否在稳定环境中运行,以及在采集期间路由组件是否发生变更。不同的出口路径可以在独立于协议的情况下改变时延和源站行为。一份有用的报告会指明请求路径和测得条件,而不是将每一次变化都归因于 QUIC 的迁移能力。
协议协商与网络路径需要检查
HTTP/3 通过协议发现和协商,而不是一个新的公共 URL 方案。仅凭一个 HTTPS 地址无法得知所选用的 HTTP 版本。服务器可以宣告一个备选服务,但实际是否使用仍取决于客户端和路径。请针对正在调查的特定资源,检查浏览器的请求细节或适当的协议诊断。
中间人会使该视图更加复杂。浏览器到代理的连接可能使用一种传输,而代理到源站的请求使用另一种。浏览器的开发者工具通常描述的是浏览器可见的连接,这可能并不能确定面向源站的协议。前文的 TCP 和 UDP 传输讨论 将这一差别扩展到 Web 数据系统。
传统的 HTTP 代理配置同样不应被视为对任意 UDP 流量的自动支持。在预测是否可以端到端使用 HTTP/3 之前,请检查实际的代理与隧道约定。在网络不允许所需路径的地方,请记录协商出的协议,并基于该观测到的行为来评估任务。
HTTP/3 对浏览器自动化意味着什么
浏览器自动化通常在传输层之上工作,通过页面导航和交互来实现。 Scrapeless Agent Browser 为这一工作流提供云端浏览器。其 浏览器自动化概览 建立了浏览器环境,而目标请求实际采用的协议则需要单独观测。本文并未声称能为某次特定的 Scrapeless 会话提供可配置的 HTTP/3 保证。
浏览器的自动化控制连接也不同于目标网站连接。控制通道可以保持健康,而页面却收到应用错误。请分别保留关于命令执行、请求完成以及被接受页面内容的证据。仅有一次成功的导航命令,无法证明返回了预期记录,或是源站路径使用了 HTTP/3。
查看 Scrapeless 定价 在估算浏览器工作负载成本时,应使用页面的内容和完成条件来定义任务成功。HTTP/3 可能在合适条件下改善传输行为,但采集端仍然需要受控的导航、正确的选择器、授权访问以及数据校验。无论协商到哪个 HTTP 版本,这些要求都保持不变。
结论
HTTP/3 在保持 HTTP 应用模型不变的前提下,通过 QUIC 来承载它。应将独立流、加密和协商视为传输层属性,然后检查你的请求实际经过的路径。可靠的浏览器工作流会分别度量协商出的协议和接受的内容,从而确保传输层改进不会掩盖权限或数据集质量问题。
构建你的 Web 数据工作流
使用 Agent Browser 对页面进行受控观测,并根据你的工作流实际发起的请求来评估传输行为。
立即注册即可获得 $5 免费额度 — 无需信用卡.
领取你的 $5 额度 →常见问题解答
HTTP/3 只是基于 UDP 的 HTTP 吗?
HTTP/3 运行在 QUIC 之上,QUIC 使用 UDP,并增加了安全连接管理、可靠有序的流以及拥塞控制。仅仅把 HTTP/3 描述为裸 UDP,忽略了使其 HTTP 交换对应用来说可靠且可用的这些机制。
HTTP/3 会改变 API 方法或 JSON 模式吗?
HTTP/3 本身不会改变 API 的方法或 JSON 模式。它改变的是 HTTP 在传输层上的承载方式。应用仍然独立于所选 HTTP 版本来定义其端点、授权规则、字段以及分页约定。
HTTP/3 会消除所有形式的阻塞吗?
HTTP/3 不会消除所有形式的阻塞。独立的 QUIC 流减少了跨流的传输阻塞,但拥塞、QPACK 状态依赖、服务器处理以及应用依赖仍然可能延迟响应或渲染。
HTTPS URL 能证明正在使用 HTTP/3 吗?
HTTPS URL 并不能证明正在使用 HTTP/3。应检查该请求协商到的协议,并确认诊断信息描述的是哪一段网络路径。客户端支持、服务器配置、中间节点以及网络策略都会影响实际是否使用 HTTP/3。
HTTP/3 对爬取来说总是更快吗?
对于每一种爬取工作负载,HTTP/3 并不保证更快。性能取决于客户端、服务器、网络状况、缓存状态以及应用本身的工作。需要在记录条件的前提下对等比较任务,并在独立于传输时延的基础上验证得到的内容。