Hvordan oppdager en Bittorrent-klient opprinnelig vennene sine?
Når din torrentklient knytter seg til sværmen for å dele og samle filbrikker, hvordan vet du nøyaktig hvor alle sine jevnaldrende er? Les videre når 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 å virkelig vikle 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ærme.
Jeg forstår også ideen om peer-utveksling: Klienter som allerede er i sværma, sender komplett liste over sine jevnaldrende til hverandre. Hvis nye jevnaldrende oppdages, blir de lagt til listen.
Spørsmålet mitt er hvordan virker DHT? Det er, hvordan kan en ny klient bli med en sværm uten å ha en tracker eller kunnskap om minst ett medlem av sværmen for å utveksle samboere med?
(Merk: Enkel forklaring er best.)
Hans spørsmål spurte igjen et veldig detaljert svar om de forskjellige funksjonene til BitTorrent-systemet; la oss ta en titt på det nå.
Svaret
SuperUser bidragsyter Allquixotic gir en grundig forklaring:
Hvordan kan en ny klient bli med en swarm uten å ha en tracker eller kunnskap om minst ett medlem av sværmen for å utveksle samboere med?
Du kan ikke. Det er umulig.*
* (Med mindre en node på din lokalt nettverk skjer allerede med en knutepunkt i DHT. I dette tilfellet kan du bruke en kringkastingsmekanisme, som for eksempel Avahi, til å "oppdage" denne peeren og bootstrap fra dem. Men hvordan gjorde det de bootstrap seg selv? Til slutt vil du treffe en situasjon der du må koble til det offentlige Internett. Og det offentlige Internett er unicast-only, ikke multicast, så du sitter fast ved å bruke forhåndsbestemte lister over jevnaldrende.)
referanser
Bittorrent DHT er implementert via en protokoll som kalles Kademlia, som er et spesielt tilfelle av teoretisk konsept av et distribuert hashbord.
Exposition
Med Kademlia-protokollen, når du går med i nettverket, går du gjennom en oppstartsprosedyre, som absolutt krever at du vet, på forhånd, IP-adressen og porten på minst én node som allerede deltar i DHT-nettverket. Trackeren 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 begge tilkobling 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 noenandre medlemmer - er basert på en falsk antagelse.
Det enkle svaret på ditt spørsmål med fet skrift er, det gjør du ikke. Hvis du ikke kjenner noen informasjon i det hele tatt om enda en 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 hardkodet til noen bestemt statisk IP eller DNS som løser en stabil DHT-knutepunkt, som bare gir DHT-metadataene.
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å unicasttil en individuell forutbestemt vert for å få DHT-data), er Kademlia DHT ikke egentlig desentralisert. Ikke i ordets strengeste forstand.
Tenk deg 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 på det alle noder på en gang. Wham; hver enkelt bootstrapping DHT-knutepunkt er nede i alt i ett fall. Hva nå? Du sitter fast med å koble til sentraliserte trackers å laste ned tradisjonelle lister over jevnaldrende fra dem. Vel, hvis de angriper sporene også, så er du virkelig, egentlig opp en bekk. Kademlia og hele BT-nettverket er med andre ord begrenset av begrensningene på Internett selv, da det er et begrenset antall (relativt små) datamaskiner som du må lykkes med å angripe eller ta frakoblet for å hindre> 90% av brukere fra å koble til nettverket.
Når de "pseudo-sentraliserte" bootstrapping noder er borte, er de indre nodene til DHT, som ikke støtter opp fordi ingen på utsiden av DHT vet om indre noder, er ubrukelig; de kan ikke ta med nye noder inn i DHT. Så, som 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, og ta dem frakoblet, også.
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.