Как Kademlia/DHT получает идентификатор узла и обновляет одноранговый узел, покидающий рой?
Я прочитал газету "Kademlia: одноранговая информационная система на основе метрики XOR". но у меня все еще есть 2 вопроса.
Q1: Как узел получает свой идентификатор узла?
В BEP5 говорится: Каждый узел имеет глобально уникальный идентификатор, известный как "идентификатор узла". Идентификаторы узлов выбираются случайным образом из того же 160-битного пространства, что и информационные биты BitTorrent.
Тогда, если вы выбираете случайным образом, как вы выбираете и как убедиться, что выбранный вами идентификатор является глобально уникальным? Я имею в виду, что кто-то может выбрать тот же идентификатор, что и ваш.
Q2: Как узел, хранящий значение ключа, узнает, покидает ли какой-либо узел рой?
В документе, который я упомянул в первой строке, говорится: "Для компенсации узлов, покидающих сеть, Kademlia повторно публикует каждую пару ключ-значение один раз в час.
Но если бы я был узлом, я хочу обновить, кто все еще загружает один определенный файл, я все еще понятия не имею, кто покинул рой.
1 ответ
Тогда, если вы выбираете наугад, как вы выбираете
С генератором случайных чисел.
как убедиться, что выбранный вами идентификатор является глобально уникальным?
Крайне маловероятно, что кто-то выберет один и тот же идентификатор узла случайным образом. Размер ключа составляет 160 бит. Это 2^160 возможностей. Это немного меньше, чем у Земли есть атомы.
Q2: Как узел, хранящий значение ключа, узнает, покидает ли какой-либо узел рой?
Это не так. Это просто время ожидания значений, которые не обновляются.
Но если бы я был узлом, я хочу обновить, кто все еще загружает один определенный файл
Цель DHT не в том, чтобы иметь точное представление о том, кто скачивает торрент, а только в том, чтобы предоставить начальные контакты, чтобы присоединиться к рое. Незначительные неточности не имеют значения.