无论是TCP还是UDP通过代理,首先要同代理取得联系。为了能够确保在第一阶段顺利确保数据传输,协议规定客户端采用TCP方式连接联系代理服务器。
一旦客户同代理的1080端口连接上,客户首先要发送一个版本标识/方法选择的TCP报文给代理服务器,具体格式为:
版本号(1字节) | 可供选择的认证方法(1字节) | 方法序列(1-255个字节长度)
如果是socks4协议,版本号就是0x04,但是这里是支持UDP的Socks5,所以是字节0x05。此说明对于后面的报文格式解释的版本部分也都适用。
Socks协议定义了0-255种通过代理的认证方法:
0x00 无验证需求
0x01 通用安全服务应用程序接口(GSSAPI)
0x02 用户名/密码(USERNAME/PASSWORD)
0x03 至 X'7F' IANA 分配(IANA ASSIGNED)
0x80 至 X'FE' 私人方法保留(RESERVED FOR PRIVATE METHODS)
</