6 个版本
新增 0.2.2 | 2024 年 8 月 23 日 |
---|---|
0.2.1 | 2024 年 8 月 12 日 |
0.2.0 | 2024 年 8 月 12 日 |
0.1.1 | 2024 年 3 月 28 日 |
0.1.0 | 2024 年 3 月 18 日 |
#881 in 网络编程
每月 782 次下载
在 7 个 Crates 中使用 (6 个直接使用)
16KB
397 行
Geiph5
Geiph5 是在 Geiph4 的基础上进行了大量重写,并有一些重大的架构差异,主要目的是 简化并大量清理设计
概述
sosistab2
或类似构建在不可靠管道上的可靠传输的方式不再使用。相反,混淆传输本身必须提供可靠传输。在实践中,这意味着所涉及的内容基于 TCP 上的流,而不是数据包和 UDP。- 客户端不再有复杂逻辑进行智能热插拔管道。鉴于不同的网络环境、极其不准确/迟钝的手机时钟等,这已被证明是难以实现的。相反,启动一个会话并使用它,直到它断开连接,然后启动另一个会话,等等。如果会话创建速度足够快,唯一的明显区别是代理 TCP 连接重置,而大多数应用程序都能优雅地处理。
- 中央认证服务器称为 经纪人,而不是绑定器。它现在使用简单的 JSON-RPC API,没有端到端加密,并且完整性关键响应具有 ed25519 签名。
- 而不是基于 RSA 盲签名的实现,mizaru2 将使用一些将一些未盲化位嵌入到每个匿名凭证中的方案,以及退出端非交互式验证。后者将 大大 降低经纪人的负载以及连接延迟,因为出口不再需要与经纪人通信以进行每个新会话。
- 经纪人负责与桥梁和出口通信以为用户设置路由。复杂的
(桥梁数量) * (出口数量)
通信模式被消除,经纪人可以轻松用于为 Earendil 和类似软件生成路由。 - VPN模式通过流("socks5")模式进行隧道传输,但支持tun2socks风格的流量拦截。
- 我们广泛使用配置文件而不是大量的命令行参数。
- 我们不再使用Web视图进行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
依赖项
~6–34MB
~534K SLoC