IPFS的DHT数据寻址与存储过程

以下为个人理解,仅看过论文和一些相关资料,并未看过源码实现过程,仅供参考。如有错误,请指正,谢谢!

看本文前请自行了解DHT。

数据上传

  1. peer A 加入IPFS网络。假设peer A的node id 是000011,peer A要上传图片X,图片X的内容标识符(CID,或者也叫哈希值)011100。
  2. peer A 发现 自己的相邻节点peer B的node id 是011000,也就是说peer B与数据X的逻辑距离比peer A更近。所以peer A 告诉peer B自己有图片X。
  3. peer B发现自己的相邻节点peer C的node id 是011110,比自己的逻辑距离更近。因此告诉peer C,peer A 有图片X。
  4. peer C 发现自己的相邻节点中没有比自己更近的其他节点,于是就记录到DHT: X(011100) 存储在peer A(000011)。如果图片X足够小,会直接记录X。

数据查找

  1. peer E相应下载图片X,通过DHT递归查询到peer C,得知图片X存储在peer A(000011)。
  2. peer E不知道peer A的ip 地址和端口,peer C也没有和peer A直连。所以peer E 又进行了一次DHT查询,直到找到peer A的ip和端口。

那么问题来了,为什么peer C不直接存储peer A的ip和端口呢?
答:DHT采用node id来寻址,是一种在物理网络层之上的网络层,又叫overlay network。可以实现和物理网络解耦,可以不用考虑节点的ip变化问题。

你可能感兴趣的:(blockchian,区块链,ipfs)