SOCKS协议
简介
SOCKS 是 SOCKetS 的缩写;主要用于客户端与服务器之间通讯的代理层,此协议支持防火墙穿透,对应了socket的经典操作;
根据OSI模型,SOCKS是会话层协议,位于表示层与传输层之间;
目前常见的SOCKS协议有3个版本,分别是SOCKS4,SOCKS4A,SOCKS5;
SOCKS4:支持TCP协议,不支持UDP协议;
SOCKS4A:在SOCKS4的基础上扩展了对域名解析的支持;
SOCKS5:在SOCKS4A的基础上扩展了对UDP,IPv6,认证的支持;
1996年,SOCKS5被IETF收录为RFC1928,经过10余年的时间,大量的网络应用程序都支持SOCKS5代理;
原理
SOCKS5代理的工作流程是:
客户端向代理服务器发请求信息;
代理服务器接收请求,并作应答;
客户端接收到应答后,向代理服务器发送目的IP和端口;
代理服务器与目的建立连接;
代理服务器把客户端的请求转发给目的,然后再把目的应答转发给客户端;
实现
服务器端
Shadowsocks
作者为 clowwindy,2015年8月,受到警方干预后被迫停止维护,并清空了 Github 上的代码;
另一位 Github 使用者 ziggear 于项目删除前 Fork 了代码;
Shadowsocks 的部署非常简单,参照官方说明即可,关于多用户的配置,自行谷歌搜索;
客户端
Shadowsocks-Android
代码位于 Github,并且在 Google Play上架;
普通用户直接从 Google Play 安装即可;
Shadowsocks-iOS
Github 上的代码同样被清空,只保留了 release;这里有使用说明;
普通用户直接从 App Store 安装即可;
Shadowsocks-Windows
代码位于 Github,发布包位于 SourceForge ;
Shadowsocks-OSX
代码位于 Github,发布包位于 SourceForge ;
Shadowsocks-Linux
代码位于 Github,发布包位于 Github ;
Shadowsocks-ChromeApp
代码位于 Github;
Shadowsocks-OpenWRT
代码位于 Github,发布包位于 Github ;
Shadowsocks-GO
代码位于 Github,发布包位于 Github ;