Shadowsocks(R)基本原理

Shadowsocks/ShadowsocksR无疑是一款优秀的网络代理软件,不仅速度快,还能支持各种规则来选择是否对某个网络请求进行代理,而ShdowsocksR的混淆功能更是让其有了更高的安全性。大部分人都是用它们来突破防火墙和进行网络加速,那么,它们的原理是什么呢?

代理服务器

upload successful

如上图所示,当目标网站A被防火墙阻止以后,用户不能直接访问到此站点,而是把访问请求转发给一个在防火墙外部,且未被防火墙阻止的代理服务器,代理服务器收到请求后访问目标站点A,并将得到的内容返回给用户。

综上所述,能突破防火墙的代理服务器需要满足:

  1. 代理服务器在防火墙外部,不受防火墙限制,可以直接访问目标站点。
  2. 代理服务器没有被防火墙阻止,用户可以在防火墙内访问代理服务器。

HTTP(S)代理

大家都知道,网页都是使用 HTTP(S) 协议的,HTTP代理主要用于访问网页,一般有内容过滤和缓存功能。

Socks代理

Socks代理只是单纯传递数据包,不关心具体协议和用法,所以速度快很多。一般有缓存功能。端口一般为1080。(SOCKS代理协议又分为SOCKS4和SOCKS5,SOCKS4协议只支持TCP,而SOCKS5协议支持TCP和UDP,还支持各种身份验证机制、服务器端域名解析等。)[2]

Shadowsocks(R)运行原理

Shadowsocks的运行原理与其他代理工具基本相同,使用特定的中转服务器完成数据传输。

在服务器端部署完成后,用户需要按照指定的密码、加密方式和端口,使用客户端软件与其连接。在成功连接到服务器后,客户端会在用户的电脑上构建一个本地Socks5代理。浏览网络时,网络流量会被分到本地socks5代理,客户端将其加密之后发送到服务器,服务器以同样的加密方式将流量回传给客户端,以此实现代理上网。[3]

Shadowsocks(R)默认在1080端口开启了Socks5代理,但是它为了兼容HTTP代理模式,在8123端口使用ss_privoxy.exe开启了一个HTTP代理。不仅如此,Shadowsocks(R)在1080端口也支持http代理。

我们知道,IE的代理设置不论是PAC还是全局,都是只支持HTTP代理的。也正是因为Shadowsocks(R)支持HTTP代理方式,才能使IE以及一些其他不支持Socks5代理(但支持HTTP代理)的软件进行代理。[4]

浏览器一般会自动启用系统代理,而其它软件则需要自身支持HTTP代理Socks5代理,而且一般需要进行手动配置才可以进行代理。

参考资料:

  1. 代理服务器 - 维基百科,自由的百科全书
  2. SOCKS - 维基百科,自由的百科全书
  3. Shadowsocks - 维基百科,自由的百科全书
  4. 关于科学上网的一些软件的原理和使用技巧 - FanZheng’s blog
The End