OpenVPN TCP 对比 UDP
更新于 2026年9月21日 · 我们如何研究
OpenVPN 可以用 UDP 也可以用 TCP 承载隧道。这个选择与安全性无关 — 加密是一样的 — 而是关系到丢包时传输层如何表现。
核心区别
UDP 把包发出去,不关心是否送达。TCP 保证送达和顺序,丢了什么就重传什么。在 VPN 隧道内部,这种保证反而成了负担,因为隧道里的应用通常本身也在用 TCP。
TCP-over-TCP 导致的性能崩塌
当一条 TCP 隧道承载 TCP 流量时,两层各自都在跑自己的重传计时器。在丢包严重的线路上,外层还在重传,内层连接又要求重发,队列越积越多,吞吐量可能远远跌到线路本该达到的水平之下。这正是多数 VPN 默认使用 UDP 的原因。
各自适合什么时候用
按你当下所在的网络来选择传输方式,而不是按某种笼统的偏好。
| 场景 | 用途 | 原因 |
|---|---|---|
| 家庭宽带,日常使用 | UDP | 延迟更低,也不会出现双重重传 |
| 流媒体或游戏 | UDP | 延迟和抖动比「一定要送达」更重要 |
| 封锁 UDP 的酒店、机场或校园 Wi-Fi | 443 端口上的 TCP | 看起来像普通的 HTTPS,很少被过滤 |
| 丢包很严重的移动网络 | 两者都测一下 | TCP 可能让一条不稳的线路变稳,也可能让它糟糕得多 |
| 在严格的企业代理后面 | 443 端口上的 TCP | 常常是唯一还能连上互联网的传输方式 |
实际使用的端口
OpenVPN UDP 通常运行在 1194 端口。OpenVPN TCP 一般提供在 443,也就是 HTTPS 端口上,因为几乎所有网络都必须放行它。把 VPN 跑在 443 上本身并不是混淆 — 深度包检测依然能认出 OpenVPN 的握手 — 但它能绕开简单的端口封锁。对于检查得更深的网络,见混淆。
如何测出哪一种更适合你
- 用 UDP 连接最近的服务器,留意网页是否能迅速打开。
- 对同一台服务器用 TCP 再做一次同样的检查,这样变化的只有传输方式。
- 在网络繁忙的时段再测一次;TCP 的问题会在有负载时显现出来。
- 记录你实际观察到的现象,不要只凭一次测量下结论 — 见如何测试 VPN。
据 ZoogVPN 所述
ZoogVPN 在 Windows、macOS、iOS、Android、Linux 和路由器上都提供 UDP 与 TCP 两种形式的 OpenVPN,并称 TCP 版本是有防火墙环境下可靠的选择。