#stream #http2 #communication #connection #protocols #networking #latency

picomux

一种协议,用于在单个流上复用多个 AsyncRead/Write 流,受 smux 和 http2 启发

4 个版本

0.1.3 2024年8月12日
0.1.2 2024年7月24日
0.1.1 2024年3月18日
0.1.0 2024年3月18日

#1370网络编程

Download history 14/week @ 2024-05-16 11/week @ 2024-05-23 5/week @ 2024-05-30 11/week @ 2024-06-06 5/week @ 2024-06-13 38/week @ 2024-06-20 35/week @ 2024-06-27 85/week @ 2024-07-04 49/week @ 2024-07-11 67/week @ 2024-07-18 125/week @ 2024-07-25 39/week @ 2024-08-01 201/week @ 2024-08-08 171/week @ 2024-08-15

每月589次下载
3 个包中使用了 (2 直接)

ISC 许可证

45KB
1K SLoC

Geph5

Geph5 是一个基于 Geph4 的重大重构,具有一些重大的架构差异,主要服务于简化设计和大量清理

概述

  • sosistab2 或类似构建不可靠管道上的可靠传输的工具不再使用。相反,混淆传输必须自己提供可靠传输。在实践中,这意味着所涉及的内容基于在 TCP 上复用的流,而不是数据包和 UDP。
  • 客户端不再有复杂的逻辑来智能地热插拔管道。鉴于不同的网络环境、极其不准确/迟钝的手机时钟等,这已被证明是难以实现的。相反,启动一个会话并使用它,直到它中断,然后启动另一个会话,等等。随着会话创建足够快,唯一明显的区别是代理的 TCP 连接重置,大多数应用程序都能优雅地处理。
  • 中心认证服务器称为 经纪人,而不是绑定器。它现在使用简单的 JSON-RPC API,没有端到端加密,具有完整性关键响应的 ed25519 签名。
    • 而不是基于 RSA 盲签名的实现,具有大量密钥,mizaru2 将使用一些方案,该方案在每个匿名凭证中嵌入一些未盲化的位,以及退出端的非交互式验证。后者将 极大地 降低经纪人的负载以及连接延迟,因为退出不再需要与经纪人就每个新会话进行通信。
  • 经纪人负责与桥梁和出口通信,为用户设置路由。消除了复杂的 (桥梁数量) * (出口数量) 通信模式,经纪人可以轻松用于为 Earendil 和类似软件生成路由。
  • 通过隧道通过流 ("socks5") 模式支持 VPN 模式,但支持截取类似 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

依赖项

~18–52MB
~796K SLoC