科学上网

 

科学上网的目的

对于已公开的合法信息,人民有自由获取的权利。同时,人民也有言论自由的权利。为了学习技术而科学上网,不涉及政治。通过技术手段,可以访问国外的和政治无关的,主要是涉及到计算机技术开发相关的内容,比如google,Wikipedia,stackoverflow等等技术资源,用于技术学习,增强专业技能,然后投身于美丽祖国、中国特色社会主义的建设中,实现中华民族的伟大复兴。

三种需求

  • 速度优先:开放网络连接,使得A和B可以间接地进行正常通信;
  • 隐私优先:通信内容不能被第三方知晓;
  • 稳定优先:网络连接要稳定,不能间歇或永久地失效;

网络代理工具V2Ray

为了解决不同的需求,试了很多工具,最后找到了V2Ray,V2Ray提供很多功能,让用户根据自己的需求自由组合。虽然各种组合并不一定能满足所有人的需求,但总比只有一个选择来得好。

对于上述的三个需求,V2Ray 分别提供了不同的特性:

  • 速度优先:VMess 协议、mKCP 协议、Mux.Cool 协议,内部路由分流

  • 隐私优先:TLS (完整实现,非伪装)

  • 稳定优先:HTTP 伪装、BT 伪装等,以及 Mux.Cool 协议。

V2Ray 在设计时已考虑到多个功能相互组合的使用,比如你可以使用 VMess + TLS 来达到隐私和速度的双重保证,或者使用 VMess + Mux 来提升速度和稳定性。也考虑到不同的用户的需求不同,V2Ray 的所有功能都可以选择打开或关闭,不会把任何一个功能强加给用户。不同的配置可以达到不同的效果,而在 V2Ray 中,你只需要一个配置文件就可以应对这些不同的需求。

科学上网三要素

  • 传输:能在 A、B 两个主机之间建立一条安全可靠的通信通道,用于传输数据;
  • 协议:对于将要传输的数据,能将这些数据的目的地告知代理服务器;
  • 内容:可以对传输的数据进行优化,比如压缩、合并等。

任何一个翻墙协议都具备以上三要素中的几个或全部
文字可能较难理解,我们来举一个简单的例子:Socks 协议。Socks 只具备协议要素,即告知代理服务器要把数据发送到哪里去,以达到代理的目的。但众所周知单纯的 Socks 不具备翻墙能力,因为它不能建立可靠的通道(即会被墙)。于是就有了 Shadowsocks。Shadowsocks 在 Socks 的基础上增加了传输要素,对数据加了密,使墙无法分析其内容。而 Shadowsocks 不具备内容要素,因为对于客户端的发来的内容,Shadowsocks 不进行任何修改,直接发送给了代理服务器。

我们可能会使用几个协议的组合,比如 Shadowsocks + KcpTun。无论我们怎么组合,所产生的结果,必须包含传输要素和协议要素,才可以进行可靠的上网。

为什么不能单独使用 KcpTun 来翻墙,因为 KcpTun 只有传输+内容要素。KcpTun 只能建立连接,对内容进行一定的处理,比如加密以及其内置的 mux 模式。但它不能发送数据的实际目的地,导致了一定要再套一个其它协议才可以用于翻墙。

而在 Shadowsocks (传输+协议) + KcpTun (传输+内容) 的场景中,由于两者都有传输要素,重复了,以至于 Shadowsocks 的加密在这个场景中多余。因为 KcpTun 已经有加密了,Shadowsocks 再多加一层也没用。

这也就是 ShadowsocksR 最近的几个协议推荐使用不加密的原因。

ShadowsocksR 本质上是对 Shadowsocks 进行了一层封装,即 Shadowsocks + X。这个 X 包含了对协议要素的扩(单端口多用户多种加密方式),加强了传输要素(伪装和其它的加密方式)。和 Shadowsocks + KcpTun 同理,Shadowsocks 本身的传输要素就显得不那么重要了。

Shadowsocks 最近也加强了传输要素,即 obfs plugin。两者在要素这一层面相差无几,这也是为什么很多人不认为 ShadowsocksR 之于 Shadowsocks 有很大改进的原因。

顺便整理一下常用协议所具备的要素,仅供参考:

  • HTTP/1.1: 协议
  • HTTP/2 (不带 TLS): 协议+内容
  • TLS: 传输
  • Shadowsocks: 传输+协议。AEAD 只是强化了传输,并没有添加新* 的要素。
  • ShadowsocksR: 传输+协议
  • KcpTun: 传输+内容
  • GoProxy: 等价于 HTTP/2 + TLS,即传输+协议+内容
  • VMess (V2Ray): 传输+协议
  • mKCP (V2Ray): 传输
  • WebSocket (V2Ray): 传输
  • Mux (V2Ray): 协议+内容

当然,一个翻墙协议的效率和它具备几个要素没有半点关系。以上这些内容只是帮助大家理解每个翻墙协议的侧重点,哪些组合是有意义的,哪些是没有意义的。一个协议组合首先要有意义,其次才能探讨它的效率。