Резюме
Как новый клиент может присоединиться к рою без трекера или знания хотя бы одного члена роя для обмена пэрами?
Ты не можешь Это невозможно.*
* (Если узел в вашей локальной сети уже не является узлом в DHT. В этом случае вы можете использовать механизм широковещания, такой как Avahi, для "обнаружения" этого партнера и загрузки с него. Но как они себя запустили? В конце концов вы столкнетесь с ситуацией, когда вам нужно будет подключиться к общедоступному Интернету. А общедоступный Интернет предназначен только для одноадресной рассылки, а не для многоадресной рассылки, поэтому вы застряли в использовании заранее определенных списков пиров.)
Рекомендации
Bittorrent DHT реализуется с помощью протокола, известного как Kademlia, который является частным случаем теоретической концепции распределенной хэш-таблицы.
экспозиция
С протоколом Kademlia, когда вы присоединяетесь к сети, вы проходите процедуру начальной загрузки , которая обязательно требует, чтобы вы заранее знали IP-адрес и порт хотя бы одного узла, уже участвующего в сети DHT. Например, трекер, к которому вы подключаетесь, может сам являться узлом DHT. Как только вы подключитесь к одному узлу DHT, вы затем приступаете к загрузке информации из DHT, которая предоставляет вам информацию о подключении для большего количества узлов, и затем вы перемещаетесь по этой "графической" структуре для получения соединений со все большим и большим количеством узлов, которые могут обеспечить как подключение к другим узлам и данные полезной нагрузки (фрагменты загрузки).
Я думаю , что ваш фактический вопрос полужирный - в том, как присоединиться к сети Kademlia DHT , не зная никаких других членов - основана на ложном предположении.
Простой ответ на ваш вопрос, выделенный жирным шрифтом, - нет. Если вы вообще не знаете ЛЮБОЙ информации даже об одном хосте, который может содержать метаданные 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, чтобы использовать этот новый список. Но это может превратиться в ситуацию, когда агрессор (пожиратель узлов) будет постепенно загружать эти списки самостоятельно и нацеливаться на новые смелые загрузочные узлы, а затем переводить их в автономный режим.