116个版本 (28个重大更新)
0.36.4 | 2023年3月14日 |
---|---|
0.35.1 | 2023年1月25日 |
0.34.2 |
|
0.31.1 | 2022年11月28日 |
0.9.2 | 2020年11月24日 |
#1008 in 网络编程
每月98次下载
在6个库中使用 6(直接)
100KB
2K SLoC
qp2p
Crate | 文档 |
---|---|
MaidSafe网站 | SAFE开发者论坛 | SAFE网络论坛 |
---|
概述
此库提供了一个API,以简化创建P2P网络时的常见任务,包括
- 建立加密的单向和双向连接(使用具有TLS 1.3的QUIC)。
- 连接池,用于重用已打开的连接。
- 容错性,包括重试和对多个对等方进行连接竞争。
- 发送离散消息(使用QUIC流作为'包装')。
特性
QUIC
有几篇介绍QUIC和TLS 1.3的有益文章
这些文章强烈推荐阅读,以便更好地理解此库,特别是Cloudflare博客文章(阅读时间10分钟)。
连接加密
QUIC通过使用TLS 1.3提供连接安全性。目前,使用自签名证书加密连接,但这不提供认证。
未来,我们希望支持通过证书颁发机构和预协商证书进行身份验证。这应该能够满足许多P2P网络的需求,无论它们是否信任任何清网证书颁发机构(可能是一个集中的攻击源),或者是否将身份管理提升到不同的层次来验证身份,而将qp2p作为一个加密连接的安全网络来使用。
连接池
尽管QUIC连接的建立相对便宜(例如,与TCP连接相比),但仍然存在一些开销。为了最小化这种开销,所有打开的连接都会基于它们的目标套接字地址进行池化并重复使用。
容错性
API可用于从一组对等点连接到任何对等点。连接是并发建立的,第一个成功建立的连接被保留,其余的将被丢弃。这允许连接到一组等效对等点,找到一组已知对等点中的可到达对等点等。
消息传递
QUIC是一种流协议,没有离散消息的显式模型。然而,QUIC连接可以复用任意数量的流,这些流的构建和销毁都很便宜。这个库使用流作为消息封装机制,每个流发送或接收一条消息。
QUIC支持单向和双向流,这两种流都通过这个库公开。
-
对于点对点通信,通常应该优先考虑单向流。这要求对等点具有外部连接性,这对于容错性(例如,联系人共享、重新连接)通常更好。
-
对于客户端-服务器通信,应该优先考虑双向流。这不需要外部连接性,因此客户端仍然可以从防火墙/网关(例如家庭路由器)后面进行通信。
许可证
此SAFE网络库可根据您的选择在修改后的BSD许可证(LICENSE-BSD https://opensource.org/licenses/BSD-3-Clause)或MIT许可证(LICENSE-MIT http://opensource.org/licenses/MIT)下双许可。
贡献
想贡献力量?太棒了 🎉
有很多种方式可以回馈项目,无论是编写新代码、修复错误还是仅仅报告错误。所有形式的贡献都受到鼓励!
有关如何贡献的说明,请参阅我们的贡献指南。
依赖关系
~14–28MB
~480K SLoC