python3 kademlia覆盖网络实现。

little-bird的Python项目详细描述


Little Bird Kademlia P2P DHT网络

python3 kademlia覆盖网络实现。

Build StatusMIT license

演示。

安装。

来自PYPI(稳定版本)

$ mkdir tmp &&cd tmp

$ pip3 install little-bird

来自Github(最新/开发版本)

$ git clone https://github.com/ZigmundVonZaun/little-bird.git

$ python3 -m virtualenv venv

$ pip3 install -r requirements.txt

设置。

将根目录上的.env.dist复制到.env 并根据需要进行编辑。

$ cp .env.dist .env && nano .env

简介。

kademlia是一个纯粹的p2p覆盖网络,同时也是dht(分布式散列表)的一部分。

本文提出了该算法:

https://pdos.csail.mit.edu/~petar/papers/maymounkov-kademlia-lncs.pdf

通常与糕点和和弦相比,它被用于网络中的许多项目中 包括但不限于BitTorrent、以太坊、Gnutella、IPFS。

常见问题解答:这是kademlia的实现吗?

是匿名的吗?

没有。节点使用裸IP地址来定位彼此并共享信息 在网络中

共享信息是否加密?

不。信息在网络中共享,无需任何加密。但是,添加 加密机制很简单。

这可以通过向send_message()逻辑添加一些逻辑并实现自定义 消息接收处理程序。

这个实现在公共互联网上有效吗?

由于nat打孔的复杂性,我们决定放弃一个可以在internet上工作的实现。

然而,这仍然是我们未来的计划。

这也是一个数据库吗?

是的。故障率很低的分布式故障。 您可以随意存储和检索值

为什么故障率低?

密钥会自动复制到网络中的不同节点中正常运行时间较长的节点 在此设置中也受欢迎。

事实上,失败的概率低于节点离开 网络。节点离开网络的事件不会影响中的数据库。

是否有中央跟踪器服务器,如主协调器?

不。每个节点在网络中共享相同的权重

每个节点都包含大量信息,这些信息在节点和密钥查找中非常有用

配置信息也会作为密钥查找的副作用自动传播。

尽管缺少跟踪器,但所有跟踪器功能都由Kademlia提供

FeatureCentral Tracker NetworkDHT Based Network
Node Lookups[x][x]
Key Lookups[x][x]
Performance Increases With Load[ ][x]
Susceptible to DDOS attacks[x][ ]
Low failure rate[ ][x]

你为什么坚持认为卡德姆利娅的表现更出色你想把它卖给我吗?

因为节点数量的增加会提高网络的性能。 查找要快得多。

而在集中式网络中,追踪器可能是 不堪重负,摧毁了整个网络。

但是较高数量的节点是否会有效地拒绝服务?

不。kademlia更喜欢旧节点而不是新节点。

DDoS攻击只会将攻击节点置于网络上 等候名单恶作剧地笑着

测试

python -m unittest

幕后

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java如何通过InjectMocks注释注入真实对象   多线程如何减少Java parallelStream中的#个线程?   java检测所有安卓摄像头   java中多个构造函数的参数   Spark SQL load json抛出错误java。lang.NoClassDefFoundError:scala/collection/GenTraversableOnce$class   java如何在ServerSocket中获得挂起的请求数或接受请求而不阻塞?   java JaxWsPortProxyFactoryBean查询超时   java Spring MVC LightAdmin配置   java类类型列表不一致性   安卓自定义视图,以在Java中动态插入到布局中   如果我使用安卓,java如何使用replace()方法。支持v4。应用程序。碎片   为什么Java中的数组不能使用类型擦除?   基于java JBoss EJB的Web服务日期格式   如何在java中实现负载均衡器   java OSGI OBR存储库托管?