Ako sa klientovi Bittorrent spočiatku objavujú jeho rovesníci?
Keď váš torrent klient pripojí k rojovi a zdieľa a zhromažďuje súbory, ako presne vie, kde sú všetci jeho rovesníci? Čítajte ďalej, keď sa hýbeme vnútri mechanizmov, ktoré podliehajú protokolu BitTorrent.
Dnešná relácia otázok a odpovedí sa k nám pridelí zdvorilosťou SuperUser - podskupiny Stack Exchange, zoskupenia webových stránok typu Q & A.
Otázka
Reader SuperUser Steve V. mal veľmi špecifickú otázku o systéme Distributed Hash Table (DHT) v rámci protokolu BitTorrent:
Už som čítal túto odpoveď SuperUser a tento článok z Wikipédie, ale obaja sú príliš technicky pre mňa, aby som skutočne zabalil hlavu okolo.
Chápem myšlienku sledovateľa: klienti sa pripájajú k centrálnemu serveru, ktorý udržiava zoznam rovesníkov v roji.
Tiež chápem myšlienku vzájomnej výmeny: klienti už v roji posielajú navzájom úplný zoznam svojich rovesníkov. Ak sa objavia noví rovesníci, pridajú sa do zoznamu.
Moja otázka je, ako funguje DHT? To je, ako sa môže nový klient pripojiť k roju bez sledovania alebo znalosti aspoň jedného člena roja na výmenu rovesníkov?
(Poznámka: Najlepšie sú vysvetlenia.)
Jeho otázka následne vyvolala naozaj podrobnú odpoveď o rôznych funkciách systému BitTorrent. Pozrime sa na to teraz.
Odpoveď
Pomocník Superquest Allquixotic ponúka hĺbkové vysvetlenie:
Ako sa môže nový klient pripojiť k rohu bez sledovania alebo znalosti aspoň jedného člena roja na výmenu rovesníkov?
Nemôžete. Je to nemožné.*
* (Ak nie je uzol na vašom miestna sieť stane sa už uzlom v DHT. V tomto prípade môžete použiť vysielací mechanizmus, ako napríklad Avahi, aby ste "objavili" toto peer a spustili od neho bootstrap. Ale ako to urobil oni bootstrap sami? Nakoniec narazíte na situáciu, keď sa musíte pripojiť k verejnému internetu. A verejný internet je jediný, nie multicast, takže ste prilepení pomocou vopred určených zoznamov rovesníkov.)
Referencie
Bittorrent DHT je implementovaný prostredníctvom protokolu známeho ako Kademlia, čo je špeciálny prípad teoretickej koncepcie tabuľky Distributed hash.
expozície
S protokolom Kademlia, keď sa pripojíte do siete, prejdete postupom bootstrapingu, čo absolútne vyžaduje, aby ste vedeli, Vopred, adresu IP a port aspoň jedného uzla, ktoré sa už zúčastňuje siete DHT. Tracker, ku ktorému sa pripojíte, môže byť samo o sebe ako uzol DHT. Akonáhle ste pripojení k jednému uzlu DHT, potom pokračujete v preberaní informácií z DHT, ktoré vám poskytujú informácie o pripojení pre viac uzlov a následne budete prechádzať touto štruktúrou "grafu", aby ste získali pripojenie k viac a viac uzlov, ktorí môžu poskytnúť spojenie s inými uzlami a údaje o užitočnom zaťažení (súbory sťahovania).
Myslím, že vaša aktuálna otázka je tučná - to, ako sa pripojiť k sieti Kademlia DHT bez toho, aby ste vedeli akýkoľvekostatných členov - je založený na falošnom predpoklade.
Jednoduchá odpoveď na vašu otázku je tučná, nemáte. Ak nepoznáte žiadnu informáciu o žiadnom hostiteľovi, ktorý by mohol obsahovať metadáta DHT, nezostali ste - nemôžete dokonca ani začať. Myslím, určite by ste sa mohli pokúsiť o hrubou silou zistiť IP na verejnom internete s otvoreným portom, ktorý sa stane šírením DHT informácií. Ale je pravdepodobnejšie, že váš klient BT je pevne zakódovaný na určitú špecifickú statickú IP alebo DNS, ktorá rieši stabilný uzol DHT, ktorý len poskytuje metadáta DHT.
DHT je v zásade len decentralizovaný ako spojovací mechanizmus a pretože spojovací mechanizmus je pomerne krehký (nie je žiadny spôsob, ako sa "vysielať" cez celý internet!), Takže musíte unicastk jednotlivému pre-pridelenému hostiteľovi získať údaje o DHT), Kademlia DHT nie je naozaj decentralizované. Nie v najprísnejšom zmysle slova.
Predstavte si tento scenár: Niekto, kto chce P2P zastaviť, vyprší a pripraví útok všetko bežne používané stabilné uzly DHT, ktoré sa používajú na bootstrapovanie. Akonáhle začnú s útokom, odskočia všetko uzly naraz. Wham; každý jeden bootstrapovací uzol DHT je všetko v jednom poklese. Teraz čo? Ste prilepený k pripojeniu centralizované sledovače na stiahnutie tradičné zoznamy rovesníkov z týchto. No, ak aj oni zaútočia na stopy, potom si naozaj, naozaj up potoka. Inými slovami, Kademlia a celá sieť BT sú obmedzené obmedzeniami samotného internetu, pretože existuje obmedzený (a relatívne malý) počet počítačov, ktoré by ste mali úspešne napadnúť alebo prevziať offline, aby ste zabránili> 90% používateľov z pripojenia k sieti.
Akonáhle sú "pseudo-centralizované" bootstrapping uzly preč, vnútorné uzly DHT, ktoré nie sú bootstrapping pretože nikto na vonkajšej strane DHT nevie o vnútorných uzloch, sú zbytočné; nemôžu priniesť nové uzly do DHT. Takže, ak sa každý vnútorný uzol odpojí od DHT v čase, buď kvôli tomu, že ľudia vypínajú počítače, reštartujú aktualizácie atď., Sieť by sa zrútila.
Samozrejme, aby sa to obešlo, niekto by mohol nasadiť patchovaný BitTorrent klient s novým zoznamom vopred určených stabilných uzlov DHT alebo DNS adries a hlasno inzerovať na komunitu P2P, aby použili tento nový zoznam. Ale táto situácia by sa stala "whack-a-mole" situáciou, keď agresor (node-jedlík) postupne sťahoval tieto zoznamy sami a zameriaval sa na odvážne nové bootstrapping uzly, potom ich aj offline.
Nielenže sme sa naučili odpoveď na pôvodnú otázku, ale takisto sme sa trochu naučili o povahe systému BitTorrent a jeho zraniteľnosti.
Máte niečo doplniť vysvetlenie? Vyjadrite sa v komentároch. Chcete sa dozvedieť viac odpovedí od iných používateľov technickej úrovne Stack Exchange? Pozrite sa na celý diskusný príspevok tu.