6个版本
新 0.3.3 | 2024年8月22日 |
---|---|
0.3.2 | 2024年8月21日 |
0.2.0 | 2024年8月9日 |
0.1.1 | 2024年8月1日 |
#278 in 身份验证
每月375次下载
在 3 crates 中使用
45KB
1K SLoC
Ecksport
传输 -> xport -> ecksport
Ecksport是一种低开销的多用途传输协议的又一迭代。
这是我尝试的这种想法的第三次迭代,所以希望这次我能做对。在它被广泛使用之前,还有很多事情要做。
设计目标
Ecksport对其设计有一定的看法,但对用例没有看法。核心协议是一系列传输的帧,我们在此基础上构建了一个通道范式来复用独立的流。每个通道都在“主题”的上下文中打开,默认情况下是双向的。连接的每一方都必须确认通道的关闭才能完全关闭它。
在这个基础上,我们可以构建一些原语,并在不同的主题上并行使用它们
- RPC调用/响应模式
- 订阅
- 消息接收器
安全性
低级协议不假设加密系统,但我们有一些特殊消息用于实现身份验证。Ecksport可以通过TLS(或任何可以发送其帧的系统)使用,并且可以继承其安全性。您还可以在Noise会话中使用它,将Ecksport帧放入Noise帧1:1。我们的目标也支持通过WebSockets传输帧,因此它可以在Wasm环境中使用。
详细信息
我们使用Borsh对一些内部编码进行编码,但我们打算将其限制在有限范围内。完整的协议规范待定。
用途
Ecksport打算在Aspect消息协议中使用,作为典型的客户端-服务器和服务器-服务器传输协议。提交一个PR以添加使用它的应用程序!
项目结构
ecksport-auth
- 使用基于NaCl签名密钥系统的本地身份验证实现ecksport-codec
- RPC服务器中使用的可序列化类型的特性定义ecksport-core
- 帧类型、特性、主题、错误代码等的定义ecksport-net
- 连接抽象、通道句柄等ecksport-rpc
- RPC协议定义ecksd
- 将RPC调用调度到子进程等的服务器 [wip]eckscat
- 类似于netcat的命令行工具 [wip]
已知问题
- 在流帧格式中Borsh的使用非常糟糕。这将在不久的将来得到修复,并替换为真正不错的编码,同时还会提供一些辅助工具来帮助编写帧。
- 许多缓冲参数不可配置,这将被公开。
- 功能标志不足,你最好希望所有Tokio相关功能都能构建。
- 没有第一方TLS帧。
待办事项
- 修复Borsh问题。
- 支持在
ClientBuilder
上使用的新方法,同时支持native-tls
和rustls
,以便我们可以使用TlsDomain
身份类型。 - 清理crate导出。
- 使
ecksd
真正做到它所说的。 - 可能需要一个阻塞的同步接口?
依赖项
~5–15MB
~165K SLoC