第一步,客户端请求握手
1.png
ver 代表协议版本占用一个字节 这里肯定是 : 5
nmethods 代表下一个字段专用的字节数量 这里不确定
methods 代表客户端拥有的加密方式占用1~255个字节都有可能,比如说0 代表不加密 1代表加密 2代表 另一种加密等
第二步 代理服务器收到握手后返回
2.png
ver 代表协议版本占用一个字节 这里肯定是 : 5
method代表代理服务器选择了一种握手方式
第一步和第二步握手例子
client --> 5 2 0 2 代表着 版本5 有两种握手方式 加密的和不加密的供代理选择
proxy–> 5 0 代表着版本5 选择了不加密的协议方式
或者是
client–> 5 1 0 只有一种不加密的握手方式
proxy–> 5 0 选择了不加密的握手方式
上面的过程就叫做第一步握手连接,client 和proxy之间互相选择连接方式,如果client的所有握手方式proxy都不满足,则直接断开连接就好了
第三步 客户端发送需要访问的IP和端口,以及协议
3.png
cmd 字段,占用一个字节 1代表 想要tcp连接 3 代表想要udp连接
rsv 保留字,默认0
atyp 目标网络地址类型:1代表ip4,3代表域名,4代表ip
dst.addr 如果上一个字段是1 则这个字段是4位ip4地址
如果是3 则这个字段第一个字节代表域名长度,紧跟其后的是域名
如果是6 则这个字段16位ip6地址
dst.port 两个字节代表目的地端口
第四步 代理服务器返回代理建立结果
4.png
rep 代表proxy告诉应用程序处