简介

Socks 属于一个代理协议,可以在一些应用层协议中间工作(比如HTTP(S),FTP等)。这个协议最初由David Koblas开发,而后由NEC的Ying-Da Lee将其扩展到SOCKS4。最新协议是SOCKS5,与前一版本相比,增加支持UDP、验证,以及IPv6。

Socks5代理协议支持多种协议,理论上应用层协议都可以支持,比如HTTP(S)/WS(S)/SSH等

通信细节

TCP

当客户端与Socks5代理服务器(默认1080端口)TCP握手完成后,会进行一次初始化报文的发送,来确认协议版本以及认证方式,格式为(报文大小单位为字节,长度字段皆无符号):

 +----+----------+----------+ |VER | NMETHODS | METHODS  | +----+----------+----------+ | 1  |    1     | 1 to 255 | +----+----------+----------+

代理服务在接受到客户端的初始化报文后,会从METHODS中选择一个认证方式,并返回给客户端:

  +----+--------+  |VER | METHOD |  +----+--------+  | 1  |   1    |  +----+--------+

代理免费儿童手表骗局_代理免费加盟_免费socks5代理ip

现在客户端就可以按照约定的认证方式来进行认证了,这里介绍一种“0x02 用户名、密码认证”的认证报文:

如果代理服务器返回了“0x02 用户名、密码认证”的认证方式,此时客户端会发送认证报文:

.------.------------------.-----------.------------------.-----------.| VER  | USERNAME_LENGTH  | USERNAME  | PASSWORD_LNEGTH  | PASSWORD  |:------+------------------+-----------+------------------+-----------:| 0x01 | 1                | Variable  | 1                | Variable  |'------'------------------'-----------'------------------'-----------'

代理服务器接收到客户端的认证报文后,会验证用户名密码,同时返回验证结果:

.------.---------.| VER  | STATUS  |:------+---------:| 0x01 | 1       |'------'---------'

代理免费儿童手表骗局_代理免费加盟_免费socks5代理ip

认证结束后(或者服务端选择了不需要认证),客户端就会发送连接报文免费socks5代理ip,报文中会包含需要连接的目标服务地址:

 +----+-----+-------+------+----------+----------+ |VER | CMD |  RSV  | ATYP | DST.ADDR | DST.PORT | +----+-----+-------+------+----------+----------+ | 1  |  1  | 0x00  |  1   | Variable |    2     | +----+-----+-------+------+----------+----------+

DST.ADDR目标服务地址

DST.PORT目标服务端口

代理服务在接收到该连接报文后,会创建和目标服务器的连接,同时返回和目标服务建立连接的结果报文:

代理免费加盟_代理免费儿童手表骗局_免费socks5代理ip

  +----+-----+-------+------+----------+----------+  |VER | REP |  RSV  | ATYP | BND.ADDR | BND.PORT |  +----+-----+-------+------+----------+----------+  | 1  |  1  | 0x00  |  1   | Variable |    2     |  +----+-----+-------+------+----------+----------+

RSV0x00,保留

ATYPBND.ADDR类型

BND.ADDR目标服务地址

BND.PORT目标服务端口

免费socks5代理ip_代理免费儿童手表骗局_代理免费加盟

至此免费socks5代理ip,Socks5协议的“握手”部分完成,可以开始发送数据。代理服务器只需要将收到的客户端数据“盲目”的转发到目标服务,同时将收到的目标服务数据转发给客户端,只是一个中继(Relay)的角色

UDP

……

基于Netty的Socks5 代理实现

参考

限 时 特 惠: 本站每日持续更新海量各大内部创业教程,加站长微信免费获取积分,会员只需38元,全站资源免费下载 点击查看详情
站 长 微 信: thumbxmw