Hogyan fedezi fel először a Bittorrent kliens társait?
Amikor a torrent kliensünk csatlakozik a swarmhoz, hogy megosszák és összegyűjtsék a fájlrészeket, hogyan pontosan tudja, hogy hol vannak az összes társa? Olvassa el, ahogy körbejárjuk a BitTorrent protokoll alá tartozó mechanizmusokat.
A mai Kérdések és válaszok munkamenet a Jóvagyon - a Stack Exchange alosztályának, a közösség által vezérelt Q&A webhelyek csoportjának köszönhetően..
A kérdés
A SuperUser olvasó, Steve V. nagyon specifikus kérdéssel rendelkezett a BitTorrent protokollon belüli Distributed Hash Table (DHT) rendszerről:
Már elolvastam ezt a SuperUser választ és ezt a Wikipédia cikket, de mindkettő túl technikai ahhoz, hogy valóban becsomagoljam a fejem.
Megértem a nyomkövető ötletét: az ügyfelek egy központi szerverhez csatlakoznak, amely a társaik listáját tartja fenn.
Megértem a szakértők cseréjének ötletét is: a már rajtuk lévő ügyfelek elküldik egymásnak a társaik teljes listáját. Ha új társaik fedezhetők fel, akkor azok hozzáadódnak a listához.
A kérdésem az, hogy hogyan működik a DHT? Ez az, hogyan csatlakozhat egy új ügyfél a rajzáshoz anélkül, hogy nyomkövető vagy legalább egy tag ismerete lenne, hogy kicserélje a társaikat?
(Megjegyzés: az egyszerű magyarázatok a legjobbak.)
Az ő kérdése viszont nagyon részletes választ adott a BitTorrent rendszer különböző funkcióiról; nézzük meg most.
A válasz
Az Allquixotic SuperUser közreműködője részletes magyarázatot ad:
Hogyan csatlakozhat egy új ügyfél a rajzáshoz, ha nincs nyomkövető vagy legalább egy tag ismerete a csapattól, hogy cserélje ki a társaikat?
Nem teheted. Ez lehetetlen.*
* (Hacsak nincs csomópont a helyi hálózat előfordul, hogy már egy csomópont a DHT-ban. Ebben az esetben olyan műsorszóró mechanizmust használhat, mint az Avahi, hogy felfedezhesse ezt a társakat, és indítsa el őket. De hogyan ők indítsák el magukat? Végül megérint egy olyan helyzetet, ahol csatlakozni kell a nyilvános internethez. És a nyilvános internet csak egyszemélyes, nem multicast, ezért ragaszkodik az előre meghatározott listák használatához.)
Irodalom
A Bittorrent DHT-t egy Kademlia néven ismert protokollon keresztül valósítják meg, amely az elosztott hash tábla elméleti koncepciójának különleges esete..
Kiállítás
A Kademlia protokollal, amikor csatlakozunk a hálózathoz, egy bootstrapping eljárást fogsz végezni, ami feltétlenül szükséges ahhoz, hogy tudd, előre, a DHT hálózatban már részt vevő legalább egy csomópont IP címe és portja. A nyomkövető, amelyhez például csatlakozik, maga is DHT csomópont lehet. Ha egy DHT-csomóponthoz csatlakozik, akkor folytassa a DHT-ból származó információk letöltését, amely további csomópontokhoz csatlakozási információkat nyújt, majd a „grafikon” struktúrában navigálhat, hogy egyre több csomóponthoz kapcsolódjon, akik mindkettőt csatlakozás más csomópontokhoz és hasznos adatokhoz (a letöltés darabjai).
Úgy gondolom, hogy a kérdésed félkövéren jelenik meg - arról, hogy hogyan kell csatlakozni egy Kademlia DHT hálózathoz anélkül, hogy tudnánk bármilyenmás tagok - hamis feltételezésen alapul.
Az egyszerű válasz a kérdésre félkövér betűvel, nem. Ha egyáltalán nem ismer semmilyen információt a DHT metaadatait is tartalmazó gazdagépről, akkor elakad - nem is indulhat el. Úgy értem, biztosan megpróbálhatod megpróbálni felfedezni egy IP-t a nyilvános interneten egy olyan nyílt porttal, amely a DHT-információkat közvetíti. Valószínűbb azonban, hogy a BT-kliensed egy adott statikus IP-re vagy DNS-re van kódolva, amely stabil DHT csomópontot eredményez, ami csak a DHT metaadatait biztosítja.
Alapvetően a DHT csak olyan decentralizált, mint a csatlakozási mechanizmus, és mivel a csatlakozási mechanizmus meglehetősen törékeny (nincs mód arra, hogy „sugározzuk” az egész interneten! unicasta DHT-adatok megszerzéséhez egy egyedi, előre kijelölt gazda számára), Kademlia DHT nem igazán decentralizált. Nem a szó legszigorúbb értelme.
Képzelje el ezt a forgatókönyvet: Valaki, aki le akarja állítani a P2P-t, elindul, és támadást készít minden általánosan használt stabil DHT csomópontok, amelyeket a rendszerindításhoz használnak. Amint megtámadták a támadást, beindítják minden csomópontok egyszerre. Wham; minden egyes bootstrapping DHT-csomópont leesik egy lebomlás közben. Most mi? Elakadt a csatlakozás központosított nyomkövetők a hagyományos társaik listáinak letöltését. Nos, ha megtámadják a nyomkövetőket is, akkor tényleg, igazán egy patak. Más szóval, Kademlia és az egész BT-hálózat az internet korlátozásai miatt korlátozott, mivel van egy véges (és viszonylag kicsi) számítógépek száma, amelyeket sikeresen támadnának vagy offline módban kellene megakadályozni, hogy megakadályozzák a> 90% -ot a felhasználók számára, hogy csatlakozzanak a hálózathoz.
Miután a „pszeudo-centralizált” bootstrapping csomópontok eltűntek, a DHT belső csomópontjai, amelyek nem indulnak el, mert a DHT kívülről senki sem ismeri a belső csomópontokat, haszontalanok; nem hozhatnak új csomópontokat a DHT-ba. Tehát, mivel minden belső csomópont az idő múlásával szétkapcsol a DHT-ről, akár a számítógépek leállítása, akár a frissítések újraindítása stb. Miatt, a hálózat összeomlik.
Természetesen ahhoz, hogy eljuthassunk ehhez, valaki beilleszthet egy javított BitTorrent klienst egy új, előre meghatározott stabil DHT csomópontok vagy DNS-címek listájával, és hangosan hirdetheti a P2P közösségnek, hogy ezt az új listát használja. De ez egy „rágcsálódó” helyzet lett volna, amikor az agresszor (a csomópont-evő) fokozatosan letölti ezeket a listákat, és célba veszi a bátor új bootstrapping csomópontokat, majd azokat is offline módba veszi.
Nemcsak az eredeti kérdésre válaszoltunk, hanem egy kicsit megtanultuk a BitTorrent rendszer jellegét és sebezhetőségeit is.
Van valami, amit hozzá kell adni a magyarázathoz? Kikapcsolja a megjegyzéseket. Szeretne további válaszokat olvasni más tech-savvy Stack Exchange felhasználóktól? Nézze meg a teljes beszélgetés szálát itt.