Предполагаю, что вы прочитали документ Kademlia . Вот выдержка из моей статьи Введение в Kademlia DHT & amp; Как это работает
Некоторая справочная информация:
Процесс соединения:
NN
создается с помощью NodeId (назначается каким-то методом) и IP-адресом (IP-адрес компьютера, на котором он размещен). NN
отправляет LookupRequest(A.NodeId)
в BN
. Запрос на поиск в основном запрашивает принимающий узел для узлов K-Closest, которые он знает для данного NodeId. В этом случае BN
вернет узлы K-Closest, которые он знает NN
. BN
теперь добавит NN
в свою таблицу маршрутизации, поэтому NN
теперь находится в сеть. NN
получает список K-самых близких узлов к себе из BN
. NN
добавляет BN
в свою таблицу маршрутизации. NN
теперь записывает эти узлы K, полученные из BN
, а те, которые отвечают, добавляются в таблицу маршрутизации в нужные ведра на основе расстояния. Путем проверки этих узлов они также узнают о существовании NN
и добавляют NN
к их таблицам маршрутизации. NN
теперь подключен к сети и известен узлами в сети. NN
теперь проходит через каждый из своих K-Buckets foreach(K-Buckets as KB)
1. NN generates a random NodeId `RNID` // A NodeId that will be in KB
2. NN sends LookupRequest(RNID) to the K-Closest nodes it knows to RNID.
3. The response will be K nodes closest to RNID.
4. NN now fills KB.
NN
делает это для каждого из своих ковшей, чтобы заполнить эти ведра. После этой операции NN
имеет лучшее представление о узлах в сети на разных расстояниях от себя. Примечание. Этот шаг не является обязательным, однако я сделал это в My Implementation of Kademlia , чтобы каждый узел имел лучшее знание сети при их присоединении. Я написал полное введение в Kademlia в . Введение в Kademlia DHT & amp; Как это работает