python3 kademlia覆盖网络实现。
little-bird的Python项目详细描述
Little Bird Kademlia P2P DHT网络
python3 kademlia覆盖网络实现。
演示。
安装。
来自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提供
Feature | Central Tracker Network | DHT 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