一起来读书552- ipfs原理与实践:第二章 ipfs底层基础

摘要

 

详情

分布式哈希表(DHT):

Kademlia二叉状态树:

  • 每个网络节点从根节点出发,沿着他的最短唯一前缀到达
  • 每个网络节点是叶子节点

节点路由表K-Bucket:

用于保存每一个节点与自己一定距离范围内其他结点的连接信息,每一条路由信息由以下3个部分组成:IP Address, UDP Port, Node ID。KAD路由表将距离分成160个K桶(存放K个数据的桶),分开存储。对于一个有N个节点的KAD网络,最多只需要经过logN步查询:

1.计算自己和发送者的ID距离: d(x, y)=x+y。

2.通过距离d选择对应的K桶进行更新操作

3.如果y的IP地址已经存在于这个k桶中,则把对应项移到该K桶的尾部;如果y的IP地址没有记录在该K桶中,则:

  • 如果该K桶的记录项小于K个,则直接把y的(IP address, UDP port, Node ID)信息插入队列尾部。
  • 如果该K桶的记录项大于K个,则选择头部的记录项(假如是节点z)进行RPC_PING操作:

        1.如果z没有响应,则从K桶中移除z的信息,并把y的信息插入队列尾部

        2.如果z有响应,则把z的信息移到队列尾部,同时忽略y的信息

猜你喜欢

转载自blog.csdn.net/qq_27304213/article/details/107469576