开发背景

6月,一个事件多发的月。
受各种政治事件影响,国际互联网的连接变得非常敏感。
大量IP被封锁,联网工具无法使用,连SSH都无法连接,查资料变得异常困难,严重影响到开发。

工作流程

为了保证兼容性,跟某知名联网工具基本一致。
本地客户端支持HTTP/Socks4/Socks5网络连接,支持Pac模式。

连接合并

与某工具最大的不一样,项目使用的是单一连接。
所有的资源请求在客户端与服务端之间,都会转变为单一连接。
简单地说,就是相当于项目内建了HTTP/2的多路复用加速功能。
在流量干扰严重的情况下,连建立连接都是困难的,浏览器的多个请求的连接建立会变得非常缓慢,甚至失敗。
通过单一连接,不需要多次新建连接,减免了连接握手的时间,可以维持一个相对稳定的网络,也增加了隐匿性。

乱序发送

在服务端与客户端的数据传输上,数据被分拆成多个数据包,乱序发送,再由客户端多线程下载、组装、还原原始数据。
一方面是方便多线程加速下载,另一方面,因为原始数据被打乱了,大量穿插其他数据,所以更难检测出原始数据,增加隐匿性。
因为流量加密,数据分拆乱序,以及TCP分界等的原因,从ISP的角度来看,即使是复制所有连接数据,也无法获得正常的原始文件/加密文件。

白名单

客户端支持白名单功能,结合Pac模式实现黑白名单。
白名单不进行流量加密,直接走本地流量,加速访问。

双向认证

服务端与客户端之间采用证书双向认证。
一方面减少网络攻击,另一方面也可以伪装成普通的SSL/TLS流量。

运行效果

在这个政治事件多发的月份,某工具连接30秒就断开,完全无法使用的情况下,通过DreamSocks可以稳定地浏览国际互联网。