Sock5代理协议详解

2018-06-14  本文已影响0人  倦飞知还

第一步,客户端请求握手

1.png

第二步 代理服务器收到握手后返回

2.png

第一步和第二步握手例子

client --> 5 2 0 2 代表着 版本5 有两种握手方式 加密的和不加密的供代理选择

proxy--> 5 0 代表着版本5 选择了不加密的协议方式

或者是

client--> 5 1 0 只有一种不加密的握手方式

proxy--> 5 0 选择了不加密的握手方式

上面的过程就叫做第一步握手连接,client 和proxy之间互相选择连接方式,如果client的所有握手方式proxy都不满足,则直接断开连接就好了

第三步 客户端发送需要访问的IP和端口,以及协议

3.png

如果是3 则这个字段第一个字节代表域名长度,紧跟其后的是域名

如果是6 则这个字段16位ip6地址

第四步 代理服务器返回代理建立结果

4.png

第三步和第四步握手举例

有可能是这样的情况

client--> 5 1 0 1 123 123 123 123 0 80 表示tcp连接 到123.123.123.123 的80 端口

proxy-->5 0 0 1 0 0 0 0 0 0 代表着已经连接上了,并且将atype置1代表后面的是ip和端口 ,由于大多客户端的实现都会忽略后面的ip和端口,我们直接全写0

这样握手就完成了。

后续

我们已经拿到了程序想要访问的地址和端口,我们新建一个socket 自己连接到ip和端口,然后一边接受应用程序发的数据,转发给网站,一遍接受网站返回的数据,转发给应用程序,这样达到了让他们俩通信的目的。

上一篇下一篇

猜你喜欢

热点阅读