我弄的 qtng 网络库,性能一般般。但是有一个功能算是比较炸裂的:实现了模块化的山寨 QUIC 协议。
这个山寨 QUIC 协议被我分成几部分:
1. 一个 KCP 的实现,能够在 UDP 上面建立低延迟的连接,实现 SocketLike 接口
2. DataChannel 把一条连接变成多个 steam,这些 steam 又可以继续分裂成多个 steam,每个 steam 都实现 SocketLike 接口
3. TCP 连接是 SocketLike
4. SSL 可以运行在任何 SocketLike 连接上,变成另一个 SocketLike
5. 还有个简单的对称流加密 ENC 运行在 SocketLike,变成另一个 SocketLike
6. HTTP 协议运行在 SocketLike 上面,能升级成 WebSocket
通过这个 SocketLike 接口,上面几个组件能够相互插接,比如:
KCP -> SSL # 运行在 UDP 上面的 SSL 连接
TCP -> SSL -> HTTP # 普通的 HTTPS
KCP -> SSL -> HTTP # 运行在 UDP 上面的 HTTPS
TCP -> DataChannel -> HTTP # 山寨 HTTP2
KCP -> DataChannel -> HTTP # 山寨 HTTP3
HTTP -> DataChannel -> HTTP # PROXY
HTTP -> SSL # 先明文 HTTP,再升级成 SSL
HTTP -> DataChannel -> SSL # 明文 HTTP,有些流升级成 SSL,有些不升级
KCP -> DataChannel # 视频会议
总之,我现在得到了一堆跑在 UDP 上面的 SOCKS5, HTTP, WebSocket 的实现。还有些奇奇怪怪的组合我也不知道能干啥。
之前打算把 KCP 整一整可以跑在 ICMP 上面。但是还没有完成。如果做到的话,我就能得到一个跑在 ICMP 上面的 HTTPS 服务器了。
--
修改:hgoldfish FROM 110.81.1.*
FROM 110.81.1.*