- 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/
我正在阅读 deduction guides在 C++17 中。假设我们有以下示例: template struct Custom { }; template struct Person {
我在我的 xamarin 表单项目中使用选项卡式页面。我正在尝试在 Android 的 MyTabsRenderer 类中使用 OnTabReselected 事件。但不会调用 OnTabSelect
我对 NSPredicate 有疑问。想不出一种写法,也找不到类似的东西。我有这个谓词: [NSPredicate predicateWithFormat:@"followedBy.username
我的模态中有一个小表单,如下所示: Name
我正在尝试制作用于表单验证的 jquery 插件(用于学习)。在此表单中,我无法获取类名称为“required”的所有表单字段。代码如下: (function( $ ) { $.fn.kValidat
在我的 Android 应用中,我从 Google Place API 获取附近餐馆的列表。 但不幸的是,这个列表没有给出餐厅的菜单。 我有 T_RESTAURANT 和 T_MENU 表。 假设我在
我正在尝试使用 angular.js 和 devise 设置登录。 这是我的表单 html: Email Password
谁能告诉我如何让生成的文档从表单中提取数据并将其作为标题?我已经查看了 Google Script 文档,但到目前为止我还没有找到任何可以回答我或向我展示类似示例的内容。到目前为止,我在这里找到了相关
当我有这样的表格时: “.”是什么意思?在行动中代表什么? 最佳答案 action 属性告诉表单将表单数据发布到哪里。 . 代表当前目录,所以我会说这是发布到当前目录中的默认文档。 相对路径有几
Mockito 似乎是一个非常漂亮的 Java stub /模拟框架。唯一的问题是我找不到任何关于使用他们的 API 的最佳方式的具体文档。测试中常用的方法包括: doXXX(???) : Stubb
我有 2 份表格。我从一种形式创建并展示了另一种形式。效果很好。但是,当我尝试从创建该表单的表单中关闭或处理该表单时,出现以下异常: Exception : Value Dispose() can
将我的应用程序上传到 TestFlight 时出现以下错误。 但是,我没有看到 missing 的任何位置Xamarin Assets 菜单中的图标。 (76x76、167x167 和 152x152
我的models.py文件看起来像这样 from django.db import models from django.template.defaultfilters import slugify
问题 学习 Xamarin 大学类(class) XAM120 .在将我的 IDial 实现添加到我的 UWP 项目时遇到障碍。出于某种原因,我的项目没有在我的系统上使用 PhoneCallManag
我在应用程序的列表页面上使用了 FloatingActionButton,我还想添加一个 searchBar。但我无法向他们展示该页面。我的代码和屏幕截图已关闭。如何显示搜索栏? FAB Github
实体产品和类别之间存在经典的多对多关系,其中一个产品可能包含在多个类别中。我们想在 UI 中使用带有 UITableViewController 或 UICollectionView 的 NSFetc
html 代码: js代码: function show(){ $.ajax({
我有一个用户列表。现在任何一个名字很长的用户都在搞乱排列/排列。 我认为通过为名称设置大小可以达到目的: .invitee .name{ height: 50px; width: 115px;
我正在使用 Flask 框架和 WTforms 库,我在更改选择字段中每个选项的颜色时遇到了问题,因为它总是显示为黑色而不是红色 我在模板中有下一个表单
Dugen Chen 写了一篇有用的文章,介绍如何将 HTML5 验证中的“required”属性添加到 Django 表单字段。 http://duganchen.ca/elegantly-addi
我是一名优秀的程序员,十分优秀!