- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
节点:DHT 网络上的客户端。
Peers:尝试下载特定资源的客户端。
假设 DHT 网络是一个连通图,但没有节点可以访问所有其他节点(这种消耗与人们普遍认为的 DHT 网络覆盖的互联网是完全连接的相反)。
叠加在DHT网络上的Peer-network是否仍然是连通图?为什么?
最佳答案
Kademlia 是一种抽象算法,假设牛在真空中是球形的。本文讨论的唯一故障模式是流失和临时图分区。不考虑非对称可达性。
在现实世界中实现的 Kademlia 不作任何保证。一切都是在尽力而为的基础上完成的。
现实世界中的主要问题不是互连集群 A 无法与互连集群 B 通信的节点。NAT 和防火墙不会大规模引入此类集群。他们创建了一组二等公民,任何人 都无法始终访问它们 - 缺少 NAT 遍历措施 - 因此只能连接到一等公民,这些节点是任何人都可以与任何人交谈的节点别的。当然存在一些边缘情况,但它们在很大程度上是无关紧要的。
无论如何,由于您甚至不是在询问 kademlia,而是在询问 bittorrent,它实际上并不是 kademlia 的覆盖层,而是一个单独的网络,它只是从 kademlia 引导其联系信息,事情变得更加复杂。 Bittorrent 可以通过两种不同的传输机制实现,TCP 和 µTP,客户端可以支持 TCP、µTP 和 Kademlia-via-UDP 的不同级别的 nat 遍历功能。
Kademlia 节点通常将 bittorrent 的联系信息存储在几个可访问的节点上,因为它们 - 很明显 - 无法出于存储目的访问不可访问的节点。他们这样做也是有冗余的,这确保了存储的联系信息很可能被其他任何人看到。
基于该联系信息,bittorrent 客户端可以尝试相互连接。只要有一些可访问的 BT 客户端,它们就能够建立直接连接,然后还可以在不可访问的节点之间尝试一些 nat 遍历措施。同样,没有任何保证,因此在某些情况下小群体可能会失败,但一旦群体变得足够大,概率就会压倒性地倾向于有利于图形连接。
另一个小问题是 IPv4 与 IPv6。通常 IPv6 提供更好的连接性(如果防火墙不妨碍)但并非所有客户端都同样好地实现 ipv6 扩展,因此可能会阻止一些 v6 边缘的形成,而它们原则上会在相同节点之间提供更好的连接性。
请注意,ipv4 和 ipv6 DHT 理论上是独立的 DHT 网络,它们只是碰巧有一些重要的重叠。如何协调多个独立的网络,基本上不在kademlia的范围内。
关于networking - Kademlia 协议(protocol)如何保证节点形成连通图?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35775661/
这是我今天第一次读到关于 Kademlia 的文章,有些地方我认为我没有说对。 节点和键之间的距离是它们值的异或。 所以,如果我有键 x 和节点 y,它们之间的距离是 x xor y。 但是,为什么要
在Petar Maymounkov和DavidMazières撰写的Kademlia paper中,有人说XOR距离是有效的非欧几里得度量,但对为何有效度量的每个属性为何必要或有趣的解释有限,即: d
我知道 Kademlia 路由表由 160 个桶组成。 节点被放入 0-159 桶,这取决于它们的前缀长度(这是本地节点 key 和节点的 XOR 中的前导未设置位的数量)。 为什么会这样,是否有任何
kademlia paper抽象地讨论桶的组织、拆分、合并和找到要插入的正确桶,concise和 confusing条款。 §2.2 讨论了一组固定的 160 个桶,每个桶覆盖键空间的一个固定子集。但
我想设置一个 Kademlia 网络来连接对等点并构建 p2p 网络。我将分配网络内节点的处理能力。对于网络,我发现这个 Kademlia Java 从 git 实现了安装程序。 https://gi
我对去中心化应用程序及其优势思考了很长时间,尤其是当涉及大量流量时,它们往往更可靠、更便宜,而中心化应用程序则不然(最好的例子是 facebook或谷歌,这些服务器会消耗大量能源)。 我的问题是: K
我正在这里编写一个修改后的 Kademlia P2P 系统,但我在这里描述的问题与原始系统的实现非常相似。 那么,实现 k-Buckets 最有效的方法是什么?对我来说重要的是访问时间、并行性(读和写
我想在我的项目中使用 DHT,但在获取 Kademlia example 时遇到问题工作。 这是来自 twistd -noy Examples/server.tac 的输出日志: 2015-01-21
在Kademlia protocol节点 ID 是 160 位数字。节点存储在桶中,桶 0 存储除最后一位外与该节点具有相同 ID 的所有节点,桶 1 存储除最后 2 位外与该节点具有相同 ID 的所
我已经查看了一些关于这个主题的文件,但有一些不是很清楚。例如,bit torrent 文档 ( http://www.bittorrent.org/beps/bep_0005.html ) 状态 Th
我目前正在研究 Kademlia点对点协议(protocol),我很好奇是否有人知道有效广播信息/消息的技术或方法? 有论文Effcient Broadcast in Structured P2P N
节点:DHT 网络上的客户端。 Peers:尝试下载特定资源的客户端。 假设 DHT 网络是一个连通图,但没有节点可以访问所有其他节点(这种消耗与人们普遍认为的 DHT 网络覆盖的互联网是完全连接的相
为什么 Kademlia Distributed Hash Table使用 UDP 作为其网络传输协议(protocol),即使它不可靠? 最佳答案 主要原因是您快速查询了许多以前从未建立联系的节点,
节点:DHT 网络上的客户端。 Peers:尝试下载特定资源的客户端。 假设 DHT 网络是一个连通图,但没有节点可以访问所有其他节点(这种消耗与人们普遍认为的 DHT 网络覆盖的互联网是完全连接的相
最近看了一篇关于 Kademlia 协议(protocol)的文档,想了解一下协议(protocol),但还是有一些疑问: 为什么一个节点知道另一个节点的ID,但知道它的IP或端口时,他必须找到另一个
我正在考虑实现一个 DHT,其中数据项通过将后继地址添加到存储的值来链接,如果每个节点都可以具有以下三种有序状态之一:空 -> 数据 -> 数据和后继地址将所有同行都获得一致且正确的排序?还是这里有可
我正在努力阅读原始论文,试图理解看似矛盾的段落。一个例子是,在 2.2 中,作者声明对于位空间 160,将有 160 k 个桶,然后接着说,实际上桶是一个较小的数字,覆盖更广泛的位范围,并由前缀二叉树
我试图了解 Kademlia 在寻找资源方面是如何工作的。现在有很好的描述来构建一个最接近自节点的节点树,如何找到节点之间的距离,如何启动进程等等。我不明白的是文件 infohash 是如何适应这张图
遵循 XLattice 中的 Kademlia 规范,我想知道 iterativeFindNode 操作的确切工作原理以及它对引导和刷新存储桶有何用处。文件说: At the end of this
我试图更好地掌握 Kademlia 的 XOR 距离度量,因此我编写了一个小的虚拟程序来尝试更好地理解。我在这里也没有使用 160 位数字作为我的 key ,而是使用某个用户标识符的 sha256 哈
我是一名优秀的程序员,十分优秀!