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

参考

SOCKS Protocol Version 5
SOCKS5协议中文翻译
维基百科