TCP、UDP、TLS 是什么?和 Hysteria2、Trojan 等代理协议有什么关系
TCP、UDP、TLS 是什么?本文用通俗语言解释 TCP 的可靠传输、UDP 的轻量快速和 TLS 的加密握手,对照 Trojan、VLESS、AnyTLS、Hysteria2 分别跑在哪一层,说明 UDP 受限时 Hysteria2 容易超时、系统时间不准导致 TLS 握手失败的原因,帮你看懂节点报错。
简要回答 TCP 是可靠、有序的传输方式,UDP 是轻量、不保证送达的传输方式,TLS 是在传输之上加密并验证身份的安全层。Trojan、VLESS、AnyTLS 等协议通常基于 TCP 加 TLS,Hysteria2 则基于 UDP 上的 QUIC。知道这一点,就能理解为什么不同协议的节点会在不同网络环境下表现不同。
TCP 和 UDP 是两种数据传输方式,TLS 是加在传输之上的加密层。简单说:TCP 可靠但开销较大,UDP 轻快但不保证送达,TLS 负责加密和验证对方身份。常见代理协议里,Trojan、VLESS、AnyTLS 通常跑在 TCP 加 TLS 上,Hysteria2 跑在基于 UDP 的 QUIC 上,所以它们在同一网络下的表现可能差别很大。
三个概念分别是什么
- TCP:发送前先“握手”建立连接,数据按顺序到达,丢了会重传。网页、下载、邮件大多依赖 TCP。
- UDP:不建立连接,直接发送数据包,不保证顺序也不自动重传。语音、视频通话、游戏和 DNS 查询常用 UDP。
- TLS:在连接之上完成加密握手,确认服务器身份并加密内容。浏览器地址栏里的 HTTPS,就是 HTTP 加上 TLS。
| 对比项 | TCP | UDP |
|---|---|---|
| 连接方式 | 先握手再传输 | 无需握手 |
| 可靠性 | 丢包自动重传 | 不保证送达 |
| 顺序 | 保证顺序 | 不保证顺序 |
| 开销 | 较大 | 较小 |
| 高丢包网络 | 重传多,速度下降明显 | 可由上层协议自行处理 |
与常见代理协议的关系
| 协议 | 底层传输 | 加密方式 | 特点 |
|---|---|---|---|
| Trojan | TCP | TLS | 流量外观接近普通 HTTPS |
| VLESS | TCP(常见) | TLS 或 Reality | 协议本身轻量,加密依赖外层 |
| AnyTLS | TCP | TLS | 着重处理 TLS 流量特征,介绍见 AnyTLS 是什么 |
| Hysteria2 | UDP(QUIC) | QUIC 内置 TLS 1.3 | 在高丢包线路上可能更有优势 |
QUIC 是一种跑在 UDP 上的传输协议,自带加密和可靠传输机制。Hysteria2 在它的基础上使用自己的拥塞控制思路,因此对 UDP 是否畅通比较敏感。更详细的协议对比见 Hysteria2、VLESS 与 Trojan 对比。
一次代理连接大致经历了什么
以一个基于 TCP 加 TLS 的节点为例,你在浏览器打开海外网站时,大致会发生以下过程:
- 浏览器把请求交给本地代理客户端。
- 客户端与节点服务器建立 TCP 连接,完成三次握手。
- 双方进行 TLS 握手,客户端验证服务器身份并协商加密方式。
- 客户端在加密通道中告诉节点“要访问哪个网站”。
- 节点代为访问目标网站,并把结果沿原路送回。
Hysteria2 节点的流程类似,只是第 2、3 步合并为一次基于 UDP 的 QUIC 握手,建立连接所需的往返次数更少。任何一步失败,客户端日志里都会留下对应的提示,这也是排查时要先看日志的原因。
这些知识能帮你排查什么
- 只有 Hysteria2 节点超时:大概率是当前网络对 UDP 有限制,换 TCP 类协议节点对比,排查思路见 节点超时怎么办。
- 提示证书错误或握手失败:多与 TLS 有关,先检查系统时间和订阅是否最新,详见 TLS 握手失败排查。
- 网页正常但语音、游戏不通:可能是节点或客户端没有正确转发 UDP 流量。
用命令简单验证 TLS 连接
下面的命令会显示 TLS 握手的详细过程,可以看到证书信息和协商的 TLS 版本(Windows 请使用 curl.exe):
curl -v -I -m 10 https://www.example.com
输出中出现 SSL connection using TLSv1.3 之类的行,说明 TLS 握手成功;如果停在握手阶段报错,就重点排查时间、网络和证书。
常见问题
Hysteria2 为什么在有些网络下完全连不上?
Hysteria2 基于 UDP,如果当前网络对 UDP 流量限速或限制,节点就可能超时。这时换用同地区基于 TCP 的 Trojan、VLESS 或 AnyTLS 节点通常就能恢复。
TLS 握手失败一般是什么原因?
常见原因包括系统时间偏差过大、节点证书或配置变更而订阅未更新、客户端内核过旧,以及网络中间设备干扰。先校准时间、更新订阅和客户端。
普通用户需要自己选择 TCP 还是 UDP 吗?
不需要手动配置,协议已经决定了底层用哪种方式。你只需要在某类节点表现不好时,换另一类协议的节点对比即可。