SOCKS5 是什么及其流量范围
代理工具入门名词编辑部 · 更新于 2026-10-18
SOCKS5 是 RFC 1928 定义的代理协议,位于应用层与传输层之间,可承载 TCP 与 UDP,不转发 ICMP,习惯端口 TCP 1080。HTTP 代理则靠 CONNECT 方法为 HTTPS 建立隧道。
一图看懂点任一步跳到对应小节
SOCKS5 是 RFC 1928(1996 年)定义的代理协议,在概念上位于应用层与传输层之间,为 TCP 和 UDP 应用提供穿过防火墙的框架。RFC 明确写它不提供网络层网关服务,例如不转发 ICMP,所以 ping 不经过 SOCKS5。
SOCKS5 的要点
展开详细说明
| 项 | RFC 1928 的规定 |
|---|---|
| 命令 | CONNECT(X'01')、BIND(X'02')、UDP ASSOCIATE(X'03') |
| 认证方式 | X'00' 无需认证、X'01' GSSAPI、X'02' 用户名/密码 |
| 地址类型 | X'01' IPv4、X'03' 完整域名、X'04' IPv6 |
| 习惯端口 | TCP 1080(是约定,不是强制) |
相比 SOCKS4,SOCKS5 加了 UDP 支持、通用的认证框架,地址也支持域名与 IPv6。因为可以直接把域名交给代理端解析,客户端不一定要先在本地查 DNS;如果客户端先在本地解析再把 IP 交过去,那次 DNS 查询就走了本地网络,见DNS 说明。
HTTP 代理与 CONNECT
展开详细说明
RFC 9110 写道,客户端按自己的配置决定是否用代理,代理本身通常用一个 http 或 https URI 表示。访问 HTTPS 网站时,客户端用 CONNECT 方法请求代理建立到目标「主机:端口」的隧道,之后代理双向盲转发,内容由客户端与目标之间的 TLS 加密。MDN 提醒,并非所有代理服务器都支持 CONNECT,有的只允许 443 端口。需要认证时,HTTP 用 Proxy-Authorization 请求头和 407 状态码。
对照
展开详细说明
| 项 | HTTP 代理 | SOCKS5 |
|---|---|---|
| 所在层 | HTTP(应用层)协议里的中介 | 应用层与传输层之间 |
| UDP | 标准 CONNECT 只描述建立连接隧道,一般理解为 TCP | 有 UDP ASSOCIATE |
| HTTPS 网站 | 用 CONNECT 隧道 | 用 CONNECT 命令转发 TCP |
| Windows 系统代理 | 支持 | 不支持 |
| macOS 系统代理 | 网页代理(HTTP)、安全网页代理(HTTPS) | 有 SOCKS 代理选项 |
代理客户端常把两种协议放在同一个端口:mihomo 的入站类型有 http、socks 和 mixed,mixed 从名称看是同一端口同时接受两种请求(文档没有逐字定义)。系统层面的差别见系统代理说明。
常见问题
SOCKS5 能代理 ping 吗?
不能。RFC 1928 说明 SOCKS5 不提供网络层网关服务,例如不转发 ICMP,而 ping 使用的就是 ICMP。
SOCKS5 默认端口是 1080 吗?
RFC 1928 的原话是 SOCKS 服务「习惯上」位于 TCP 1080 端口。这是约定,实际服务可以用别的端口。