Як працює DHT у торрентах?


80

Я кодую реалізацію p2p, яку я хотів би зробити децентралізованою, однак у мене виникають проблеми з розумінням того, як працює DHT у таких протоколах, як bittorrent. Як клієнт знає, де знаходяться однолітки, якщо трекера немає? Чи зберігаються однолітки у фактичному торрент-файлі?

Відповіді:


74

У торрентах без відстеження / DHT однорангові IP-адреси зберігаються в DHT, використовуючи інформаційний хеш BitTorrent як ключ. Оскільки весь трекер, в основному, відповідає на запити put / get, ця функціональність точно відповідає інтерфейсу, який надає DHT (розподілена хеш-таблиця): вона дозволяє шукати та зберігати IP-адреси в DHT за допомогою infohash.

Отже, запит "отримати" буде шукати інформаційний хеш BT і повертати набір IP-адрес. "Put" зберігає IP-адресу для даного infohash. Це відповідає запиту "оголосити", який ви в іншому випадку зробили б трекеру для отримання словника однорангових IP-адрес.

У DHT однорангові пристрої випадковим чином призначаються для зберігання значень, що належать невеликій частці простору ключів; хешування гарантує, що ключі розподіляються хаотично між однолітками-учасниками. Протокол DHT ( Kademlia для BitTorrent) забезпечує ефективну маршрутизацію запитів на отримання / отримання до однолітків, відповідальних за ведення списків IP-адрес даного ключа.


2
звідки він бере номер порту для кожного IP?
Янус Трольсен

2
порт включений разом з IP-адресою
партнера

2
Чи втрачаються / минули значення простору ключів?
Schulwitz

3
Так, значення можуть бути втрачені внаслідок закінчення терміну дії (TTL) або відтоку (у міру того, як одноранги приходять і йдуть, вони можуть брати з собою частини простору ключів, якщо для цих значень недостатньо реплік). Отже, щоб зберігати значення протягом довгих періодів, потрібно було б постійно видавати запити PUT. Оскільки в роях BitTorrent однолітки постійно приєднуються і виїжджають, це менше проблем, і однолітки, що довго живуть, можуть періодично повторно оголошувати про себе ДГТ.
cce

3
Ваша відповідь буде кращою, якщо ви включите в неї свої коментарі.
ctrl-alt-delor


12

Що відбувається з bittorrent та DHT, так це те, що спочатку bittorrent використовує інформацію, вбудовану в торрент-файл, щоб перейти до трекера або одного з набору вузлів з DHT. Потім, знайшовши один вузол, він може продовжувати знаходити інші та продовжувати використовувати DHT, не потребуючи централізованого трекера для його обслуговування.

Оригінальна інформація завантажує подальше використання DHT.


1

Вузли DHT мають унікальні ідентифікатори, які називаються Node ID. Ідентифікатори вузлів вибираються випадковим чином із того самого 160-розрядного простору, що і інформаційні хеші BitTorrent. Близькість вимірюється порівнянням таблиць маршрутизації Node ID, чим ближче Node, тим детальніше, що призводить до оптимального

Що тоді робить їх більш оптимальними, ніж їх попередник "Кадемлія", який використовував прості цілі без знака: відстань (A, B) = | A xor B | Менші значення ближчі. XOR. Окрім того, що вона не була в безпеці, її логіка була недосконалою.

Якщо ваш клієнт підтримує DHT, зарезервовано 8 байт, в яких міститься 0x09, а потім 2-байтове корисне навантаження з портом UDP і вузлом DHT. Якщо рукостискання буде успішним, вищевказане буде продовжено.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.