天天看点

RFC1929中文翻译——SOCKS v5 Username/Password 认证

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协议提供身份验证服务的子协商。由于请求以明文形式携带密码,因此不建议在“嗅探”可行且实用的环境中使用此子协商。

RFC