10个版本
新 0.2.0-alpha.12 | 2024年8月17日 |
---|---|
0.2.0-alpha.11 | 2024年8月13日 |
0.2.0-alpha.10 | 2024年8月12日 |
#745 in 网络编程
每月下载量 799
在 geph5-client 中使用
26KB
565 行
Geph5
Geph5是在Geph4基础上进行了大量重构,具有一些重要的架构差异,主要目标是 简化并大量清理设计
概述
sosistab2
或类似的在不可靠管道上构建可靠传输的方法不再使用。相反,混淆传输本身必须提供可靠传输。在实践中,这意味着基于TCP的多路复用流,而不是数据包和UDP。- 客户端不再具有复杂的逻辑来进行智能热插拔管道。鉴于不同的网络环境、极其不准确/睡眠的手机时钟等,这已被证明是难以实现的。相反,启动一个会话并使用它,直到它中断,然后启动另一个会话等。如果会话创建足够快,唯一可感知的差异是代理TCP连接重置,这大多数应用程序都能优雅地处理。
- 中心认证服务器称为 经纪人,而不是绑定器。它现在使用简单的JSON-RPC API,没有端到端加密,关键响应具有ed25519签名。
- 与基于RSA盲签名的大量密钥的实现相比,mizaru2将使用一些嵌入每个匿名凭证中一些未盲化位的方法,以及退出端非交互式验证。后者将 大大 减少经纪人的负载以及连接延迟,因为出口不再需要与经纪人通信以启动每个新的会话。
- 经纪人负责与桥和出口通信,为用户设置路由。消除复杂的
(桥数量) * (出口数量)
通信模式,经纪人可以轻松用于为Earendil和类似软件生成路由。 - VPN模式通过流("socks5")模式进行隧道传输,但支持拦截流量以tun2socks风格。
- 我们广泛使用配置文件而不是大量的命令行参数。
- 我们不再使用webview进行GUI。相反,GUI客户端是用Rust编写的,并直接调用协议库。
许可证
代码通常根据MPL 2.0许可。对各种项目有用的底层库,如sillad
框架,通常根据ISC许可证许可。
代码组织
与Geph4不同,Geph5以Cargo工作空间的方式组织,采用“单仓库”风格。
libraries/
包含可能相互依赖的库crate。所有这些crate也接收crates.io发布。binaries/
包含二进制crate。geph5-client
geph5-exit
geph5-bridge
geph5-broker
依赖项
~18–52MB
~825K SLoC