Как дерево узлов Kademlia относится к информационному хешу торрент-файла?
Я пытаюсь понять, как работает Kademlia в поиске ресурса. Сейчас есть довольно хорошее описание для построения дерева узлов, которое ближе всего к самому узлу, как найти расстояние между узлами, как инициировать процесс и т. Д. Что я не понимаю, так это как файл infohash вписывается в эту картину, Все описания говорят нам, как войти в игру и создать свою собственную часть распределенной хэш-таблицы, но это не так. Мы делаем это для того, чтобы найти ресурс, файл с определенным информационным хешем. Как оно хранится в этом дереве узлов или есть отдельное? Как это работает, чтобы найти узлы, которые имеют этот infohash, следовательно, имея файл.
Есть краткое упоминание того факта, что идентификатор узла и информационный хэш, имеющие одинаковые 20-байтовые коды длины, и нечто такое, что информационный хэш идентификатора узла XOR - это расстояние между узлом и ресурсом, но я не могу представить, как это и как это помогает найти ресурс? Ведь идентификатор узла, фактически имеющий ресурс, может иметь наибольшее расстояние XOR до ресурса.
Спасибо Алекс
1 ответ
Я рекомендую вам не только прочитать спецификацию bittorrent DHT, но и оригинальную статью о kademlia, поскольку первая довольно краткая и лишь мимоходом упоминает некоторые вещи.
Bittorrent-х get_peers
поиск эквивалентен find_value
Операция описана в статье.
Вкратце: точно так же, как вы можете выполнить итеративный поиск, чтобы найти K-closest-node-set - ближайший на основе xor-distance относительно целевого ключа - для идентификатора вашего собственного узла вы можете сделать это для любого другого идентификатора.
За get_peers
Вы просто используете infohash как целевой ключ.
Набор K-ближайших узлов для определенного информационного хэша - это набор узлов, которые считаются ответственными за хранение данных для указанного информационного хэша. Хотя из-за неточностей реализаций и оттока узлов более K узлов вокруг целевого ключа могут хранить данные, представляющие интерес.