话不多说,先上图,看图说话。
1、客户端建立连接并发送认证
创建与socks5服务器的TCP连接后,客户端要先发送请求来协商版本及认证方式:格式为:
VER:socks的版本(socks5对应的是0x05)
NMETHODS:在METHODS字段中出现的方法的数目.
METHODS:客户端支持的认证方式列表,每个方法占1字节。
对应的代码:
2、 服务器返回确认信息
VER:socks版本(在socks5中是0x05);
METHOD:服务端选中的方法(若返回0xFF表示没有方法被选中,客户端需要关闭连接);
如果是需要用户名密码认证,则发送用户名密码。
VER:鉴定协议版本
ULEN:用户名长度
UNAME:用户名
PLEN:密码长度
PASSWD:密码
服务器鉴定完之后,返回:
VER:鉴定协议版本
STATUS:鉴定状态
其中鉴定状态 0x00 表示成功,0x01 表示失败。