rfc1929
此备忘录( memo )的状态
本文档为Internet社区指定了Internet标准跟踪协议,并请求讨论和改进建议。有关本协议的标准化状态和状态,请参阅当前版本的“互联网官方协议标准”(STD 1)。这份备忘录的分发是无限的。
1. 介绍
SOCKS版本5的协议规范指定了在初始SOCKS连接设置中使用任意身份验证协议的通用框架。本文档描述了其中一个协议,因为它适合SOCKS版本5身份验证“子协商”( subnegotiation )。
注意:
- 除非另有说明,数据包格式图中出现的十进制数字表示相应字段的长度,单位为八位字节( Byte );
- 如果给定的八位字节必须具有特定的值,则语法
用于表示该字段中单个八位字节的值;
X'hh'
- 当使用 Variable 一词时,它表示对应的字段具有由关联的(一个或两个八位字节)长度字段或数据类型字段定义的可变长度。
2. 初始协商(Initial negotiation)
一旦SOCKS V5服务器启动,并且客户端选择了用户名/密码身份验证协议,用户名/密码子协商就开始了。首先,客户端生成用户名/密码请求:
VER | ULEN | UNAME | PLEN | PASSWD |
---|---|---|---|---|
1 | 1 | 1 to 255 | 1 | 1 to 255 |
- VER 字段包含子协商的当前版本,即
;X'01'
- ULEN 字段包含后面 UNAME 字段的长度;
- UNAME 字段包含源操作系统已知的用户名;
- PLEN 字段包含后面 PASSWD 字段的长度;
- PASSWD 字段包含与给定 UNAME 的密码关联。
服务器验证提供的UNAME和PASSWD,并发送以下响应:
VER | STATUS |
---|---|
1 | 1 |
状态字段
X'00'
表示成功。如果服务器返回“failure”(状态值不是
X'00'
)状态,则必须关闭连接。
3. 安全考虑
本文档描述了一个为SOCKS协议提供身份验证服务的子协商。由于请求以明文形式携带密码,因此不建议在“嗅探”可行且实用的环境中使用此子协商。