代理协议的演进:从 Shadowsocks、VMess 到 VLESS、Hysteria2 与 AnyTLS
代理协议是怎么演进的?本文按 Shadowsocks、VMess、Trojan、VLESS 与 Reality、Hysteria2、AnyTLS 的顺序,梳理每一代协议想解决的问题和设计思路变化:从加密内容,到伪装成正常 HTTPS,再到优化高丢包线路和处理 TLS 流量特征,并说明普通用户选节点和客户端时该关注什么。
简要回答 代理协议的演进大致沿着三条思路展开:先解决“内容加密”(Shadowsocks、VMess),再解决“看起来像正常 HTTPS”(Trojan、VLESS 与 Reality),然后针对高丢包线路优化传输(Hysteria2),并进一步处理 TLS 流量本身的特征(AnyTLS)。对用户而言,新协议不等于一定更快,关键是客户端支持和当前网络是否适配。
代理协议的演进,本质上是在“更安全、更像正常流量、更适应恶劣网络”三个方向上不断迭代。从 Shadowsocks、VMess 专注加密内容,到 Trojan、VLESS 与 Reality 追求看起来像普通 HTTPS,再到 Hysteria2 优化高丢包线路、AnyTLS 处理 TLS 流量特征,每一代都在回应上一代暴露的问题。对用户来说,理解思路比记住名字更有用,因为它能帮你判断某类节点失效时该换哪一类。
本文只梳理设计思路,不涉及具体年份。请在遵守所在地法律法规和服务条款的前提下使用相关工具。
各代协议的核心思路
| 协议 | 主要思路 | 底层传输 | 用户侧关注点 |
|---|---|---|---|
| Shadowsocks | 轻量加密代理,配置简单 | TCP/UDP | 兼容性最好,几乎所有客户端都支持 |
| VMess | 带身份验证的加密协议,功能更丰富 | TCP 为主 | 对系统时间敏感 |
| Trojan | 借用 TLS,让流量外观接近普通 HTTPS | TCP + TLS | 需要有效证书与域名 |
| VLESS(Reality) | 协议本身精简,加密交给外层;Reality 可借用真实网站的握手 | TCP + TLS/Reality | 需要较新内核 |
| Hysteria2 | 基于 QUIC,针对高丢包、高延迟线路优化 | UDP | 依赖 UDP 畅通 |
| AnyTLS | 在 TLS 之上处理数据包长度等特征 | TCP + TLS | 需要较新客户端支持 |
思路是怎样变化的
第一阶段:加密内容
Shadowsocks 用简洁的方式加密转发流量,部署容易、开销小。VMess 在此基础上加入了更完整的身份验证与传输选项,但也因此更复杂,并且对客户端与服务器的时间一致性有要求。两者的现状可参考 Shadowsocks 和 VMess 还能用吗。
第二阶段:像普通 HTTPS
仅仅加密还不够,加密流量本身的特征也可能被识别。Trojan 选择直接使用 TLS,让连接看起来与访问普通网站相近。VLESS 则把协议本身做得更轻,把加密交给 TLS;Reality 更进一步,不需要自备证书,而是借用真实网站的 TLS 握手信息,降低部署门槛与被识别的概率。
第三阶段:适应恶劣网络
TCP 在高丢包线路上重传频繁,速度会明显下降。Hysteria2 基于 UDP 上的 QUIC,并采用自己的拥塞控制思路,在丢包较多的线路上可能表现更好,但前提是网络对 UDP 没有明显限制。TCP 与 UDP 的差异见 TCP、UDP、TLS 基础。
第四阶段:处理 TLS 的“套娃”特征
在 TLS 通道里再传输 HTTPS 流量,数据包的长度与节奏可能呈现出可辨认的模式。AnyTLS 的思路是对这些特征进行填充与调整,让流量更接近普通连接。详细介绍见 AnyTLS 是什么。
对普通用户的启示
- 协议多样比单一更可靠:订阅里同时有 TCP 类和 UDP 类节点,出问题时可以互相替代。
- 客户端要跟上:新协议依赖新内核,Clash 系客户端的内核变化见 Clash 内核的演变。
- 按网络选协议:UDP 受限的网络优先 TCP 类协议;线路丢包严重时可以试试 Hysteria2。
- 不要迷信“最新”:线路质量对体验的影响往往大于协议本身,横向对比见 Hysteria2、VLESS 与 Trojan 对比。
常见问题
新协议一定比旧协议好吗?
不一定。新协议通常针对特定问题做了改进,但实际体验还取决于线路质量、机场的部署方式和你所在的网络。同一订阅里多保留几种协议,遇到问题时才有切换余地。
Shadowsocks 和 VMess 现在还能用吗?
仍有不少机场在提供,很多场景下依然可以使用,尤其是中转或专线节点。是否适合你,以实际连接稳定性为准。
用新协议需要换客户端吗?
需要客户端内核支持该协议。停止维护的旧客户端往往不认识 Hysteria2、VLESS Reality 或 AnyTLS 节点,建议使用仍在更新的客户端。