第一步,客户端请求握手
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告诉应用程序处理的情况,0代表处理成功,否则可以直接断开连接了
第三步和第四步握手举例
有可能是这样的情况

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和端口,然后一边接受应用程序发的数据,转发给网站,一遍接受网站返回的数据,转发给应用程序,这样达到了让他们俩通信的目的。
代理服务器是介于浏览器和Web服务器之间的一台服务器,有了它之后,浏览器不是直接到Web服务器去取回网页而是向代理服务器发出请求,Request信号会先送到代理服务器,由代理服务器来取回浏览器所需要的信息并传送给你的浏览器。
而且,大部分代理服务器都具有缓冲的功能,就好像一个大的Cache,它有很大的存储空间,它不断将新取得数据储存到它本机的存储器上,如果浏览器所请求的数据在它本机的存储器上已经存在而且是最新的,那么它就不重新从Web服务器取数据,而直接将存储器上的数据传送给用户的浏览器,这样就能显著提高浏览速度和效率。更重要的是:Proxy Server(代理服务器)是Internet链路级网关所提供的一种重要的安全功能,它的工作主要在开放系统互联(OSI)模型的对话层。

Sock5代理协议详解相关推荐

  1. TCP/IP 协议栈及 OSI 参考模型详解

    TCP/IP 协议栈及 OSI 参考模型详解 转载地址:http://www.codeceo.com/article/tcp-ip-osi-model.html OSI参考模型 OSI RM:开放系统 ...

  2. 串口服务器介绍及产品特点详解

    串口服务器提供串口转网络功能,能够将RS-232/485/422串口转换成TCP/IP网络接口,实现RS-232/485/422串口与TCP/IP网络接口的数据双向透明传输.使得串口设备能够立即具备T ...

  3. Linux curl命令使用代理、以及代理种类介绍(附:curl命令详解)

    目录 一.代理服务器分类: 二.Linux curl命令代理设置参数: 三.Linux curl命令设置代理举例: 1.linux curl命令设置http代理: 2.Linux curl命令设置so ...

  4. ScrollView详解

    创建方式 1:StoryBoard/Xib 这里StoarBoard就不多说,直接拖就可以,说太多没意思,如果连这个都不会我只能先给你跪了! 2:代码: CGRect bounds = [ [ UIS ...

  5. P2P技术详解(一):NAT详解——详细原理、P2P简介(转)

    这是一篇介绍NAT技术要点的精华文章,来自华3通信官方资料库,文中对NAT技术原理的介绍很全面也很权威,对网络应用的应用层开发人员而言有很高的参考价值. <P2P技术详解>系列文章 ➊ 本 ...

  6. 015. P2P技术详解(一):NAT详解——详细原理、P2P简介

    http://www.52im.net/thread-50-1-1.html 这是一篇介绍NAT技术要点的精华文章,来自华3通信官方资料库,文中对NAT技术原理的介绍很全面也很权威,对网络应用的应用层 ...

  7. Maven之pom.xml与setting.xml配置文件详解

    一.Maven相关问题 安装jar到本地仓库 mvn install:install-file -Dfile=jar路径 -DgroupId=组id -DartifactId=组件id -Dversi ...

  8. Linux系统中curl命令用法详解

    在Linux系统中curl是一个利用URL规则在命令行下工作的文件传输工具,是一款强大的http命令行工具.它支持文件的上传和下载,是综合传输工具. curl 是常用的命令行工具,用来请求 Web 服 ...

  9. Protocol与Delegate 使用方法详解

    你要知道的KVC.KVO.Delegate.Notification都在这里 转载请注明出处 http://blog.csdn.net/u014205968/article/details/78224 ...

最新文章

  1. 中国电子学会青少年编程能力等级测试图形化三级编程题:海底寻宝
  2. mobilenetv2_unet
  3. python压缩文件夹下的所有文件_python压缩文件夹内所有文件为zip文件的方法
  4. kohana中的路由规则
  5. 安卓实训项目:基于储存卡音乐播放器实训报告5.0
  6. 带密匙的php加密解密示例分享
  7. 【poj题集整理】【存下来并不会看】
  8. IOS内购流程从0-1手把手教会
  9. 消息称苹果正探索更大尺寸iPad 屏幕分别为14英寸、16英寸
  10. pencv candy边缘检测
  11. 关于ConcurrentDictionary的线程安全
  12. Netty实现高性能IOT服务器(Groza)之手撕MQTT协议篇上
  13. 【ML小结1】ML入门
  14. MATLAB-输入输出语句
  15. 创建uni-app 微信小程序项目
  16. 服务器系统tcpip.sys,win7系统tcpip.sys文件引起蓝屏的解决方法
  17. AUTOCAD——三种修剪方式
  18. 动态网页编程新手入门必读
  19. 饥荒控制台输入没用_《饥荒》控制台正确使用教程 如何使用控制台
  20. 北大计算机山西,2019年山西省清华、北大录取人数及招生情况整理汇总

热门文章

  1. 以下选项中不正确的c语言字符型常量是,以上选项中,( )是不正确的C语言字符型常量 答案:”a”...
  2. python平均_python 算平均
  3. 全景教程丨VR全景拍摄如何拍摄日出和日落的场景?
  4. nvidia linux路径,NVIDIA Jetson Linux驱动程序包开发人员指南 - 快速入门指南
  5. 【C++基础】ASCII码及常用函数
  6. docker 分布式仓库harbor
  7. 目录导航《100天精通Python丨快速入门到黑科技》
  8. jquery ajax traditional参数讲解
  9. MySQL 修改用户名和密码
  10. 基于python的测试框架behave----context