Как първоначално клиентът Bittorrent открива връстниците си?
Когато вашият торент клиент се присъедини към рояка, за да сподели и събере файлове, как точно знае къде са всичките му колеги? Прочетете, докато се движим в механизмите, които подсказват протокола BitTorrent.
Днешната сесия за въпроси и отговори идва при нас с любезното съдействие на SuperUser - подразделение на Stack Exchange, групирано от общността уеб сайтове за въпроси и отговори.
Въпроса
Четецът на SuperUser Steve V. имаше много специфичен въпрос относно системата за разпределена хеш таблица (DHT) в протокола BitTorrent:
Вече прочетох отговора на този суперпотребител и тази статия в Уикипедия, но и двете са твърде технически, за да мога наистина да обгърна главата ми.
Разбирам идеята за тракера: клиентите се свързват с централен сървър, който поддържа списък на връстници в рояк.
Също така разбирам идеята за обмен на връстници: клиентите, които вече са в рояк, изпращат един на друг пълния списък на връстниците си. Ако бъдат открити нови връстници, те се добавят към списъка.
Въпросът ми е как работи ДХТ? Това е, как може нов клиент да се присъедини към роя без следа или знанието на поне един член на рояка за обмен на връстници с?
(Забележка: простите обяснения са най-добри.)
Въпросът му на свой ред предизвика много подробен отговор за различните функции на системата BitTorrent; нека да го разгледаме сега.
Отговорът
Сътрудникът на SuperUser Allquixotic предлага задълбочено обяснение:
Как може нов клиент да се присъедини към роя без следа или знанието на поне един член на рояка да обменя връстници с?
Не можеш. Невъзможно е.*
* (Освен ако не е възел на вашия локална мрежа се случва вече да е възел в DHT. В този случай бихте могли да използвате механизъм за излъчване, като Avahi, за да „откриете” този партньор и първоначалната им стъпка. Но как те себе си? В крайна сметка ще се появи ситуация, в която трябва да се свържете с обществения интернет. А публичният интернет е само за едноадресни, а не за множествено предаване, така че се задържате с предварително определени списъци от партньори.)
Препратки
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 възли, които се използват за стартиране. След като организират нападението си, те го изваждат всичко всички възли наведнъж. силен трясък; всеки отделен DHT възел е с един замах. Сега какво? Вие сте затворени със свързването с централизирани тракери да изтеглите традиционните списъци на връстници от тях. Е, ако те атакуват и тракерите, тогава наистина сте, наистина ли нагоре по рекичка. С други думи, Kademlia и цялата BT мрежа е ограничена от ограниченията на самия интернет, в това, че има ограничен (и сравнително малък) брой компютри, които би трябвало успешно да атакувате или да се прекъсвате, за да предотвратите> 90% потребители от свързване към мрежата.
След като всички „псевдо-централизирани“ възли за начално зареждане са изчезнали, вътрешните възли на DHT, които не се зареждат, защото никой от външната страна на DHT не знае за вътрешните възли, са безполезни; те не могат да въвеждат нови възли в DHT. Така че, тъй като всеки вътрешен възел се отделя от DHT с течение на времето, или поради това, че хората изключват компютрите си, рестартират се за актуализации и т.н., мрежата ще се срине.
Разбира се, за да преодолее това, някой би могъл да разположи патентован клиент на BitTorrent с нов списък с предварително определени стабилни DHT възли или DNS адреси и силно да рекламира на P2P общността, за да използва този нов списък. Но това ще се превърне в ситуация, в която агресорът (възел-ядещият) постепенно ще свали тези списъци, и ще насочи вниманието към нови смели възли, след което ще ги вземе и офлайн..
Не само научихме отговора на първоначалния въпрос, но и научихме доста за природата на системата BitTorrent и нейните уязвимости..
Имате ли какво да добавите към обяснението? Звукът е изключен в коментарите. Искате ли да прочетете повече отговори от други технологични потребители на Stack Exchange? Вижте пълната тема за дискусия тук.