Shadowsocks/ShadowsocksR无疑是一款优秀的网络代理软件,不仅速度快,还能支持各种规则来选择是否对某个网络请求进行代理,而ShdowsocksR的混淆功能更是让其有了更高的安全性。大部分人都是用它们来突破防火墙和进行网络加速,那么,它们的原理是什么呢?
代理服务器
如上图所示,当目标网站A被防火墙阻止以后,用户不能直接访问到此站点,而是把访问请求转发给一个在防火墙外部,且未被防火墙阻止的代理服务器
,代理服务器收到请求后访问目标站点A,并将得到的内容返回给用户。
综上所述,能突破防火墙的代理服务器需要满足:
- 代理服务器在防火墙外部,不受防火墙限制,可以直接访问目标站点。
- 代理服务器没有被防火墙阻止,用户可以在防火墙内访问代理服务器。
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代理
,而且一般需要进行手动配置才可以进行代理。
参考资料: