描述

迭代查询是libp2p kad中的关键部分,kad通过迭代查询不断逼近目标,这个目标可能是peer,可能是provider,也有可能是value。

过程

  1. 选取K桶中距离key最近的(最多)K个节点,将这些节点的状态置为Heard;
  2. 向它们发起(并行)查询(发送FIND_NODE, GET_PROVIDERS或者GET_VALUE request),得到它们K桶中距离key最近的K个节点信息,将新得到的节点状态置为Heard,并且收集起来;
  3. 判断结束条件(如下),满足其中之一即可结束;否则在所有状态为Heard的节点中挑选若干个距离key最近的节点,继续发起查询;
  4. 迭代查询结束,所有非unreachable的节点按照距离排序,向前(最多)K个节点中那些未查询或者正在查询的节点发起查询。

并行查询

最多只能同时向alpha个节点查询,如果还有n个查询未返回,那么这一轮只能向alpha-n个节点查询。

结束条件

  1. 所有非unreachable的节点按照距离排序后,前beta个节点全部都查询过(表明连续beta轮都找不到更近的节点)
  2. starvation: 没有状态为waiting或者heard的节点
  3. 各操作自定义的结束条件:

    findPeer : 连接上目标节点
    findProviders : 得到的provider记录数超过阈值
    getValue : 得到的value记录数超过阈值

用处

findPeer getValue putValue findProviders provide rtRefresh

libp2p kad 迭代查询相关推荐

  1. 一起学DNS系列(十)图、例详解DNS递归和迭代查询原理及过程 (1)

    上节中提到了一些有关递归查询的内容,但说的很少,也很笼统,本节将会从原理和实例两方面入手分析DNS的递归以及迭代查询. 在此之前,我们需要了解一些背景知识,以便于更好的理解今天的主题内容. 在互联网中 ...

  2. 详解DNS递归查询与迭代查询

    关于01月23日全国范围内DNS污染,域名解析故障的根源,资深的IT人士都知道原因是什么,并非国家 互联网应急中心发出的遭受***一说. 因此这里介绍一下DNS服务器的查询原理,也就是递归查询和迭代查 ...

  3. 【计算机网络】应用层 : DNS 域名解析系统 ( 域名 | 域名服务器 | 域名解析过程 | 递归查询 | 迭代查询 | 高速缓存 )

    文章目录 一.域名 二.域名服务器 三.域名解析过程 四.递归查询 五.迭代查询 六.高速缓存 一.域名 域名 : ① 域名表示方法 : 字母 , 数字 , "-" 符号 , &q ...

  4. linux关闭dns迭代查询,DNS查询和响应过程递归和迭代的使用

    需要了解DNS查询过程的递归和迭代的机制,找到了RFC的相关章节, 对这个进行了简单的翻译(水平有限),可以留下来做个参考. RFC 1034 4.3.1. Queries and responses ...

  5. [日常] DNS的迭代查询过程

    DNS是应用层协议,端口号为tcp/53和udp/53 DNS查询过程,比如访问www.test.com 1.客户机查询www.test.com 2.查询首选DNS服务器,Linux下/etc/res ...

  6. dns迭代查询配置_dns解析?瞅瞅这篇文章

    dns( Domain Name System),顾名思义,就是用来将主机名和域名转换为IP地址的系统,那么dns是怎么运作的呢,本文简单记录下龙叔的理解 1·研究环境 为了研究dns,当然要自己搭建 ...

  7. dns迭代查询配置_人人都能看懂-关于dns服务基本知识

    一.DNS: Domain Name Service 应用层协议(C/S,53/udp, 53/tcp) 域名又称网域,是由一串用点分隔的名字组成的上某一台或计算机组的名称,用于在数据传输时对计算机的 ...

  8. DNS递归查询与迭代查询

    原文链接:https://www.cnblogs.com/qingdaofu/p/7399670.html DNS递归查询与迭代查询 基础知识 1.域名系统 2.域名服务器 域名解析过程 1.在浏览器 ...

  9. 什么是递归查询,迭代查询?

    主机向本地域名服务器的查询一般都是采用递归查询.所谓递归查询就是:如果主机所询问的本地域名服务器不知道被查询的域名的 IP 地址,那么本地域名服务器就以 DNS 客户的身份,向根域名服务器继续发出查询 ...

最新文章

  1. 开发脚本自动部署及监控
  2. HarmonyOS之AI能力·通用文字识别技术
  3. VHDL中的左移函数
  4. java tcp怎么拆包_Java网络编程基础之TCP粘包拆包
  5. sql语句查询数据库中含有某字符串的表名
  6. 外媒:高通、微软和谷歌担忧英伟达收购Arm将损害竞争
  7. java可以实现agv调度吗_AGV路线优化及实时调度
  8. Xamarin学习笔记
  9. 如何用数据驱动的广告效果
  10. (附源码)ssm通用数据展示系统 毕业设计 200934
  11. URI和URL的区别和关联
  12. 鹏业安装算量NETDWGCOM接口创建失败处理办法
  13. python地图 两点距离_使用python计算google地图中两点之间的距离
  14. 【Python】多进程 AttributeError: Can‘t pickle local object
  15. 10分钟健身法读书笔记(5/5)
  16. MacBook安装p7zip解压7z文件
  17. jdk8 list Stream groupingBy 分组之后 利用 reducing 求和 BigDecimal
  18. 充满哲学命题的科幻巨作—《2001太空漫游》
  19. 数据仓库 Hive 从入门到小牛(一)
  20. vijosP1567子串计数

热门文章

  1. 从多变形面积到多面体体积:鞋带公式的3D版本
  2. 基于遗传算法的BP神经网络
  3. Java 集合类(Map和Collection)
  4. 关于射频芯片最详细解读
  5. Python基础语法(自用)
  6. 二维几何变换java代码_基于Batik的SVG应用: 关于几何变换
  7. Eclipse集成SVN报Failed to load JavaHL Library
  8. <虎年大吉>超酷烟花特效
  9. 现代操作系统(1.引论)
  10. 非标常用焊接工艺应用