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

SOCKS5 与 SOCKS4:技术差异

SOCKS4和SOCKS5在表面上看起来相似,但在决定你的流量是否有效的三个方面有所不同:身份验证、UDP支持和远程DNS。以下是精确的协议级比较。

同一想法的两个版本

SOCKS是一种低级代理协议:它不理解HTTP,而是简单地在您的客户端和目标之间中继一个TCP(在v5中,还有UDP)连接。这种与协议无关的设计就是SOCKS适用于任何内容的原因——网页、电子邮件、游戏流量、SSH——不仅仅是浏览器。SOCKS4首先出现;SOCKS5在RFC 1928中定义,是今天几乎所有设备使用的版本。它们之间的差异不多,但却是决定性的。

两者都以您的客户端请求代理连接到目标主机和端口开始。版本之间的变化在于谁可以使用代理、它承载的流量类型以及目标主机名的解析位置。

三个真正重要的区别

1. 认证. SOCKS4 没有内置的认证方法(SOCKS4a 仅添加了一个用户ID字段,容易伪造)。SOCKS5 定义了适当的 认证,最常见的是用户名/密码,因此代理可以限制对付费或授权用户的访问。这就是商业代理使用 SOCKS5 的原因。

2. UDP 和 IPv6. SOCKS4 仅支持 TCP 和 IPv4。SOCKS5 增加了 UDP 中继(通过 UDP ASSOCIATE 命令)和原生 IPv6 地址,因此它可以承载 DNS、VoIP、QUIC 和游戏流量,而 SOCKS4 根本无法做到。有关该机制,请参见 UDP over SOCKS5。

3. 远程 DNS. 使用 SOCKS5,您可以请求代理解析主机名(在像 cURL 这样的工具中的 socks5h 模式),因此查找不会离开您的机器,也不会导致 DNS 泄漏。SOCKS4 在本地解析并仅发送一个 IP。

使用哪个,以及 s4m 说什么

对于大约1990年代中期之后写的任何内容,请使用SOCKS5——特别是socks5h变体,以便DNS在远程解析并保持主机名私密。SOCKS4仅在遗留工具和一些公共代理列表中存活,其缺乏身份验证正是这些代理开放(且有风险)的原因。实用规则:优先选择带凭据的SOCKS5以确保隐私和可达性;将裸SOCKS4视为仅供测试的好奇。

s4m在proxy.s4m.online:1080上提供经过身份验证的SOCKS5和在3128端口上的HTTP代理——请参见代理页面和什么是SOCKS5。使用socks5h://USER:PASS@proxy.s4m.online:1080以在一个端点获取身份验证、UDP能力和无泄漏的远程DNS。如果您特别需要测试遗留行为,免费列表中包括SOCKS4条目,但SOCKS5是您想要的默认选项。

FAQ

问题,已解答

SOCKS4 和 SOCKS5 之间的主要区别是什么?

SOCKS5 增加了真实的认证、UDP 中继、IPv6 支持和远程 DNS 解析 — 这些 SOCKS4 都没有。SOCKS4 仅支持 TCP、仅支持 IPv4,并且实际上没有认证,因此 SOCKS5 是任何需要安全性或非 TCP 流量的现代默认选择。

socks5h中的"h"是什么意思?

这意味着代理在远程解析主机名,而不是在您的本地机器上。使用 socks5h:// 可以将您的 DNS 查询保持在自己的网络之外,防止可能泄露您正在访问的域名的 DNS 泄漏。普通的 socks5:// 首先在本地解析。

经过认证的 SOCKS5,做得正确

使用 socks5h 连接到 proxy.s4m.online:1080 进行身份验证,支持 UDP,并在单一端点中实现无泄漏的远程 DNS。按需计费,同时在 3128 上也提供 HTTP 代理。

人们通过搜索找到此页面

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