配置代理时经常看到”SOCKS5″这个写法,却很少有人追问:SOCKS 是不是还有别的版本?4、4a、5 之间到底差在哪?版本不匹配的典型后果,是明明配好了却连不上,或者域名解析出错。花三分钟认清版本差异,能少踩很多配置坑。
SOCKS4 和 SOCKS5 差在哪
核心差别在能力上。SOCKS4 只支持 TCP 连接,不支持 UDP 转发,也不支持认证;它把”目标地址”直接发给代理,默认只认 IP 形式,域名要先在本机解析好。SOCKS5 在 1996 年推出,补上了三块能力:支持 UDP 关联转发,适合实时音视频和游戏类应用;支持用户名密码认证,账密验证从这一版开始才成立;支持把域名交给代理解析,客户端不用自己先查一遍 DNS。所以现在市面上的代理服务基本都以 SOCKS5 为准,SOCKS4 只在很老的设备或工具里出现。
SOCKS4a 里的 a 是什么
SOCKS4a 是 SOCKS4 的一个小补丁:它允许客户端把域名直接发给代理,由代理去解析,而 SOCKS4 只接受 IP。换句话说,4a = 4 的”域名解析增强版”,但它仍然不支持 UDP 和认证。这个版本存在的意义主要是兼容老工具——如果你看到某个老软件只写支持 SOCKS4/4a,说明它连不上需要认证的现代代理服务,选择服务时要格外留意这一点。
选代理时该怎么看版本
优先级很简单:能用 SOCKS5 就用 SOCKS5。它覆盖了 4 和 4a 的所有能力,还多出认证与 UDP 支持,兼容面最广。只有当客户端工具版本太老、只认 SOCKS4/4a 时,才需要降级,而这时要注意两点:一是该代理是否允许无认证连接,二是域名解析是否由代理完成,否则会出现”IP 能通、域名打不开”的怪现象。判断方法也直接:看客户端连接信息里显示的是 SOCKS5 还是 SOCKS4,或直接看服务商文档标注的协议版本。
| 版本 | TCP | UDP | 认证 | 域名解析 |
|---|---|---|---|---|
| SOCKS4 | 支持 | 不支持 | 不支持 | 不支持(只认IP) |
| SOCKS4a | 支持 | 不支持 | 不支持 | 支持(代解析域名) |
| SOCKS5 | 支持 | 支持 | 支持(账密) | 支持 |
- 默认选 SOCKS5:能力最全,认证、UDP、域名解析都覆盖
- 老工具才降级:只有客户端只认 4/4a 时才退,且确认服务端支持
- 注意解析权:4a 才支持代理解析域名,4 只认 IP,混用会”域名打不开”
- 看文档标注:服务商标明支持哪些版本,避免配了不兼容的组合
与 IP 代理的关系:SOCKS 协议版本决定了代理客户端与服务端的握手方式与能力边界,版本不匹配是”配置看起来对但连不上”的高频原因;在遵守平台规则与法律法规的前提下,优先选择 SOCKS5 兼容的服务与工具,能避开绝大多数协议层面的连接问题。
