# VLESS、VMess、Trojan 还是 Shadowsocks：该选哪一个

HTML: https://v2rc.app/zh/learn/choosing-a-protocol/ · 最后审阅: 2026-11-06

VLESS、VMess、Trojan 和 Shadowsocks 在传输上有何不同，哪一个在受限网络中更可靠，以及应该先要哪一种。附 v2rc 可导入的协议。

V2Ray 客户端不会替你选择协议。选择由你导入的配置决定，而配置来自你的服务商或你自己的服务器。所以实际的问题是：该向服务商要什么，或者自己该搭什么。本文解释真正重要的差异，最后给出一条简短的建议。

> **简短回答。** 如果你可以自己选择，而且网络受限，先从基于 TCP、使用 443 端口、带 `xtls-rprx-vision` flow 的 VLESS 加 REALITY 开始。再备一个不同类型的配置作为后备，例如 Trojan，或基于 TLS 和 WebSocket 的 VLESS。在开放的网络上，几乎什么都能用。没有哪个选择是永久的：审查方也在调整，这个月管用的，下个月未必管用。

## 三层，而不是一个选择

“VLESS 还是 VMess”听起来像一个决定，其实是三个：

- **协议**：客户端如何认证，以及载荷是什么样子（VMess、VLESS、Trojan、Shadowsocks）。
- **传输**：字节如何传送（纯 TCP、WebSocket、gRPC 等）。
- **安全**：连接外面包了什么（无、TLS 或 REALITY）。

同一个协议，取决于另外两层，可能几乎看不出来，也可能很容易被发现。审查方看到什么，主要由传输和安全这两层决定。

## 审查方能看到什么

- **看起来像随机的字节。** 纯 TCP 上的 Shadowsocks 和 VMess 没有可识别的报头。这本身就是一个信号：自 2021 年底起，防火长城会封锁第一个数据包看起来像完全加密数据的连接。详见[中国篇](https://v2rc.app/zh/learn/china/)。
- **TLS 握手。** Trojan，以及基于 TLS 的 VLESS 或 VMess，看起来像 HTTPS。审查方仍然可以检查服务器名称、IP 地址、证书，以及连接的行为方式。
- **借来的握手。** REALITY 模仿你所选的某个真实网站的 TLS 握手。没有密钥的探测会被转发到那个真实网站，看到的是它真实的页面。你不需要自己的域名或证书。

## 四种协议对比

| | VMess | VLESS | Trojan | Shadowsocks |
|---|---|---|---|---|
| 自身加密载荷 | 是 | 否，依赖 TLS 或 REALITY | 否，依赖 TLS | 是 |
| 默认看起来像 | 纯 TCP 上的随机字节 | 取决于安全层：随机字节、TLS 或 REALITY | HTTPS | 随机字节 |
| 需要自己的域名和证书 | 仅在使用 TLS 时 | 仅在使用 TLS 时，REALITY 不需要 | 需要 | 不需要 |
| 时钟不准会失败 | 会 | 不会 | 不会 | 不会 |
| 可导入 v2rc | 是 | 是 | 是 | 是 |

- **VMess** 是最初的 V2Ray 协议。它用 UUID 和时间戳认证，所以手机或服务器的时钟差了几分钟，就会在没有任何错误提示的情况下失败。请使用 alterId 0（AEAD 模式）；非零的 alterId 属于旧版做法。
- **VLESS** 是更轻量的继任者。它自己不做加密，因此隐私程度只取决于它下面那一层。请搭配 TLS 或 REALITY 使用，不要在公开互联网上使用安全为 `none` 的配置。
- **Trojan** 模仿 HTTPS：在普通 TLS 连接里放一个密码。不知道密码的客户端看到的是一个正常的网页。它需要为真实域名申请真实证书，而域名可能被封。
- **Shadowsocks** 是历史悠久的加密代理，也是最容易搭建的。请使用 AEAD 加密方式；`rc4-md5`、`aes-256-cfb` 等旧的流加密方式很弱。没有插件或封装时，它的流量就是前面说的完全加密那一类。

## REALITY 和 Vision 带来什么

在 REALITY 配置中，你会看到 `security=reality`、服务器名称（`sni`）、公钥（`pbk`）和 Short ID（`sid`）。服务器名称必须是支持 TLS 1.3 和 HTTP/2 的真实网站；[REALITY 文档](https://github.com/XTLS/REALITY)正是这样要求的。

`flow=xtls-rprx-vision` 是 Vision flow。一个 TLS 连接装在另一个 TLS 连接里，会留下可识别的特征；研究文献称之为 TLS-in-TLS，[Xue et al. (USENIX Security 2024)](https://www.usenix.org/conference/usenixsecurity24/presentation/xue) 证明这类特征可以暴露经过混淆的代理。Vision 的设计目的，是针对本身就是 HTTPS 的流量，减弱这种特征。

两者都不是魔法。服务器的 IP 地址和托管网络依然重要，REALITY 也不会隐藏“这条连接指向的是境外数据中心地址”这一事实。

## 该要什么

1. **在受限网络上**（俄罗斯、伊朗、中国及类似地区）：TCP 上的 VLESS 加 REALITY 和 Vision，使用 443 端口。
2. **再要一个不同类型的配置：** Trojan，或基于 TLS 加 WebSocket 或 gRPC 的 VLESS，可选择放在 CDN 之后。CDN 会隐藏服务器的 IP 地址，但这要求 CDN 本身在你所在的地方可以访问，且没有被限速。
3. **在开放的网络上：** 四种都行。用你的服务商已经支持的即可。
4. **如果你的服务商给你的是订阅：** 你无需选择，但可以读一读其中的链接，了解自己拿到的是什么。见[如何解读配置链接](https://v2rc.app/zh/learn/read-a-config-link/)。
5. **至少保留两个来自不同主机的配置。** 一个失效时，你需要的是另一个 IP 地址，最好还是另一种协议，而不是同一台服务器上的另一个配置。

## v2rc 能导入什么，不能导入什么

v2rc 可以从链接、V2Ray JSON 文件、剪贴板或订阅地址导入 VMess、VLESS（包括 REALITY）、Shadowsocks 和 Trojan。它不能导入 Hysteria 2、TUIC、WireGuard、AmneziaWG 和 NaiveProxy。前四个基于 UDP 运行，而许多受限网络会丢弃 UDP；NaiveProxy 基于 HTTPS 运行，但需要它自己的客户端。要用这些，你需要另一个应用。

v2rc 不内置服务器：配置由你自己提供。Smart Connect 会选出最快的配置，并在切换前确认隧道确实能通流量。

## 来源

- [REALITY documentation](https://github.com/XTLS/REALITY) 和 [Xray configuration examples](https://github.com/XTLS/Xray-examples)
- [Trojan protocol description](https://trojan-gfw.github.io/trojan/protocol)
- [Shadowsocks AEAD specification](https://shadowsocks.org/doc/aead.html)
- Xue, Kallitsis, Houmansadr, Ensafi：[Fingerprinting Obfuscated Proxy Traffic with Encapsulated TLS Handshakes](https://www.usenix.org/conference/usenixsecurity24/presentation/xue)，USENIX Security 2024
- Wu et al.：[How the Great Firewall of China Detects and Blocks Fully Encrypted Traffic](https://gfw.report/publications/usenixsecurity23/en/)，USENIX Security 2023
