Hysteria2 协议是什么:基于 QUIC 的传输为何快、适合哪些网络环境

讲清 Hysteria2 基于 QUIC 与 UDP 的传输思路、拥塞控制带来的速度差异,以及高丢包、移动网络等适用场景和需要注意的限制。

本文速览

Hysteria2 是基于 QUIC 的代理协议,可能在部分高延迟、存在丢包的网络中改善传输表现,但前提是路径允许 UDP、服务端参数正确且带宽配置合理。本文面向已持有自己服务参数的 Shadowrocket 用户,依次说明传输原理、适用条件、参数核对和可复现的排障步骤;不把协议名称当作速度保证。

Hysteria2、QUIC 与 UDP 分别负责什么

在 Shadowrocket(小火箭)中,Hysteria2 是连接用户已有服务的一种协议类型。它不是网络线路,也不等于一份订阅。订阅负责向客户端提供连接条目,协议负责约定客户端和服务端怎样认证与传输,最终表现仍受本地网络、服务端负载和目标站点影响。

可以把传输链路分为三层:底层 UDP 承载数据报,QUIC 在其上实现加密连接、流与可靠传输机制,Hysteria2 再规定代理认证和业务数据的封装方式。UDP 本身不保证送达;不能据此推断使用 UDP 的 QUIC 可靠流也不重传。浏览网页等需要可靠传输的业务,仍要等待丢失数据恢复。

UDP
Hysteria2 的底层传输路径需要允许 UDP
TLS 1.3
QUIC 集成的加密握手机制
443/UDP
端口示例,不是所有服务的固定端口

例如,服务商指定端口为 443 时,需要检查的是对应 UDP 端口的可达性。相同数字的 TCP 端口能够连接,并不能证明 UDP 也能通过。端口必须使用已有服务提供的值,不能因为常见示例使用 443,就把其他有效端口统一改为 443。

所谓“更快”:拥塞控制与流隔离的作用

QUIC 可以在同一连接内承载多条流。一条流丢失数据时,通常不必像共享同一 TCP 字节流那样,等待缺失字节补齐后才交付其他流的数据。这减少了跨流的队头阻塞,但同一可靠流内的缺口仍需恢复,而且所有流仍共享实际链路容量和拥塞约束。

Hysteria2 的传输表现还与拥塞控制有关。其带宽配置可能参与发送速率控制;带宽驱动的 Brutal 与自动估计路径容量的方式不是同一思路。具体使用哪种方式,取决于客户端实现、配置和服务端协商,不能只看到协议名就断言当前连接一定采用某种算法。

结论:先测可达性,再调整速率

只有 UDP 路径稳定可达、认证通过且目标请求实际经过该连接后,才有必要比较带宽设置。调高数值后若网页等待增加,应恢复原值,而不是继续加大。

填写带宽时还要区分单位:Mbps 表示每秒兆比特,MB/s 表示每秒兆字节,数值换算相差 8 倍。即使套餐标称带宽很高,当前无线信号与共享出口也可能只能提供更低的可用容量。以客户端字段显示的单位和已有服务说明为准,不把套餐上限直接当作当前实测速率。

哪些网络值得测试,哪些条件需要先处理

高丢包、长距离或移动网络是需要具体测量的条件,不是自动适用标签。先确认本地网络允许 UDP,再区分随机丢包、拥塞丢包和服务端异常;三者都可能表现为卡顿,但处理方向不同。

网络条件可以观察什么先做什么
高延迟且偶发丢包连续请求是否完成、持续传输是否频繁停顿固定目标和服务端,重复测试,不只看一次延迟
Wi-Fi 与蜂窝网络切换切换后现有请求是否恢复、新请求是否成功分别记录切换前后结果;必要时重新建立连接
限制 UDP 的网络其他网络可用,而当前网络持续握手超时核对网络访问要求,换到允许 UDP 的网络再验证
低丢包、低延迟网络网页响应与持续传输是否已有稳定表现保留稳定参数,不为协议名称反复更换配置
共享出口拥塞下载时其他请求延迟上升、停止下载后恢复降低负载,重新评估带宽设置

QUIC 具备支持连接迁移的机制,但这不等于 Shadowrocket 中每次网络切换都能无感续传。客户端实现、服务端策略、地址变化和网络中间设备都会影响结果。移动网络下应分别测试“保持在同一网络”和“切换网络”两种情形,避免把切换失败误判成所有 Hysteria2 连接都不可用。

在 Shadowrocket 中核对已有 Hysteria2 参数

以下步骤以用户已经拥有自己的服务商与连接参数为前提。先保留当前可用配置,逐项核对协议、地址、端口、认证和 TLS 信息。不同类型的连接参数不能仅通过修改 Type 相互转换,Hysteria 与 Hysteria2 也不能按同一种协议处理。

  1. 查看条目

    进入 Home,打开已有条目的编辑页,核对 Type 是否为 Hysteria2。若手动添加,从 Home 右上角“+”进入,按已有服务说明选择 Type;不要把服务商名称当作协议类型。

  2. 核对连接

    逐字检查服务地址、端口和认证内容。示例地址 hy2.example.com 与端口 443 仅用于说明字段关系,不是可用服务。认证内容不能混入首尾空格或换行。

  3. 核对 TLS

    按已有服务说明核对 TLS 的服务器名称(SNI)和证书要求。连接地址与证书名称不一定相同;遇到证书错误时先检查名称和设备时间,不以跳过证书验证作为常规处理。

  4. 检查附加项

    如果服务启用了 obfuscation,核对方式和密码是否成套提供;未启用时不要自行增加。带宽相关字段按显示单位填写,并保留修改前的值,便于恢复。

  5. 连接并复核

    保存后回到 Home 选择该条目,检查 Global Routing,再开启连接并运行 Connectivity Test。接着访问固定的测试目标,分别记录测试结果与实际请求结果。

Global Routing 如何影响协议测试

“选择了 Hysteria2 条目”和“当前请求使用了该条目”不是同一件事。Home → Global Routing 决定路由方式;处于 Config 时,规则可以让某些请求使用 DIRECT,因此一次网页打开成功并不能单独证明 Hysteria2 链路已经工作。

Config:按规则核对

推荐

根据当前配置分流。测试前明确目标应命中哪条规则、该规则使用什么策略;若策略引用了其他选择,还需核对最终出口。

适合:日常按规则使用,以及已明确匹配关系的复测

Proxy:临时隔离变量

将可代理请求交给所选代理,用于缩小规则因素的影响。测试期间仍需确认选中的正是待测 Hysteria2 条目,结束后恢复原有路由方式。

适合:短时判断失败是否与 Config 分流有关

Direct:建立直连参照

用于观察不经过代理时的目标访问结果。Direct 下能够打开网页,只能说明该目标的直连路径可用,不能验证 Hysteria2。

适合:核对目标本身及本地网络的基础访问情况

下面是用于理解匹配关系的最小规则片段,不是完整配置,也不指向真实测试服务。DOMAIN-SUFFIX 匹配指定域名及其子域名,FINAL 处理此前未匹配的请求;具体规则应放在兜底规则之前。

[Rule]
DOMAIN-SUFFIX,example.com,PROXY
FINAL,DIRECT

在这个片段中,访问 example.com 及其子域名才会匹配 PROXY,其余请求落到 DIRECT。如果实际测试的是另一个域名,就不能拿结果评价待测代理。On Demand 则控制何时按条件建立 VPN 连接,与条目协议或 Rule 的匹配范围不是同一层设置;排障时在 Settings → On Demand 核对现有条件,避免自动连接行为干扰手动测试。

用固定变量记录结果,不凭一次测速判断

协议测试应同时观察连通性、响应时间和持续传输。Connectivity Test 可以作为初步检查,但测试目标、方法与实际业务不同,结果不能直接当作下载带宽。本文没有给出跨网络通用的速度差值或丢包阈值,因为这些数值需要明确的测试条件才能成立。

可在本地笔记中记录“Wi-Fi、Config、目标命中 PROXY、3 次均成功、开始传输后网页响应变慢”这样的可观察现象。它比“感觉更快”更适合定位问题,也不会把某次短暂的网络波动误当成协议的固定特性。向已有服务商反馈时提供必要的错误信息,但不要公开认证密码或完整订阅地址。

常见问题:握手、证书与网络切换

同一条目在 Wi-Fi 超时,蜂窝网络却能连?

保持条目参数不变,分别在两个网络运行 Home → Connectivity Test,并访问同一目标。如果仅一个网络持续失败,优先检查该网络的 UDP 限制或访问要求。不要仅凭 TCP 443 可用就认定 UDP 443 也可用。

提示证书错误,可以直接忽略吗?

先检查设备日期与时间,再回到 Home 的条目编辑页核对服务地址及 TLS 服务器名称。向已有服务商确认正确名称和证书状态;保留证书校验,不把忽略错误当作长期解决办法。

带宽填得更大,为什么网页反而卡住?

较大的目标速率可能超过当前路径容量,引起排队和丢包。恢复之前的字段值,暂停持续下载,再用相同目标复测。核对单位是否为 Mbps,避免把 MB/s 的数值直接填入不同单位的字段。

更新订阅后突然不能连接,先查哪里?

在 Home 打开更新后的条目,检查 Type、端口、认证及附加参数是否改变,再确认选中条目与 Global Routing。若参数确实变化,向自己的服务商核对,不要在未知含义的字段中反复尝试随机值。

切换网络后断开,是 On Demand 设置错了吗?

先在新网络中手动重新连接,确认该网络允许 UDP。然后进入 Settings → On Demand 核对自动连接条件。手动连接也失败时,先排查网络与条目;只有自动触发行为不符合预期时,再单独调整 On Demand。

App Store 下载