Socks、shadowsocks、VMess协议的差异对比

Socks

  • 1、socks 是会话层的协议,位于表示层和传输层之间,可以代理TCP和UDP的(报文)流量;
  • 2、socks是一种明文协议,一般用于本地代理。

特点:

  • 1、强力的身份验证方案;

  • 2、验证方法的协商机制;

  • 3、地址解析的代理;

  • 4、UDP协议应用的代理支持。

    缺点:

  • 1、额外的验证协商的功能;

  • 2、客户端和服务器的通信,加密完全依赖客户端和服务器的通信协议,如果服务器用的是HTTP协议,那么,通过代理走的的流量,就相当于明文在内网传输,安全性不高。

ShadowSocks

特点:

shadowsocks将socks5服务器拆分成了两部分:sslocal和ssserver

  • 1、sslocal:相对于socks5客户端便是socks5服务器,对于socks5客户端是透明的,sslocal完成与socks5客户端的所有交互;
  • 2、ssserver:相对于socks5客户端同样也是是socks5服务器,对于目标主机是透明的,完成与socks5服务器与目标主机的所有操作;

工作原理

socks5的处理方式是将socks5客户端与socks5服务器的连接提前,socks5协议的交互完全实在本地进行的,在网络中传输完全是利用加密算法加密后的密文,很好的进行了去特征话,使得传输的数据不是很容易被特征识别。

具体流程

sslocal接收到socks5客户端发送的数据,会将数据进行加密,并将配置信息发送到ssserver,ssserver接收到配置信息进行权限验证,然后再将配置信息发送到ssserver,ssserver接收到配置信息进行权限验证,然后将数据进行解密。然后,将明文发送到目标主机;当目标主机响应ssserver后,ssserver将接收到的数据进行解包,并将数据加密,发送到ssloacal,sslocal接收到加密后的数据进行解密,再发送给socks5客户端,这样就完成了一次交互。

优点

  • 1、具有较强的隐匿性,用于混淆数据,并不是加密;
  • 2、有较为完善的加密方案,使用的是工业级的加密算法;
  • 3、使用的是预共享密钥(pre-shared key, PSK),加密方式是预先定义好的,不需要协商。

缺点

  • 1、没有错误回报机制;
  • 2、没有考虑用户鉴别,使得服务端ACL(操作权限)或者流量统计无法实现。

shadowsocks与socks的区别:

  • 1、隐匿性更好,更加安全;

PSK(预共享密钥)

在密码术中,预共享密钥是一个共享密钥,该密钥先前已在两方之间使用某些安全通道共享,然后才需要使用。

ACL

Access Control List 的缩写,成为方问控制列表,包含了一个对象或者一条记录可进行何种操作的权限定义。

VMess

阐释

VMess是V2Ray原创的加密通讯协议, 是一个基于 TCP 的协议,所有数据使用 TCP 传输。

通讯过程

1
VMess是一个无状态协议,即客户端和服务端无需握手即可直接传输数据,每一次数据传输前和传输后对其他数据没有影响。VMess的客户端发起一次请求,服务器会验证并且判断该请求是否来自一个合法的客户端,如果合法则会转发该请求,并把获取的响应返回给客户端。VMess通过非对称格式,即客户端发出的请求和服务器的响应使用了不同的格式。

与shadowsocks的区别

  • 1、shadowsocks是一个简单的代理工具,而V2Ray 本身是一个内核,V2Ray图形界面客户端大多是调用V2Ray内核套了一个图形界面的外壳,任何开发者都可以利用V2Ray提供的模块开发出新的代理软件;
  • 2、分流:shadowsocks和V2Ray本身不支持PAC,都是客户端加进去的,shadowsocks分流使用ACL,V2Ray使用自己实现的路由功能;
  • 3、加密方式:V2Ray(特指VMess协议)不像shadowsocks那样看重对加密方式的选择,并且VMess的加密方式是由客户端指定的,服务器自适应;
  • 4、时间:V2Ray要保证时间准确,因为这是为了安全设计的;
  • 5、密码:VMess只有id(使用UUID的格式),作用类似于shadowsocks的密码,但是,随机性远好于shadowsocks的密码,只是不太方便记忆(安全与方便的矛盾);
  • 6、UDP转发:VMess是基于TCP的协议,对于UDP包V2Ray会转成TCP再传输的。要UDP转发功能在客户端的socks协议中开启UDP转发即可;
  • 7、路由器翻墙

优点

  • 1、更完善的协议
  • 2、更强大的性能,网络性能更好
  • 3、更丰富的功能:
    • 1、mKCP:KCP 协议在V2Ray上的实现,不必另行安装kcptun
    • 2、动态端口:动态改变通信的端口,对抗对长时间大流量端口的限速封锁
    • 3、路由功能:可随意设定指定数据包的流向,去广告、反跟踪都可以
    • 4、多重代理
    • 5、数据包伪装:类似于shadowsocks-rss的混淆,对与mKCP的数据包也可以伪装,伪装常见流量,使得别更困难
    • 6、WebSocket协议:可以PaaS平台搭建V2Ray,通过WebSocket代理。也可以通过CDN中转,抗封锁效果更好。
    • 7、Mux:多路复用,进一步太高科学上网的并发性能。(将多条TCP连接合成一条,节省资源,提高并发能力)

缺点

  • 1、配置复杂
  • 2、产业链不成熟

KCP 协议

运用场景:在网络实时性和可靠性要求比较高的场景下可以考虑kcp协议代替tcp协议。

KCP是一种具有可靠性的传输ARQ(自动重传)协议,设计是为了解决在网络拥堵的情况下tcp协议网络速度慢的问题。

特点

  • 1、重传机制:数据可靠性和提高传输速度;
  • 2、分片存储:当用户数据很大时,大于一个UDP包能承担的范围时(MSS最大分段大小),KCP会将用户数据分片存储在多个KCP包中;
  • 3、滑动窗口机制:为了提高发送速度,发送方不必每一个包都等待确认,而是发送多个包出去,然后等待接收方一一确认。然而,接收方不能同时处理无限多的数据,所以需要限制发送方的数据数量。因此,在接收方未确认之前,发送方只能发送wnd大小的数据;
  • 4、网络丢包严重可以考虑使用。