Хорошо, я читал статьи и бумага о Kademlia недавно реализовала простую программу p2p, которая использует алгоритм kademlia dht. И в этих документах говорится, что этот 160-битный ключ в узле Kademlia используется для идентификации обоих узлов (ID узла) и данных (которые хранятся в виде кортеж).
Я совсем запутался в этой части "оба".
Насколько я понимаю, каждый узел в двоичном дереве Kademlia однозначно представляет клиента (IP, порт), каждый из которых содержит список файлов.
Вот общий поток в моем понимании.
- Клиент (.exe) загружается
- Создает компонент узла
- Вновь созданный узел присоединяется к сети (самозагрузка)
- Sends find_node(filehash) to k-closest nodes
- Let's say hash is generated by hashing file binary named file1.txt
- Received nodes each finds the queried filehash in its different hash table
- Say, a hash map that has a list of files(File Hash, file location)
- Шаг 4,5 повторяется до тех пор, пока узел не будет найден (при этом все связанные узлы обновляют сегменты)
С этим потоком все в порядке?
Кроме того, метод начальной загрузки Kademlia меня тоже смущает. Когда узел создается (пользователь выполняет программу), кажется, что он использует узел начальной загрузки для заполнения ведер. Но тогда что такое загрузочный узел? Это другой процесс, который всегда работает? Что делать, если узел начальной загрузки отключается?
Может ли кто-нибудь помочь мне лучше понять концепцию?
Спасибо за помощь заранее.