内容简介:整个协议其实就是在建立TCP连接之后,真正的内容传输之前,加一点内容。以下是简述:
socks5
是一个简单的代理协议,这里是 RFC
。
整个协议其实就是在建立TCP连接之后,真正的内容传输之前,加一点内容。以下是简述:
首先定义一下名词:
/-> | Firewall(防火墙) | ->\ Client -> Server(代理服务器) -> Dst(目标地址)
然后定义一下表示形式:
+----+----------+----------+ |VER | NMETHODS | METHODS | +----+----------+----------+ | 1 | 1 | 1 to 255 | +----+----------+----------+
例如上述,1就是指长度是一个byte,因此 1 to 255
也就是 1~255个byte。如果是 X'05'
那么就是八进制的 05
也就是 0x05
的意思。
第一步,Client建立与Server之间的连接
建立TCP连接之后,Client发送如下数据:
+----+----------+----------+ |VER | NMETHODS | METHODS | +----+----------+----------+ | 1 | 1 | 1 to 255 | +----+----------+----------+
-
VER
是指协议版本,因为是socks5
,所以值是0x05
-
NMETHODS
是指有多少个可以使用的方法,也就是客户端支持的认证方法,有以下值:-
0x00
NO AUTHENTICATION REQUIRED 不需要认证 -
0x01
GSSAPI 参考: https://en.wikipedia.org/wiki/Generic_Security_Services_Application_Program_Interface -
0x02
USERNAME/PASSWORD 用户名密码认证 -
0x03
to0x7f
IANA ASSIGNED 一般不用。INNA保留。 -
0x80
to0xfe
RESERVED FOR PRIVATE METHODS 保留作私有用处。 -
0xFF
NO ACCEPTABLE METHODS 不接受任何方法/没有合适的方法
-
-
METHODS
就是方法值,有多少个方法就有多少个byte
第二步,Server返回可以使用的方法
收到Client的请求之后,Server选择一个自己也支持的认证方案,然后返回:
+----+--------+ |VER | METHOD | +----+--------+ | 1 | 1 | +----+--------+
VER
和 METHOD
的取值与上一节相同
第三步,客户端告知目标地址
+----+-----+-------+------+----------+----------+ |VER | CMD | RSV | ATYP | DST.ADDR | DST.PORT | +----+-----+-------+------+----------+----------+ | 1 | 1 | X'00' | 1 | Variable | 2 | +----+-----+-------+------+----------+----------+
-
VER
还是版本,取值是0x05
-
CMD
是指要做啥,取值如下:0x01 0x02 0x03
-
RSV
是保留位,值是0x00
-
ATYP
是目标地址类型,有如下取值:0x01 0x03 0x04
-
DST.ADDR
就是目标地址的值了,如果是IPv4,那么就是4 bytes,如果是IPv6那么就是16 bytes,如果是域名,那么第一个字节代表 接下来有多少个字节是表示目标地址 -
DST.PORT
两个字节代表端口号
第四步,服务端回复
+----+-----+-------+------+----------+----------+ |VER | REP | RSV | ATYP | BND.ADDR | BND.PORT | +----+-----+-------+------+----------+----------+ | 1 | 1 | X'00' | 1 | Variable | 2 | +----+-----+-------+------+----------+----------+
-
VER
还是版本,值是0x05
-
REP
是状态码,取值如下:-
0x00
succeeded -
0x01
general SOCKS server failure -
0x02
connection not allowed by ruleset -
0x03
Network unreachable -
0x04
Host unreachable -
0x05
Connection refused -
0x06
TTL expired -
0x07
Command not supported -
0x08
Address type not supported -
0x09
to0xff
unassigned
-
-
RSV
保留位,取值为0x00
-
ATYP
是目标地址类型,有如下取值:0x01 0x03 0x04
-
DST.ADDR
就是目标地址的值了,如果是IPv4,那么就是4 bytes,如果是IPv6那么就是16 bytes,如果是域名,那么第一个字节代表 接下来有多少个字节是表示目标地址 -
DST.PORT
两个字节代表端口号
第五步,开始传输流量
到这一步,就成功了,接下来就该咋传输流量咋传输流量了。
总结
socks5是一个非常通用的代理协议,因此,无论我们自己要实现什么加密传输,都需要在client端设置一个socks5服务器,用于将 客户端例如浏览器等的请求理解之后,转换成私有协议。这篇文章中我们初步的看了一下socks5的结构,了解了一下socks5协议的 传输流程。
参考资料:
以上所述就是小编给大家介绍的《socks5 协议详解》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:- Flutter 完整开发实战详解(十六、详解自定义布局实战)
- 数据结构 1 线性表详解 链表、 栈 、 队列 结合JAVA 详解
- 详解Openstack环境准备
- Java泛型详解
- iOS RunLoop 详解
- Raft协议详解
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
OKR:源于英特尔和谷歌的目标管理利器
(美) 保罗R.尼文(Paul R. Niven)、本•拉莫尔特(Ben Lamorte) / 况阳 / 机械工业出版社 / 2017-8-1 / 59.00元
内在动机驱动,而非绩效考核驱动 尤其适用快速扩张和转型期组织 谷歌、英特尔、领英、推特、星佳等硅谷知名企业成功的法宝 OKR(目标与关键结果法)是一套严密的思考框架和持续的纪律要求,旨在确保员工紧密协作,把精力聚焦在能促进组织成长的、可衡量的贡献上。 如何更好地将OKR集成到企业现有的绩效评估体系中? 如何确保OKR由高管团队来领导,而不仅仅是HR、IT或财务等职能部......一起来看看 《OKR:源于英特尔和谷歌的目标管理利器》 这本书的介绍吧!