1Sep
Når din torrentklient kobler seg til sværmen for å dele og samle filbrikker, hvordan vet du nøyaktig hvor alle sine jevnaldrende er? Les videre mens vi peker rundt i mekanismene som undergir BitTorrent-protokollen.
Dagens Spørsmål &Svar-sesjon kommer til oss med høflighet av SuperUser-en underavdeling av Stack Exchange, en fellesskapsdrevet gruppering av Q & A-nettsteder.
Spørsmålet
SuperUser-leseren Steve V. hadde et veldig spesifikt spørsmål om distribuert Hash-tabellen( DHT) -systemet i BitTorrent-protokollen:
Jeg har allerede lest dette SuperUser-svaret og denne Wikipedia-artikkelen, men begge er for tekniske for meg å virkeligvikle hodet mitt rundt.
Jeg forstår ideen om en tracker: Klienter kobler til en sentral server som opprettholder en liste over jevnaldrende i en sværm.
Jeg forstår også ideen om peer-utveksling: klienter som allerede er i sværme, sender komplett liste over sine jevnaldrende til hverandre. Hvis nye jevnaldrende oppdages, legges de til listen.
Mitt spørsmål er hvordan virker DHT?Det er hvordan kan en ny klient bli med en sværme uten å ha en tracker eller kunnskap om minst ett medlem av sværmen for å utveksle samboere med?
( Merk: Enkelte forklaringer er best.)
Hans spørsmål spurte igjen et veldig detaljert svar om de forskjellige funksjonene til BitTorrent-systemet;la oss se på det nå.
Svaret
SuperUser-bidragsyter Allquixotic gir en grundig forklaring:
Hvordan kan en ny klient bli med en sværm uten enten en tracker eller kunnskap om minst ett medlem av sværmen for å utveksle jevnaldrende med?
Du kan ikke. Det er umulig. *
* ( Med mindre en knutepunkt på -lokalnettverket skjer, er det allerede en knutepunkt i DHT. I dette tilfellet kan du bruke en kringkastingsmekanisme, for eksempel Avahi, til å "oppdage" denne samtalen, og bootstrap fra dem. Men hvordan har de bootstrap seg? Til slutt vil du slå en situasjon der du trenger å koble til det offentlige Internett. Og det offentlige Internett er unicast-only, ikke multicast, så du sitter fastmed bruk av forhåndsbestemte lister over jevnaldrende.)
Referanser
Bittorrent DHT er implementert via en protokoll som kalles Kademlia, som er et spesielt tilfelle av teoretisk konsept for et distribuert hashbord.
-eksponering
Med Kademlia-protokollen går du gjennom en bootstrapping-prosedyre, som absolutt krever at du vet, på forhånd , IP-adressen og porten på minst én node som allerede deltar i DHT-nettverket. Sporingen som du kobler til, kan for eksempel være en DHT-knutepunkt. Når du er koblet til en DHT-knutepunkt, fortsetter du å laste ned informasjon fra DHT, som gir deg tilkoblingsinformasjon for flere noder, og du navigerer da på "graf" -strukturen for å oppnå forbindelser til flere og flere noder, som kan tilby beggetilkobling til andre noder og nyttelastdata( biter av nedlastingen).
Jeg tror at ditt faktiske spørsmål i fet skrift - det å være med på et Kademlia DHT-nettverk uten å vite noen andre -medlemmer - er basert på en falsk antagelse.
Det enkle svaret på spørsmålet ditt i fet skrift er, , du ikke .Hvis du ikke kjenner noen informasjon om en enda vert som kan inneholde DHT-metadata, sitter du fast - du kan ikke engang komme i gang. Jeg mener sikkert, du kan brute force forsøk på å oppdage en IP på det offentlige internett med en åpen port som skjer for å kringkaste DHT-informasjon. Men mer sannsynlig er BT-klienten hardkodd til en bestemt statisk IP eller DNS som løser en stabil DHT-knutepunkt, som bare gir DHT-metadata.
I utgangspunktet er DHT bare like decentralisert som tilkoblingsmekanismen, og fordi tilkoblingsmekanismen er ganske sprø( det er ingen måte å "kringkaste" over hele Internett! Så du må unicast til en individuell forhåndsdelt host tilfå DHT data), Kademlia DHT er ikke virkelig desentralisert. Ikke i ordets strengeste forstand.
Tenk på dette scenariet: Noen som vil at P2P skal stoppe, går ut og forbereder et angrep på alle -vanlige stabile DHT-noder som brukes til oppstartstrapping. Når de har arrangert sitt angrep, springer de det på alle noder på en gang. Wham ;hver enkelt bootstrapping DHT-knutepunkt er ned i alt i ett fall. Hva nå?Du sitter fast ved å koble til sentraliserte sporere for å laste ned tradisjonelle lister over jevnaldrende fra dem. Vel, hvis de angriper sporene også, så er du virkelig, virkelig opp en bekk. Kademlia og hele BT-nettverket er med andre ord begrenset av begrensningene på Internett i seg selv, da det er et begrenset antall( relativt små) datamaskiner som du må lykkes med å angripe eller ta frakoblet for å forhindre & gt; 90% av brukerne fra å koble til nettverket.
Når de "pseudo-sentraliserte" oppstartingsnoderne er borte, er de indre nodene til DHT, som ikke er bootstrapping, fordi ingen på utsiden av DHT vet om interna noder , ubrukelige;de kan ikke ta med nye noder inn i DHT.Så, da hver interna node kobler fra DHT over tid, enten på grunn av at folk slår av datamaskinene sine, starter på nytt for oppdateringer, etc., vil nettverket kollapse.
Selvfølgelig, for å omgå dette, kan noen distribuere en patched BitTorrent-klient med en ny liste over forhåndsbestemte stabile DHT-noder eller DNS-adresser, og høylyst annonsere til P2P-fellesskapet for å bruke denne nye listen i stedet. Men dette ville bli en "whack-a-mole" -situasjon der aggressoren( node-eateren) gradvis vil laste ned disse listerne selv, og målrette mod de modige nye oppstartsnøkkelene, så ta dem også offline.
Ikke bare lærte vi svaret på det opprinnelige spørsmålet, men vi lærte også ganske mye om arten av BitTorrent-systemet og dens sårbarheter.
Har du noe å legge til forklaringen? Lyde av i kommentarene. Vil du lese flere svar fra andre tech-savvy Stack Exchange-brukere? Sjekk ut hele diskusjonstråden her.