1Sep

Hoe ontdekt een Bittorrent-cliënt in eerste instantie zijn collega's?

Wanneer uw torrent-client zich bij de zwerm voegt om bestandsstukken te delen en verzamelen, hoe weet hij dan precies waar al zijn leeftijdsgenoten zijn? Lees verder terwijl we rondneuzen in de mechanismen die het BitTorrent-protocol ondersteunen.

De vraag van vandaag &Antwoord sessie komt naar ons met dank aan SuperUser-een onderverdeling van Stack Exchange, een community-gestuurde groepering van Q & A-websites.

De vraag

SuperUser-lezer Steve V. had een zeer specifieke vraag over het Distributed Hash Table-systeem( DHT) binnen het BitTorrent-protocol:

Ik heb dit SuperUser-antwoord al gelezen en dit Wikipedia-artikel, maar beide zijn te technisch voor mij om echtwikkel mijn hoofd rond.

Ik begrijp het idee van een tracker: clients maken verbinding met een centrale server die een lijst met peers in een zwerm bijhoudt.

Ik begrijp ook het idee van peer-uitwisseling: cliënten die al in een zwerm zitten, sturen de volledige lijst van hun leeftijdsgenoten naar elkaar. Als nieuwe peers worden ontdekt, worden ze aan de lijst toegevoegd.

Mijn vraag is, hoe werkt DHT?Dat wil zeggen, , hoe kan een nieuwe cliënt zich bij een zwerm aansluiten zonder een tracker of de kennis van minstens één lid van de zwerm om peers uit te wisselen?

( Opmerking: eenvoudige uitleg is het beste.)

Zijn vraag op zijn beurt leidde tot een heel gedetailleerd antwoord over de verschillende functies van het BitTorrent-systeem;laten we er nu eens naar kijken.

Het Antwoord

SuperUser-bijdrager Allquixotic biedt een diepgaande uitleg:

Hoe kan een nieuwe klant zich bij een zwerm aansluiten zonder een tracker of de kennis van minstens één lid van de zwerm om peers uit te wisselen?

Je kunt het niet. Het is onmogelijk. *

* ( Tenzij een knooppunt op uw Local Area Network toevallig al een knooppunt in de DHT is. In dit geval zou u een uitzendmechanisme, zoals Avahi, kunnen gebruiken om deze peer te "ontdekken", en bootstrap van hen. Maar hoe hebben ze bootstrap zichzelf? Uiteindelijk zul je een situatie raken waar je verbinding met het openbare internet moet maken. En het openbare internet is unicast-only, niet multicast, dus je zit vastmet behulp van vooraf bepaalde lijsten met peers.)

Referenties

Bittorrent DHT wordt geïmplementeerd via een protocol dat bekend staat als Kademlia, wat een speciaal geval is van een theoretisch concept van een verdeelde hashtabel.

Exposition

Met het Kademlia-protocol, wanneer u lid wordt van het netwerk, doorloopt u een bootstrapping-procedure, wat absoluut vereist dat u van tevoren kent, het IP-adres en de poort van ten minste één knooppunt dat al deelneemt aan het DHT-netwerk. De tracker waarmee u verbinding maakt, kan bijvoorbeeld zelf een DHT-knooppunt zijn. Nadat u bent verbonden met één DHT-knooppunt, gaat u verder met het downloaden van informatie van de DHT, die u aansluitingsinformatie voor meer knooppunten biedt, en vervolgens navigeert u naar die "grafiek" -structuur om verbindingen te verkrijgen met meer en meer knooppunten, die zowelconnectiviteit met andere knooppunten en payload-gegevens( brokken van de download).

Ik denk dat je eigenlijke vraag vetgedrukt is: hoe je lid wordt van een Kademlia DHT-netwerk zonder dat andere -leden kent, is gebaseerd op een valse veronderstelling.

Het simpele antwoord op uw vetgedrukte vraag is, u niet .Als u helemaal geen informatie weet over zelfs maar één host die DHT-metadata kan bevatten, zit u vast - u kunt zelfs niet aan de slag. Ik bedoel, zeker, je zou brute force kunnen proberen om een ​​IP op het openbare internet te ontdekken met een open poort die toevallig DHT-informatie uitzendt. Maar waarschijnlijker is dat uw BT-client een harde codering heeft naar een specifiek statisch IP of DNS dat wordt omgezet naar een stabiel DHT-knooppunt, dat alleen de DHT-metadata levert.

In principe is de DHT alleen zo gedecentraliseerd als het verbindingsmechanisme en omdat het verbindingsmechanisme redelijk broos is( er is geen manier om over het hele internet te "broadcasten"! Dus je moet unicast naar een individuele vooraf toegewezen host naarkrijg de DHT-gegevens), Kademlia DHT is niet echt gedecentraliseerd. Niet in de strikte zin van het woord.

Stel je dit scenario voor: Iemand die P2P wil laten stoppen, bereidt zich voor en bereidt een aanval op voor op alle veelgebruikte stabiele DHT-knooppunten die worden gebruikt voor bootstrapping. Zodra ze hun aanval geënsceneerd hebben, laten ze hem op alle -knooppunten tegelijk vliegen. Wham ;elke bootstrapping DHT-knooppunt is alles in een klap. Wat nu? Je zit vast met het verbinden met gecentraliseerde trackers om traditionele lijsten van peers daarvan te downloaden. Nou, als ze ook de trackers aanvallen, dan ben je echt, echt in een kreek. Met andere woorden, Kademlia en het hele BT-netwerk worden beperkt door de beperkingen van het internet zelf, in die zin dat er een eindig( en relatief klein) aantal computers is dat je succesvol zou moeten aanvallen of offline zou moeten nemen om & 90 te voorkomen% van de gebruikers maakt verbinding met het netwerk.

Als de "pseudo-gecentraliseerde" bootstrappingnodes allemaal weg zijn, zijn de binnenknopen van de DHT, die niet bootstrappen omdat die niemand aan de buitenkant van de DHT kent van de interne knooppunten , nutteloos;ze kunnen geen nieuwe knooppunten in de DHT brengen. Dus, omdat elk binnenknooppunt zich na verloop van tijd loskoppelt van de DHT, hetzij door mensen die hun computers afsluiten, rebooten voor updates, enz., Zou het netwerk instorten.

Natuurlijk, om dit te omzeilen, zou iemand een gepatchte BitTorrent-client kunnen implementeren met een nieuwe lijst van vooraf bepaalde stabiele DHT-knooppunten of DNS-adressen, en luid adverteren met de P2P-gemeenschap om deze nieuwe lijst te gebruiken. Maar dit zou een "whack-a-mole" -situatie worden waarbij de agressor( de knooppunteter) deze lijsten progressief zou downloaden en de dappere nieuwe bootstrackingsknooppunten zou targeten en ze vervolgens ook offline zou nemen.

We hebben niet alleen het antwoord op de oorspronkelijke vraag geleerd, maar we hebben ook aardig wat geleerd over de aard van het BitTorrent-systeem en de kwetsbaarheden ervan.

Heeft u iets toe te voegen aan de uitleg? Geluid uit in de opmerkingen. Wilt u meer antwoorden van andere technisch onderlegde Stack Exchange-gebruikers lezen? Bekijk de volledige discussiethread hier.