3个版本

0.4.2 2022年6月27日
0.4.1 2022年6月3日
0.4.0 2022年6月1日

6 in #stronghold

Apache-2.0

195KB
3.5K SLoC

Stronghold点对点通信

Stronghold-p2p库允许在不同进程、设备和网络中的对等体之间进行端到端加密通信。其功能的基础是libp2p框架,这是一个由协议、规范和库组成的系统,用于开发点对点网络应用程序。

您可以将Stronghold-p2p crate与Stronghold分开构建,也可以独立使用。它允许用户在两个对等体之间传输通用的1:1请求-响应消息,并增加防火墙以防止未经授权的访问。如果对等体无法直接拨号,它支持使用中继对等体,该对等体盲目中继两个对等体之间的流量。

数据传输

数据通过TCP传输,并支持WebSocketsDNS解析。传输通过Yamux协议进行多路复用,并使用实现端到端加密的Noise协议。

Noise握手机制基于Diffie-Helllman密钥交换,允许两个彼此未知对等体在不安全介质上创建共享密钥。Stronghold-p2p使用XX模式进行握手。

连接对等体

如果知道远程对等体的地址,对等体可以建立与其的连接。如果两个对等体在同一个本地网络中,它们可以启用Mdns功能,该功能实现在本地网络中的自动对等体发现。

如果两个对等体在不同的网络中且没有公网IP地址,Stronghold-p2p支持使用中继对等体。中继对等体将源地址和目标地址之间的所有流量进行转发。由于采用了Noise加密,无论是否使用中继,两个对等体之间的通信都是端到端加密的。

防火墙

Stronghold-p2p的网络协议实现了一个低级防火墙。防火墙根据默认规则和对等体特定的规则批准或拒绝每个传入请求。除了固定规则外,请求还可以异步地逐个批准或拒绝。

依赖项

~17–56MB
~1M SLoC