Как Bittorrent-клиент изначально обнаруживает своих пиров?
Когда ваш торрент-клиент присоединяется к рою, чтобы делиться и собирать куски файлов, как именно он узнает, где находятся все его коллеги? Читайте дальше, пока мы изучаем механизмы, которые поддерживают протокол BitTorrent..
Сегодняшняя сессия вопросов и ответов пришла к нам благодаря SuperUser - подразделению Stack Exchange, группе веб-сайтов вопросов и ответов, управляемой сообществом..
Вопрос
У читателя SuperUser у Стива В. был очень специфический вопрос о системе Distributed Hash Table (DHT) в рамках протокола BitTorrent:
Я уже прочитал этот ответ SuperUser и эту статью в Википедии, но оба они слишком технические, чтобы я действительно мог обернуться.
Я понимаю идею трекера: клиенты подключаются к центральному серверу, который поддерживает список пиров в рое.
Я также понимаю идею взаимного обмена: клиенты, уже находящиеся в рое, отправляют полный список своих пиров друг другу. Если обнаружены новые узлы, они добавляются в список.
У меня вопрос, как работает DHT? То есть, как новый клиент может присоединиться к рою без трекера или знания хотя бы одного члена роя для обмена пэрами с?
(Примечание: простые объяснения лучше.)
Его вопрос, в свою очередь, вызвал действительно подробный ответ о различных функциях системы BitTorrent; давайте посмотрим на это сейчас.
Ответ
Участник SuperUser Allquixotic предлагает подробное объяснение:
Как новый клиент может присоединиться к рою без трекера или ведома хотя бы одного члена роя для обмена пэрами с?
Ты не можешь Это невозможно.*
* (Если только узел на вашем локальная сеть случается, уже является узлом в DHT. В этом случае вы могли бы использовать механизм вещания, такой как Avahi, для «обнаружения» этого пира и загрузки с него. Но как же Oни загрузиться самим? В конце концов вы столкнетесь с ситуацией, когда вам нужно будет подключиться к общедоступному Интернету. А общедоступный Интернет предназначен только для одноадресной рассылки, а не для многоадресной рассылки, поэтому вы застряли в использовании заранее определенных списков пиров.)
Рекомендации
Bittorrent DHT реализуется через протокол, известный как Kademlia, который является частным случаем теоретической концепции распределенной хеш-таблицы.
экспозиция
С протоколом Kademlia, когда вы подключаетесь к сети, вы проходите процедуру начальной загрузки, которая абсолютно требует, чтобы вы знали, заблаговременно, IP-адрес и порт хотя бы одного узла, уже участвующего в сети DHT. Например, трекер, к которому вы подключаетесь, может сам являться узлом DHT. Как только вы подключитесь к одному узлу DHT, вы приступаете к загрузке информации из DHT, которая предоставляет вам информацию о подключении для большего количества узлов, и затем вы перемещаетесь по этой «графической» структуре для получения соединений со все большим количеством узлов, которые могут обеспечить как подключение к другим узлам и данные полезной нагрузки (фрагменты загрузки).
Я думаю, что ваш реальный вопрос выделен жирным шрифтом - вопрос о том, как присоединиться к сети DHT Kademlia, не зная любойдругие участники - основано на ложном предположении.
Простой ответ на ваш вопрос, выделенный жирным шрифтом:, ты не. Если вы вообще не знаете ЛЮБОЙ информации даже об одном хосте, который может содержать метаданные DHT, вы застряли - вы даже не сможете начать работу. Я имею в виду, конечно, что вы можете попытаться грубой силой обнаружить IP в общедоступном Интернете с открытым портом, который транслирует информацию DHT. Но, скорее всего, ваш BT-клиент жестко запрограммирован на некоторый конкретный статический IP или DNS, который преобразуется в стабильный узел DHT, который просто предоставляет метаданные DHT..
По сути, DHT только настолько децентрализован, как и механизм присоединения, и потому что механизм присоединения довольно хрупок (нет способа «вещать» по всему Интернету! одноадресныйотдельному предварительно назначенному хосту для получения данных DHT), Kademlia DHT не действительно децентрализованный. Не в самом строгом смысле этого слова.
Представьте себе такой сценарий: тот, кто хочет, чтобы P2P остановился, выходит и готовит атаку на все обычно используемые стабильные узлы DHT, которые используются для начальной загрузки. После того, как они устроили свою атаку, они запускают ее все узлы все сразу. Wham; каждый узел начальной загрузки DHT отключается одним махом. Что теперь? Вы застряли с подключением к централизованные трекеры скачать традиционные списки сверстников из тех. Ну, если они тоже нападают на трекеров, то вы действительно, действительно до ручья. Другими словами, Kademlia и вся сеть BT ограничены ограничениями самого Интернета, в том числе конечное (и относительно небольшое) количество компьютеров, на которые вы должны были бы успешно атаковать или отключить сеть, чтобы предотвратить> 90%. пользователей от подключения к сети.
После того как все «псевдо-централизованные» узлы начальной загрузки исчезли, внутренние узлы DHT, которые не являются начальной загрузкой, поскольку никто за пределами DHT не знает о внутренних узлах, бесполезны; они не могут принести новые узлы в DHT. Таким образом, поскольку каждый внутренний узел со временем отключается от DHT, либо из-за того, что люди выключают свои компьютеры, перезагружаются для обновлений и т. Д., Сеть разрушается.
Конечно, чтобы обойти это, кто-то может развернуть пропатченный клиент BitTorrent с новым списком предварительно определенных стабильных узлов DHT или адресов DNS и громко объявить сообществу P2P, чтобы использовать этот новый список. Но это может превратиться в ситуацию, когда агрессор (пожиратель узлов) сам будет постепенно загружать эти списки и нацеливаться на новые храбрые узлы начальной загрузки, а затем переводить их в автономный режим..
Мы не только узнали ответ на первоначальный вопрос, но и узнали совсем немного о природе системы BitTorrent и ее уязвимостях.
Есть что добавить к объяснению? Звук выключен в комментариях. Хотите узнать больше ответов от других технически подкованных пользователей Stack Exchange? Ознакомьтесь с полным обсуждением здесь.