sock5浅谈

发布于 2020-07-24  1.68k 次阅读


先看看维基上如何解释sock5的根本协议socks——

SOCKS协议不提供加密。SOCKS是一种网络传输协议,主要用于客户端与外网服务器之间通讯的中间传递。SOCKS是"SOCKetS"的缩写。

这个协议由David Koblas开发,后由NEC的Ying-Da Lee将其扩展到SOCKS4。最新协议是SOCKS5,与前一版本相比,增加支持UDP、验证,以及IPv6。

SOCKS5可选地提供身份验证,因此只有授权用户才能访问服务器。实际上,SOCKS服务器将TCP连接代理到任意IP地址,并为UDP数据包转发提供了一种方法。

而sock5代理的工作程序是:

1.客户端经过的请求会以sock5协议建立一个到服务器的连接,并把请求转交给服务器进行处理。

2.数据转发方应答。服务器的工作就是接受客户端的请求,然后解析并执行请求,最后传回数据。所以首先还是监听端口。发送的信息是通过AES加密过的,服务器只有成功的解密请求后才会去处理请求。如果客户端和服务器有用用户名与密码进行加密,则客户端发出用户名密码,格式为(以字节为单位):

用户名长度用户名密码长度密码
1动态1动态

服务器鉴定后发出如下回应:0 表示成功,1 表示失败。

至此你这边客户端的事情暂且告一段落。

3.服务器建立目标的TCP链接,然后将请求信息发送给目标地址,并将返回的数据送回客户端,代理完成。

这里附上sock5协议文档:http://www.faqs.org/rfcs/rfc1928.html

以及shadowsocks2项目地址:https://github.com/shadowsocks/go-shadowsocks2

参考:

维基百科(wikipedia.org

www.cnblogs.com

blog.cgsdream.org


非彼无我,非我无所取。是亦近矣,而不知其所为使。