Как работает DHT в торрентах?
я кодирую реализацию p2p, которую я хотел бы сделать децентрализованной, однако у меня возникли некоторые проблемы с пониманием того, как DHT в протоколах, таких как bittorrent, работает. Как клиент узнает, где находятся сверстники, если нет трекера? Хранятся ли одноранговые узлы в реальном торрент-файле?
4 ответов:
с trackerless / DHT торренты, одноранговые IP-адреса хранятся в DHT, используя BitTorrent infohash в качестве ключа. Поскольку все, что делает трекер, в основном, отвечает на запросы put/get, эта функциональность точно соответствует интерфейсу, который предоставляет DHT (распределенная хэш-таблица): он позволяет вам искать и хранить IP-адреса в DHT с помощью infohash.
таким образом, запрос" get " будет искать BT infohash и возвращать набор IP-адресов. A " put " хранит IP-адрес для данной мыши запустите расширение. Это соответствует запросу "объявить", который вы в противном случае сделали бы для трекера, чтобы получить словарь одноранговых IP-адресов.
в DHT одноранговые узлы случайным образом назначаются для хранения значений, принадлежащих небольшой части пространства ключей; хэширование гарантирует, что ключи распределяются случайным образом между участвующими одноранговыми узлами. Протокол DHT (адреса для BitTorrent) гарантирует, что запросы put/get эффективно маршрутизируются к узлам, ответственным за ведение списков IP-адресов данного ключа.
общая теория может быть найдена в статье Википедии о адреса. Конкретная спецификация протокола, используемая в bittorrent, находится здесь:http://wiki.theory.org/BitTorrentDraftDHTProtocol
Что происходит с bittorrent и DHT, так это то, что в начале bittorrent использует информацию, встроенную в торрент-файл, чтобы перейти к трекеру или одному из множества узлов из DHT. Затем, как только он находит один узел, он может продолжать находить другие и продолжать использовать DHT без необходимости централизованного трекера для его обслуживания.
исходная информация загружает более позднее использование DHT.
узлы DHT имеют уникальные идентификаторы, называемые ID узла. Идентификаторы узлов выбираются случайным образом из того же 160-битного пространства, что и информационные хэши BitTorrent. Близость измеряется путем сравнения таблиц маршрутизации идентификатора узла, чем ближе узел, тем более подробно, что приводит к оптимальному
Что тогда делает их более оптимальными, чем его предшественник "Kademlia", который использовал простые целые числа без знака: расстояние(A, B) = |A xor B| меньшие значения ближе. ИСКЛЮЧАЮЩЕЕ ИЛИ. Кроме того, что он не был безопасным, его логика была недостатки.
Если ваш клиент поддерживает DHT, зарезервировано 8 байт, в которых содержится 0x09, а затем 2-байтовая полезная нагрузка с портом UDP и узлом DHT. Если рукопожатие будет успешным, то вышеописанное будет продолжено.
Comments