发现原理
1) 系统第一次启动随机生成本机节点NodeId,即为LocalId,生成后固定不变,本地节点记为local-eth.
该节点为第一次启动时生成,以后重新启动后不会变化。各个节点都会有一个唯一的标志NodeId。A和B都有各自NODEid
2) 系统读取公共节点信息,ping-pang握手完成后,将其写入K桶
读取公共节点,也就是说大家都知道,各个节点都有相同的公共节点信息。设为C。也就是说A不知道B,B不知道A,但A和B都知道C.这个是C点也就是知道了A点和B点。
3) 进入刷桶循环
a) 随机生成目标节点Id,记为TargetId,从1开始记录发现次数和刷新时间。
各个节点都会生成目标节点id,也就是说每个节点同时发起刷桶操作。
b) 计算TargetId与LocalId的距离,记为Dlt
计算本地节点与目标节点的距离。
c) k桶中节点NodeId记为KadId,计算KadId与TargetId的距离,记为Dkt
各个节点中k通中初始化为公共节点信息,
d) 找出K桶中Dlt大于Dkt的节点,记为K桶节点,向k桶发送FindNODE命令,FindNODE命令包括TargetId,