3个版本
0.4.2 | 2022年6月27日 |
---|---|
0.4.1 | 2022年6月3日 |
0.4.0 | 2022年6月1日 |
6 in #stronghold
195KB
3.5K SLoC
Stronghold点对点通信
Stronghold-p2p库允许在不同进程、设备和网络中的对等体之间进行端到端加密通信。其功能的基础是libp2p框架,这是一个由协议、规范和库组成的系统,用于开发点对点网络应用程序。
您可以将Stronghold-p2p crate与Stronghold分开构建,也可以独立使用。它允许用户在两个对等体之间传输通用的1:1请求-响应消息,并增加防火墙以防止未经授权的访问。如果对等体无法直接拨号,它支持使用中继对等体,该对等体盲目中继两个对等体之间的流量。
数据传输
数据通过TCP传输,并支持WebSockets和DNS解析。传输通过Yamux协议进行多路复用,并使用实现端到端加密的Noise协议。
Noise握手机制基于Diffie-Helllman密钥交换,允许两个彼此未知对等体在不安全介质上创建共享密钥。Stronghold-p2p使用XX模式进行握手。
连接对等体
如果知道远程对等体的地址,对等体可以建立与其的连接。如果两个对等体在同一个本地网络中,它们可以启用Mdns
功能,该功能实现在本地网络中的自动对等体发现。
如果两个对等体在不同的网络中且没有公网IP地址,Stronghold-p2p支持使用中继对等体。中继对等体将源地址和目标地址之间的所有流量进行转发。由于采用了Noise加密,无论是否使用中继,两个对等体之间的通信都是端到端加密的。
防火墙
Stronghold-p2p的网络协议实现了一个低级防火墙。防火墙根据默认规则和对等体特定的规则批准或拒绝每个传入请求。除了固定规则外,请求还可以异步地逐个批准或拒绝。
依赖项
~17–56MB
~1M SLoC