Jump to content

Основная линия DHT

Mainline DHT — это имя, данное Kademlia (DHT) на основе распределенной хеш-таблице , используемой клиентами BitTorrent для поиска узлов через протокол BitTorrent . Впервые была реализована идея использования DHT для распределенного отслеживания в BitTorrent. [1] [2] в Azureus 2.3.0.0 (теперь известном как Vuze ) в мае 2005 года, благодаря чему он приобрел значительную популярность. Не имеет отношения к делу, но примерно в то же время BitTorrent, Inc. выпустила аналогичный DHT для своего клиента под названием Mainline DHT и, таким образом, популяризировала использование распределенного отслеживания в протоколе BitTorrent. Измерения показали, что к 2013 году количество одновременных пользователей Mainline DHT составит от 16 до 28 миллионов, при этом внутридневные изменения составят не менее 10 миллионов. [3]

Описание

[ редактировать ]

Mainline DHT основан на популярном дизайне Kademlia DHT. [4] До использования DHT для распространения пиров трекеры единственным методом поиска пиров были . Ключевой особенностью использования DHT вместо трекеров является то, что децентрализованный подход благоприятствует природе протокола BitTorrent. DHT работает путем распространения списков пиров, идентифицированных хешем SHA-1 торрента.

Операция

[ редактировать ]

Хеш SHA-1 торрента, infohash , является синонимом ключа Kademlia, который используется для поиска пиров (значений) в оверлейной сети. Чтобы найти одноранговые узлы в множестве, узел отправляет запрос get_peers с информационным хешем в качестве ключа (эквивалент Kademlia FIND_VALUE ) ближайшим известным узлам (с учетом расстояния между ключами). Как и Kademlia, если узел не возвращает значение (одноранговые узлы), он продолжает выполнять итеративную операцию. Однако после того, как поиск исчерпан, клиент также вставляет контактную информацию однорангового узла в отвечающие узлы с идентификаторами, наиболее близкими к информационному хешу торрента.

Узлы используют дополнительную меру, известную как токен , чтобы гарантировать, что другие не подпишут другие хосты для торрентов. Возвращаемое значение запроса для одноранговых узлов включает это непрозрачное значение. Чтобы узел мог объявить, что его контролирующий узел загружает торрент, он должен представить токен, полученный от того же запрашиваемого узла, в недавнем запросе узлов. Когда узел пытается «объявить» о торренте, запрашиваемый узел сверяет токен с IP-адресом запрашивающего узла.

Mainline DHT использует хэш SHA-1 IP-адреса, объединенный в секрет, который меняется каждые пять минут для значения токена. Принимаются жетоны возрастом до десяти минут.

Узел в Mainline DHT состоит из комбинации IP и порта. Узлы обмениваются данными через протокол RPC, называемый KRPC . KRPC — это простой протокол, который состоит из узлов, отправляющих сообщения (запросы, ответы и ошибки), содержащие закодированные словари по UDP .

Сообщение KRPC представляет собой единый словарь с двумя ключами, общими для каждого сообщения, и дополнительными ключами в зависимости от типа сообщения. Каждое сообщение имеет ключ «t» со строковым значением, представляющим идентификатор транзакции. Этот идентификатор транзакции генерируется запрашивающим узлом и отображается в ответе, поэтому ответы могут коррелировать с несколькими запросами к одному и тому же узлу. Идентификатор транзакции должен быть закодирован как короткая строка двоичных чисел, обычно двух октетов достаточно, поскольку они охватывают 2^16 невыполненных запросов. Другой ключ, содержащийся в каждом сообщении KRPC, — это «y» с односимвольным значением, описывающим тип сообщения. Значением ключа «y» является одно из «q» для запроса, «r» для ответа или «e» для ошибки.

Запросы или словари сообщений KRPC со значением «y», равным «q», содержат два дополнительных ключа; «к» и «а». Ключ «q» имеет строковое значение, содержащее имя метода запроса. Ключ «a» имеет значение словаря, содержащее именованные аргументы запроса.

Ответы или словари сообщений KRPC со значением «y» «r» содержат один дополнительный ключ «r». Значение «r» представляет собой словарь, содержащий именованные возвращаемые значения. Ответные сообщения отправляются после успешного завершения запроса.

Ошибки, или словари сообщений KRPC со значением «y», равным «e», содержат один дополнительный ключ «e». Значение «e» представляет собой список. Первый элемент — это целое число, представляющее код ошибки. Второй элемент — это строка, содержащая сообщение об ошибке. Ошибки отправляются, когда запрос не может быть выполнен.

Таблица маршрутизации

[ редактировать ]

Ведра устроены иначе, чем в Кадемлии. Вместо списка из 160 сегментов BitTorrent начинается только с одного сегмента. Когда ведро наполняется, может произойти одно из двух:

  • Ведро расколото.
  • Старые узлы пингуются (как в Кадемлии).

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

У этой реализации корзины есть два преимущества:

  • Меньше памяти используется для таблицы маршрутизации, содержащей менее 160 сегментов.
  • При поиске в сегментах нет необходимости извлекать дополнительные узлы из соседних сегментов, поскольку гарантировано, что их достаточно в текущем сегменте.

Реализации

[ редактировать ]

Mainline DHT впервые был включен в версию 4.2.0 программного обеспечения BitTorrent (ноябрь 2005 г.). С тех пор его внедрили ряд других клиентов:

  1. ^ Джонс, Бен (7 июня 2015 г.). «DHT BitTorrent исполняется 10 лет» . ТоррентФрик . Проверено 5 июля 2015 г.
  2. ^ «Журнал изменений Вузе» . Azureus.sourceforge.net. Архивировано из оригинала 1 декабря 2006 г. Проверено 15 июля 2012 г.
  3. ^ Ван, Лян; Кангашарью, Юсси (2013). «Измерение крупномасштабных распределенных систем: пример основного DHT BitTorrent» (PDF) . Одноранговая связь IEEE . Проверено 26 октября 2013 г.
  4. ^ Левенстерн, Эндрю; Норберг, Арвид (22 марта 2013 г.). «Протокол DHT» . BitTorrent.org . Проверено 26 ноября 2021 г.
  5. ^ «О – Потоп» .
[ редактировать ]
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: b730664e31bcb4f96be6566447e18db0__1698948180
URL1:https://arc.ask3.ru/arc/aa/b7/b0/b730664e31bcb4f96be6566447e18db0.html
Заголовок, (Title) документа по адресу, URL1:
Mainline DHT - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)