协议深入探讨 · 1 分钟阅读

通过 SOCKS5 的 UDP:它是如何工作的(游戏、VoIP、QUIC)

大多数人知道 SOCKS5 中继 TCP。更少人知道它也可以中继 UDP——游戏、VoIP 和 QUIC 背后的流量。以下是 UDP ASSOCIATE 命令的工作原理,以及客户端和服务器支持为何都很重要。

SOCKS5不仅仅是一个TCP中继

代理的常见心理模型是一个TCP中继:打开连接,传输字节,关闭它。这涵盖了HTTP、HTTPS和SSH。但大量实时流量——在线游戏、语音和视频通话,以及越来越多的通过QUIC的网络本身——是通过UDP进行的,它是无连接和基于数据包的。SOCKS5是为数不多的可以承载它的代理协议之一,通过一个名为UDP ASSOCIATE的专用命令。SOCKS4和普通HTTP代理根本无法做到这一点。

理解这个机制解释了它为何强大以及为何它常常无法通过随机代理工作。

UDP ASSOCIATE 实际上是如何工作的

在SOCKS5中,UDP中继使用控制通道加上一个单独的数据路径。首先,客户端打开一个正常的TCP连接到代理,并发送一个UDP ASSOCIATE请求。代理回复一个IP地址和端口——它刚为这个会话打开的UDP中继端点。然后,客户端将其UDP数据报发送到该中继端点,每个数据报都包裹在一个小的SOCKS头中,指明最终目的地,代理将其转发并中继回复。

至关重要的是,TCP控制连接必须在整个会话期间保持打开:当它关闭时,代理会拆除UDP中继。因此,SOCKS5 UDP会话实际上是两个链接的连接——一个TCP保持活动和一个UDP数据流——这就是为什么仅打开UDP端的天真客户端会失败。这是通过SOCKS5代理运行QUIC、VoIP(RTP)、DNS查询和游戏协议的机制。

为什么它经常失败,以及 s4m 支持什么

两个诚实的警告。首先,两端必须支持UDP:您的客户端库必须实现UDP ASSOCIATE(许多并不支持——普通的HTTP抓取栈从不接触它),而代理服务器必须允许UDP中继。其次,通过代理的UDP会增加延迟,并可能被您与中继之间的NAT或防火墙阻止,因此实时性能从未得到保证——对于延迟敏感的游戏,使用VPN的全隧道WireGuard通常比UDP-over-SOCKS中继更好。

s4m代理在proxy.s4m.online:1080上经过身份验证为SOCKS5;对于TCP工作负载,它们是直接适配的,而当您的客户端和工作负载确实需要UDP中继时,SOCKS5是使其成为可能的协议。如果您的真实目标是通过一个出口路由所有游戏或通话——包括UDP——请优先选择VPN。使用API和工具检查协议行为。

FAQ

问题,已解答

SOCKS5代理可以承载游戏或VoIP流量吗?

是的,原则上可以通过 UDP ASSOCIATE 命令实现,该命令中继 UDP 数据报。但您的客户端和代理都必须支持 UDP 中继,并且额外的跳数会增加延迟。对于对延迟敏感的游戏或通话,完整隧道的 WireGuard VPN 通常比 SOCKS5 上的 UDP 更合适。

为什么UDP在我的SOCKS5代理下无法工作?

通常是因为一方不支持它。许多客户端库仅实现TCP,而一些代理服务器会阻止UDP中继。UDP ASSOCIATE还需要TCP控制连接在整个会话期间保持打开——如果关闭,UDP中继将被拆除。

SOCKS5用于TCP,VPN用于所有其他

在 proxy.s4m.online:1080 上为 TCP 工作负载提供经过身份验证的 SOCKS5,以及在需要每个数据包(包括 UDP)通过一个出口时的全隧道 WireGuard/OpenVPN。

人们通过搜索找到此页面

此页面回答的真实搜索短语 — 链接的短语打开详细覆盖它们的页面。