节点:DHT网络上的客户端 对等方:客户端尝试下载特定资源。
假设DHT网络是连接图,但是没有节点可以访问所有其他节点(与DHT网络覆盖的互联网完全连接的普遍看法相反的消费)。
在DHT网络上覆盖的Peer网络仍然是连接图吗?为什么呢?
答案 0 :(得分:4)
Kademlia是一种抽象算法,假设真空中的球形奶牛。本文讨论的唯一失败模式是流失和临时图分区。不考虑不对称可达性。
在现实世界中实施的Kademlia使无保障。一切都是在尽力而为的概率基础上完成的。
现实世界中的主要问题不是互连群集A无法与互连群集通信的节点B. NAT和防火墙不会在相当大的范围内引入此类群集。他们创建了一组二等公民,这些公民无法通过任何人一直到达 - 没有NAT遍历措施 - 因此只能连接到一流的公民,这是任何人都可以与任何人交谈的节点其他。当然存在一些边缘情况,但它们在很大程度上是无关紧要的。
无论如何,既然你甚至没有询问kademlia而是关于bittorrent,这实际上不是kademlia的重叠,而是一个单独的网络,只是从kademlia引导其联系信息,事情变得更加复杂。 Bittorrent可以通过两种不同的传输机制TCP和μTP实现,客户端可以支持TCP,μTP和Kademlia-via-UDP的不同级别的nat遍历功能。
Kademlia节点通常在几个可到达的节点上存储bittorrent的联系信息,因为它们 - 很明显 - 无法到达无法访问的节点以进行存储。它们也通过冗余来实现,这确保了很可能其他任何人都可以观察到存储的联系信息。
根据该联系信息,bittorrent客户端可以尝试相互连接。只要有一些可达的bittorrent客户端,它们就能够建立直接连接,然后还可以在不可达的节点之间尝试一些nat遍历措施。同样,没有任何保证,因此在某些情况下小群可能会失败,但是一旦群体变得足够大,概率就会大大倾向于有利于图形连接。
另一个值得关注的问题是IPv4与IPv6。通常IPv6提供更好的连接性,但并非所有客户端都能同样好地实现ipv6扩展,因此可能会在原则上提供相同节点之间的高级连接时阻止形成一些v6边缘。
请注意,ipv4和ipv6 DHT在理论上是独立的DHT网络,它们碰巧有一些重要的重叠。它基本上超出了kademlia的范围,如何协调多个独立的网络。