Как Kademlia/DHT получает идентификатор узла и обновляет одноранговый узел, покидающий рой?

Я прочитал газету "Kademlia: одноранговая информационная система на основе метрики XOR". но у меня все еще есть 2 вопроса.

Q1: Как узел получает свой идентификатор узла?

В BEP5 говорится: Каждый узел имеет глобально уникальный идентификатор, известный как "идентификатор узла". Идентификаторы узлов выбираются случайным образом из того же 160-битного пространства, что и информационные биты BitTorrent.

Тогда, если вы выбираете случайным образом, как вы выбираете и как убедиться, что выбранный вами идентификатор является глобально уникальным? Я имею в виду, что кто-то может выбрать тот же идентификатор, что и ваш.

Q2: Как узел, хранящий значение ключа, узнает, покидает ли какой-либо узел рой?

В документе, который я упомянул в первой строке, говорится: "Для компенсации узлов, покидающих сеть, Kademlia повторно публикует каждую пару ключ-значение один раз в час.

Но если бы я был узлом, я хочу обновить, кто все еще загружает один определенный файл, я все еще понятия не имею, кто покинул рой.

1 ответ

Решение

Тогда, если вы выбираете наугад, как вы выбираете

С генератором случайных чисел.

как убедиться, что выбранный вами идентификатор является глобально уникальным?

Крайне маловероятно, что кто-то выберет один и тот же идентификатор узла случайным образом. Размер ключа составляет 160 бит. Это 2^160 возможностей. Это немного меньше, чем у Земли есть атомы.

Q2: Как узел, хранящий значение ключа, узнает, покидает ли какой-либо узел рой?

Это не так. Это просто время ожидания значений, которые не обновляются.

Но если бы я был узлом, я хочу обновить, кто все еще загружает один определенный файл

Цель DHT не в том, чтобы иметь точное представление о том, кто скачивает торрент, а только в том, чтобы предоставить начальные контакты, чтобы присоединиться к рое. Незначительные неточности не имеют значения.

Другие вопросы по тегам