Як клієнт Bittorrent спочатку відкриває свої колеги?
Коли ваш торрент-клієнт приєднується до рою, щоб поділитися і зібрати фрагменти файлів, як саме він знає, де знаходяться всі його однолітки? Прочитайте далі, коли ми просуваємося всередині механізмів, що підписують протокол BitTorrent.
Сьогоднішня сесія запитань та відповідей приходить до нас люб'язно SuperUser - підрозділ Stack Exchange, групування веб-сайтів із запитаннями та відповідями на рівні спільноти..
Питання
Читач SuperUser Steve V. мав дуже конкретне запитання щодо системи розподіленої хеш-таблиці (DHT) в протоколі BitTorrent:
Я вже прочитав цю відповідь SuperUser і цю статтю Вікіпедії, але обидва вони занадто технічні для мене, щоб дійсно обернути мою голову навколо.
Я розумію ідею трекера: клієнти підключаються до центрального сервера, який підтримує список однолітків у рої.
Я також розумію ідею обміну експертами: клієнти, що вже в рої, посилають один одному повний список однолітків. Якщо відкрито нові вузли, вони додаються до списку.
Моє питання, як працює DHT? Це, як новий клієнт може приєднатися до роя без трекера або знання принаймні одного члена роя для обміну однорідними?
(Примітка: найкращі пояснення.)
Його питання, у свою чергу, викликало дійсно детальну відповідь про різні функції системи BitTorrent; Давайте зараз поглянемо на це.
Відповідь
Співробітник SuperUser Allquixotic пропонує глибоке пояснення:
Як новий клієнт може приєднатися до роя без трекера або знання принаймні одного члена роя для обміну однорідними?
Ви не можете. Це неможливо.*
* (Якщо у вашому вузлі немає вузла локальна мережа вже є вузлом у 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 для використання цього нового списку. Але це стане ситуацією, де агресор (вузол-пожирач) поступово завантажуватиме ці списки, і націлюватиметься на нові сміливі вузли завантаження, а потім приймати їх в автономному режимі..
Ми не тільки дізналися відповідь на оригінальне запитання, але й дізналися про природу системи BitTorrent та її вразливості..
Маєте щось додати до пояснення? Звучить в коментарях. Хочете прочитати більше відповідей від інших технологічних користувачів Stack Exchange? Перегляньте повний потік обговорення тут.