Jak se klientovi Bittorrent zpočátku objevuje jeho vrstevníci?
Když váš torrentový klient připojí roj, aby sdílel a shromažďoval soubory, jak přesně ví, kde jsou všichni jeho vrstevníci? Přečtěte si, jak se budeme hýbat uvnitř mechanizmů, které podchycují protokol BitTorrent.
Dnešní zasedání Otázky a odpovědi nás přichází s laskavým svolením SuperUser - podřízené rozdělení Stack Exchange, které je založeno na komunitě prostřednictvím skupin webových stránek.
Otázka
Reader SuperUser Steve V. měl velmi specifickou otázku o systému Distributed Hash Table (DHT) v rámci protokolu BitTorrent:
Už jsem četl tuto odpověď na SuperUser a tento článek Wikipedie, ale oba jsou pro mne příliš technicky přívětivé, abych mi skutečně zabalil hlavu.
Chápu myšlenku sledovatele: klienti se připojují k centrálnímu serveru, který udržuje seznam rovesníků v roji.
Také chápu myšlenku vzájemné výměny: klienty již v rohu posílají celý seznam svých vrstevníků navzájem. Pokud budou noví kolegové objeveni, přidávají se do seznamu.
Moje otázka je, jak funguje DHT? To je, jak může nový klient připojit roj bez sledování nebo znalosti alespoň jednoho člena roje, aby si vyměnil rovesníky?
(Poznámka: Nejjednodušší vysvětlení je nejlepší.)
Jeho otázka následně vyvolala opravdu podrobnou odpověď o různých funkcích systému BitTorrent; Podívejme se na to teď.
Odpověď
Příspěvek SuperUser Allquixotic nabízí hluboké vysvětlení:
Jak může nový klient připojit roj bez sledování nebo znalosti alespoň jednoho člena roje, aby si vyměnil rovesy?
Nemůžeš. To je nemožné.*
* * (Pokud není uzel na vašem místní síť se stává již uzlem v DHT. V takovém případě byste mohli využít vysílacího mechanismu, jako je Avahi, aby "objevili" toto peer a spustili od nich bootstrap. Ale jak to bylo oni bootstrap sám? Nakonec narazíte na situaci, kdy se musíte připojit k veřejnému Internetu. A veřejný internet je jediný, nikoliv vícesměrový vysílání, takže jste zaseknutý pomocí předem určených seznamů vrstevníků.)
Reference
Bittorrent DHT je implementován protokolem známým jako Kademlia, což je zvláštní případ teoretické koncepce tabulek Distributed hash.
Expozice
S protokolem Kademlia, když se připojíte do sítě, projdete bootstrapovací procedurou, která naprosto vyžaduje, abyste věděli, dopředu, adresu IP a port alespoň jednoho uzlu, který se již účastní sítě DHT. Tracker, ke kterému se připojujete, může být samo o sobě jako uzel DHT. Jakmile jste připojeni k jednomu uzlu DHT, pokračujte ke stahování informací z DHT, které vám poskytují informace o konektivitě pro více uzlů, a pak budete navigovat, že struktura "grafu" získáte spojení s více a více uzly, kteří mohou poskytnout připojení k jiným uzlům a údaje o užitečném zatížení (kousky stažení).
Myslím, že vaše skutečná otázka je odvážná - to, jak se připojit k síti Kademlia DHT bez vědění žádnýostatní členové - je založen na falešném předpokladu.
Jednoduchá odpověď na vaši otázku je tučně, nemáte. Pokud neznáte VŠECHNY informace o jednom hostiteli, které by mohly obsahovat metadata DHT, uvíznete - nemůžete ani začít. Myslím, že určitě byste se mohli pokoušet objevit IP na veřejném internetu s otevřeným portem, který vysílá informace DHT. Ale je pravděpodobné, že váš klient BT je pevně zakódován na konkrétní statickou IP nebo DNS, která řeší stabilní uzel DHT, který právě poskytuje metadata DHT.
V podstatě je DHT pouze decentralizovaný jako spojovací mechanismus a protože spojovací mechanismus je poměrně křehký (neexistuje způsob, jak "vysílat" po celém internetu!), Takže musíte unicastk jednotlivému předem přiřazenému hostiteli pro získání dat DHT), Kademlia DHT není opravdu decentralizované. Ne v nejpřísnějším slova smyslu.
Představte si tento scénář: Někdo, kdo chce, aby přestal P2P, zhasne a připravuje útok Všechno běžně používané stabilní uzly DHT, které se používají pro bootstrapping. Jakmile oni představí jejich útok, oni jaro to na Všechno uzly najednou. Wham; každý jeden bootstrapping DHT uzel je dolů všichni v jednom padnutí. Co teď? Jste přilepená s připojením centralizované sledovače stahovat tradiční seznamy vrstevníků z nich. No, jestliže oni napadnou také stopy, pak jsi opravdu, opravdu do potoka. Jinými slovy, Kademlia a celá síť BT jsou omezena omezeními samotného internetu, protože existuje omezený (a poměrně malý) počet počítačů, které byste měli úspěšně napadnout nebo provést offline, aby se zabránilo více než 90% uživatelů při připojení k síti.
Jakmile jsou "pseudo-centralizované" bootstrapping uzly zbaveny, vnitřní uzly DHT, které nejsou bootstrapping protože nikdo na vnější straně DHT neví o vnitřních uzlech, jsou zbytečné; nemohou přinést nové uzly do DHT. Protože se každý vnitřní uzel odpojí od DHT v čase, buď kvůli vypnutí počítačů, restartování pro aktualizace atd., Síť by se zhroutila.
Samozřejmě, aby se to mohlo obejít, mohl by někdo nasadit patched BitTorrent klienta s novým seznamem předem stanovených stabilních uzlů DHT nebo adresy DNS a hlasitě inzerovat na P2P komunitu, aby místo toho použili tento nový seznam. Ale to by se stalo "whack-a-mole" situace, kdy agresor (node-jedlík) postupně stahovat tyto seznamy sami, a zaměřit se na statečné nové bootstrapping uzly, pak je i offline.
Nejen, že jsme se naučili odpovědět na původní otázku, ale také jsme se trochu naučili o povaze systému BitTorrent a jeho zranitelnosti.
Musíte něco přidat k vysvětlení? Vypadněte v komentářích. Chcete se dozvědět více odpovědí od ostatních uživatelů technologie Stack Exchange? Podívejte se na celý diskusní příspěvek zde.