Магнитная ссылка BitTorrent идентифицирует торрент, используя 1 SHA-1 или усеченное значение хеш-функции SHA-256, известное как «infohash».Это то же значение, которое одноранговые узлы (клиенты) используют для идентификации торрентов при общении с трекерами или другими одноранговыми узлами.Традиционный файл .torrent содержит структуру данных с двумя ключами верхнего уровня: announce
, идентифицирующую трекер (ы), который будет использоваться для загрузки, и info
, содержащую имена файлов и хэши для торрента.«Infohash» - это хэш закодированных info
данных.
Некоторые ссылки на магниты включают трекеры или начальные числа, но они часто этого не делают.Ваш клиент может ничего не знать о торренте, кроме его infohash.Первое, что ему нужно, это найти других пиров, которые скачивают торрент.Для этого используется отдельная одноранговая сеть 2 , работающая с «распределенной хэш-таблицей» (DHT).DHT - это большой распределенный индекс, который отображает торренты (определяемые информационными хэшами) в списки пиров (идентифицируемых по IP-адресу и портам), которые участвуют в наборе данных для этого торрента (загрузка / загрузка данных или метаданных).
Когда клиент впервые подключается к сети DHT, он генерирует случайный 160-битный идентификатор из того же пространства, что и информационные мешки.Затем он загружает свое соединение с сетью DHT, используя либо жестко закодированные адреса клиентов, контролируемых разработчиком клиента, либо клиенты, поддерживающие DHT, ранее встречавшиеся в торрент-рое.Когда он хочет участвовать в рое для данного торрента, он ищет в сети DHT несколько других клиентов, чьи идентификаторы максимально приближены 3 к информационному хешу.Он уведомляет этих клиентов о своем желании участвовать в рое и запрашивает у них информацию о подключении любых уже известных им пиров, участвующих в рое.
Когда перы загружают / скачивают определенный торрентони пытаются рассказать друг другу обо всех своих знакомых, участвующих в одном и том же торрент-рое.Это позволяет партнерам узнавать друг друга быстро, не подвергая трекер или DHT постоянным запросам.Как только вы узнаете о нескольких одноранговых узлах из DHT, ваш клиент сможет запросить информацию о подключении еще одного однорангового узла в рое торрента, пока у вас не появятся все необходимые одноранговые узлы.
* 1017Наконец, мы можем запросить у этих пиров метаданные торрента
info
, содержащие имена файлов и список хэшей.После того, как мы загрузили эту информацию и убедились, что она верна, используя известный
infohash
, мы практически находимся в том же положении, что и клиент, который начал с обычного
.torrent
файла и получил список пиров из включенного трекера.
Загрузка может начаться.
1 Хэш-информация обычно закодирована в шестнадцатеричном формате, но некоторые старые клиенты вместо этого использовали базу 32.v1 (urn:btih:
) напрямую использует дайджест SHA-1, а v2 (urn:bimh:
) добавляет префикс multihash для определения алгоритма хеширования и длины дайджеста.
2 Существует две основные сети DHT: более простая «магистральная» DHT и более сложный протокол, используемый Azureus.
3 Расстояние измеряется с помощью XOR.
ДалееЧтение