跳到主要内容

3. 基于 TCP 的客户端程序 (Procedure for TCP-based clients)

当基于 TCP 的客户端希望建立到只能通过防火墙访问的对象的连接时 (此判断由实现决定), 它必须在 SOCKS 服务器系统上打开到适当 SOCKS 端口的 TCP 连接.SOCKS 服务通常位于 TCP 端口 1080.如果连接请求成功, 客户端进入要使用的认证方法的协商, 使用所选方法进行认证, 然后发送中继请求.SOCKS 服务器评估请求, 并建立适当的连接或拒绝它.

客户端连接到服务器, 并发送版本标识符/方法选择消息:

                +----+----------+----------+
|VER | NMETHODS | METHODS |
+----+----------+----------+
| 1 | 1 | 1 to 255 |
+----+----------+----------+

VER 字段对于此版本的协议设置为 X'05'.NMETHODS 字段包含 METHODS 字段中出现的方法标识符八位字节的数量.

服务器从 METHODS 中给出的方法之一中选择, 并发送 METHOD 选择消息:

                      +----+--------+
|VER | METHOD |
+----+--------+
| 1 | 1 |
+----+--------+

如果所选 METHOD 为 X'FF', 则客户端列出的方法均不可接受, 客户端必须 (MUST) 关闭连接.

当前为 METHOD 定义的值为:

  • X'00' 不需要认证 (NO AUTHENTICATION REQUIRED)
  • X'01' GSSAPI
  • X'02' 用户名/密码 (USERNAME/PASSWORD)
  • X'03' 到 X'7F' IANA 分配 (IANA ASSIGNED)
  • X'80' 到 X'FE' 保留供私有方法使用 (RESERVED FOR PRIVATE METHODS)
  • X'FF' 无可接受方法 (NO ACCEPTABLE METHODS)

然后客户端和服务器进入特定于方法的子协商.

方法相关子协商的描述出现在单独的备忘录中.

为此协议开发新 METHOD 支持的开发者应联系 IANA 获取 METHOD 编号.应参考已分配号码文档以获取 METHOD 编号及其对应协议的当前列表.

合规实现必须 (MUST) 支持 GSSAPI, 并且应该 (SHOULD) 支持用户名/密码认证方法.