Как получить первый сверстник из ссылки torrent-magnet?
Я пытался понять технологию торрентов-магнитов, но я не могу понять, как вы подключаетесь к первому сверстнику при открытии магнитной ссылки.
Когда вы получаете ссылку на магнит, как показано ниже, в ней нет начального peer - только BitTorrent Info Hash (btih) и имя файла.
magnet:?xt=urn:btih:bbb6db69965af769f664b6636e7914f8735141b3&dn=ubuntu-12.04-desktop-i386.iso
Согласно BitTorrent и магниты: как они работают? (MakeUseOf)
Если вы нажмете ссылку на магнит, которая не укажет трекер (tr
) , первый одноранговый узел будет найден с использованием DHT. После того, как вы получили равный подход, обмен пирамидами тоже.
В статье DHT в Википедии не указывается, как найти одноранговую сеть, но в статье Kademlia (на котором основан BitTorrent DHT), говорится:
A node, который хотел бы присоединиться к сети, должен сначала пройти процесс начальной загрузки. На этом этапе соединение node должно знать IP-адрес и порт другого node -a bootstrap node (полученного от пользователя или из сохраненного списка) - это уже участвуя в сети Kademlia.
Но откуда он знает, что node от? Я не вижу адреса или ничего присутствующего в ссылке на магнит. Поскольку он децентрализован (без следа), я бы не ожидал, что он будет знать node заранее. Или DHT фактически не децентрализован?
Ответы
Ответ 1
По большей части, когда вы запускаете клиент bittorrent, bootstrap off:
- узлов вашего последнего сеанса, которые были сохранены на диске
- другие сверстники, которые у вас есть на любом из роев, на котором вы находитесь.
Существует несколько хорошо известных узлов начальной загрузки, которые клиенты могут использовать, если у них нет других средств поиска. По сути, единственный случай, когда это происходит, - это когда вы устанавливаете клиента в первый раз, а первый загружаемый вами торрент - это магнитная ссылка без трекера.
Затем вы можете нажать router.utorrent.com:6881. Я считаю, что передача, azureus и bitcomet запускают аналогичные маршрутизаторы и, возможно, другие клиенты.
Под "маршрутизатором" я подразумеваю node, который, как представляется, ведет себя как любой другой node в DHT, но, вероятно, имеет другой механизм для определения того, какие узлы выдавать, и, вероятно, оптимизирован специально для использования случай простого введения узлов dht друг к другу.
ОБНОВЛЕНИЕ: вы можете запустить свой собственный загрузочный компьютер DHT, здесь исходный код.