网络代理协议演进,工程取舍
发布时间:
从最早的 Shadowsocks 对称加密,到 V2Ray 的标准 TLS 伪装,再到 Xray 的 REALITY 借用证书,以及当下基于 UDP 的 Hysteria 协议,一直围着特征消除和性能开销两件事打转。
早期对称加密与主动探测(Shadowsocks)
在 Shadowsocks(SS)出现之前,主流方案是 PPTP、L2TP 或 OpenVPN,这些传统 VPN 协议的握手特征非常明显,在深度包检测(DPI)面前基本是透明的。SS 换了个思路,用对称加密(后来升级为 AEAD)把流量变成无规律的高熵随机字节流,没有固定特征码,防火墙在很长一段时间里只能默认放行。
但这种纯靠随机噪声隐藏特征的做法,后来撞上了主动探测。防火墙识别到疑似 SS 的高熵 TCP 流量后,会模拟客户端向服务器发伪造的探测包;如果服务器按 SS 协议规则做出特定响应,IP 就会被直接封掉。原版作者停更后,社区转向了基于 Rust 的 shadowsocks-rust,现在更多作为内网中转或轻量分流的底层组件,直接暴露在公网上抗探测已经比较吃力。
流量伪装与嵌套开销(V2Ray / VMess)
为了应付主动探测,2015 年出现的 V2Ray(Project V)和 VMess 协议把思路从隐藏特征改成了伪装成正常 HTTPS 流量。最经典的组合是 VMess + WebSocket + TLS + Web:代理数据封在标准 WebSocket 里,外层套上合法的 HTTPS(TLS),对外看起来就是一个普通网站;如果遇到主动探测,服务端直接把连接导向真实的静态网页返回 200 OK。
这套方案很管用,代价是性能损耗大。数据先被 VMess 加密一次,外层再套一层 TLS,相当于做了两次加解密,服务端和客户端的 CPU 开销翻倍,繁琐的握手也拉长了首包延迟。另外用户还得自己买域名、申请并续期证书,多了一层运维负担。
去双重加密与免证书(Xray / VLESS / REALITY)
针对二次加密的 CPU 损耗和证书维护成本,RPRX 主导的 Project X 社区从 V2Ray 分叉出 Xray-core,做了两项关键改动。
首先是 VLESS 协议配 XTLS。VLESS 去掉了 VMess 冗余的校验与加密,变成无状态的轻量协议;XTLS 则复用了外层 TLS 通道,不再对内层已加密的数据重复加密,省掉了二次加解密的计算开销。
其次是 REALITY 协议,解决了必须自己买域名和配证书的问题。配置 REALITY 时,服务器直接借用 Apple、Microsoft 等大厂网站的真实证书。遇到防火墙探测时,REALITY 把请求原封不动转发给真正的目标大厂服务器;只有客户端发来带特定私钥签名的握手包时,才接管流量进入代理通道。不用维护域名和证书,防探测效果也更好。
客户端内核的分化(Mihomo 与 Sing-box)
底层协议稳定下来之后,客户端内核分化出了两条路线。
一条是 Mihomo(原 Clash.Meta)。2023 年 Clash 原作者删库停更后,社区分支 Clash.Meta 接手维护并在 2024 年改名为 mihomo,延续 YAML 配置。它的强项在于丰富的路由规则与策略组分流,支持多级延迟测试自动切换、负载均衡和 Fake-IP 模式(能明显缩短 DNS 解析带来的首包等待)。目前主流的桌面图形客户端,如 Clash Verge Rev、Mihomo Party,底层基本都用 Mihomo。
另一条是 Sing-box,由 nekohasekai 在 2022 年发起,采用 JSON 配置。它几乎支持市面上所有新老协议(REALITY、Hysteria 2、TUIC、Shadowsocks 等),并且官方直接维护全平台的原生客户端。因为精简了 Clash 那套复杂的策略组逻辑,Sing-box 的内存占用和耗电控制更好,适合在手机等移动设备上常驻后台。
基于 UDP/QUIC 的抗丢包传输(Hysteria 2 与 TUIC)
传统的 TCP 代理(包括 REALITY)在跨国长距离或高丢包的劣质线路上,会受制于 TCP 拥塞控制和队头阻塞(Head-of-Line Blocking),一旦丢包网速就断崖式下跌。近几年基于 UDP(QUIC)的协议开始普及。
AperNet 团队开发的 Hysteria 2 针对 UDP 传输做了深度改造,内置了激进的拥塞控制算法,即便在 20% 到 30% 的高丢包环境下也能强行把带宽跑满,对付劣质线路非常有效;缺点是 UDP 流量特征明显,在部分对 UDP 管控严格或有 QoS 限制的运营商网络下容易被限速。EAimTY 开发的 TUIC v5 同样基于 QUIC,更侧重轻量与多路复用(Multiplexing),建连延迟低,适合移动端日常高频请求。此外还有 AnyTLS 等新方案,通过对数据包大小和发送间隔做填充(Padding)与分包,模拟浏览器访问普通 HTTPS 网页的统计特征,用来规避 TLS 嵌套带来的长度特征泄露。
实际选型经验
日常使用下来,不同场景各有合适的组合:
- 自建主力节点,追求稳定和低维护成本:优先选 VLESS + REALITY,不用买域名和管证书,防封锁能力经过了长期验证。
- 线路质量差、晚高峰丢包严重:选 Hysteria 2,靠 UDP 强行撑起吞吐。
- 手机端常驻,看重省电与轻量:用 Sing-box 官方客户端配 VLESS 或 TUIC v5。
- 桌面端多设备复杂分流:用基于 Mihomo 内核的桌面客户端。