SOCKS5 代理是什么?DNS、认证与使用边界

SOCKS5 代理是什么?DNS、认证与使用边界
SOCKS5 代理是指应用通过 SOCKS 第 5 版协议,把连接请求交给中继服务器转发。客户端会先协商认证方法,再提交命令、目标地址和端口。它描述的是连接协议,不是 IP 类型;仅凭“SOCKS5”这个名称,也不能断定流量已经加密、DNS 一定由代理解析、UDP 一定可用,或某项产品一定支持。
先用一句话说清 SOCKS5
支持 SOCKS5 的应用会先连接 SOCKS 服务器,双方选择认证方式并完成对应协商,随后客户端提交转发请求。请求中包含命令、目标地址和目标端口。服务器接受 TCP 的
CONNECTSOCKS5、静态 IP 和 VPS 也不能混成一个概念。SOCKS5 说明应用怎样请求中继;静态 IP 说明地址分配是否固定;VPS 则是服务器产品。一个名称不会自动证明另外两个能力同时存在。
SOCKS5 协议事实:RFC 1928 实际协商了什么
根据 RFC 1928,SOCKS5 并不是简单填入一个主机和端口就结束。客户端先提交自己支持的认证方法,服务器选择一种;完成方法对应的协商后,客户端再发出三类请求之一:
- CONNECT:请求服务器建立一条对外 TCP 连接。
- BIND:用于需要等待第二条入站连接的协议流程。
- UDP ASSOCIATE:为 UDP 数据报建立中继关联。
真正的应用不一定把三种命令都开放给用户。某个软件可能只实现 CONNECT;某个程序库虽然接受 SOCKS5 地址,却仍在本地解析域名。看到“支持 SOCKS5”时,还要继续确认它支持哪条命令、怎样处理 DNS、使用哪种认证。
<h3>SOCKS5 协商字段速查</h3> <table class="ipipd-facts"> <thead> <tr><th>核对点</th><th>协议会传递什么</th><th>仍需单独确认什么</th></tr> </thead> <tbody> <tr><td>方法选择</td><td>客户端支持的认证方法与服务器选择结果</td><td>客户端和端点实际实现了哪些方法</td></tr> <tr><td>转发请求</td><td>CONNECT、BIND 或 UDP ASSOCIATE</td><td>应用是否开放所需命令</td></tr> <tr><td>目标位置</td><td>地址类型、地址值和端口</td><td>应用发送域名,还是先在本地解析</td></tr> <tr><td>服务器回复</td><td>结果码、绑定地址与端口</td><td>后续应用层请求是否也正常</td></tr> <tr><td>UDP 关联</td><td>接收 UDP 数据报的中继地址</td><td>客户端支持、服务器策略、关联寿命和分片行为</td></tr> </tbody> </table>

