#tcp-listener #tcp-connection #stream #networking #pipe #tcp-client #framework

晓拉德

一个在 futures-io 生态系统内讨论类似 TCP 的拨号器和监听器的框架

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 网络编程

Download history 15/week @ 2024-05-17 18/week @ 2024-05-24 13/week @ 2024-05-31 9/week @ 2024-06-07 9/week @ 2024-06-14 52/week @ 2024-06-21 26/week @ 2024-06-28 73/week @ 2024-07-05 47/week @ 2024-07-12 36/week @ 2024-07-19 47/week @ 2024-07-26 29/week @ 2024-08-02 457/week @ 2024-08-09 241/week @ 2024-08-16

每月 782 次下载
7 个 Crates 中使用 (6 个直接使用)

ISC 许可证

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