Hjemmeside » hvordan » Hvordan opdager en Bittorrent-klient oprindeligt sine jævnaldrende?

    Hvordan opdager en Bittorrent-klient oprindeligt sine jævnaldrende?

    Når din torrent-klient slutter sig til sværmen til at dele og samle filstykker, hvordan præcist ved det, hvor alle sine jævnaldrende er? Læs videre, som vi popper rundt inden for de mekanismer, der undergraver BitTorrent-protokollen.

    Dagens Spørgsmål & Svar session kommer til os med venlig hilsen af ​​SuperUser-en underafdeling af Stack Exchange, en community-driven gruppe af Q & A-websteder.

    Spørgsmålet

    SuperUser læser Steve V. havde et meget specifikt spørgsmål om Distributed Hash Table (DHT) -systemet i BitTorrent-protokollen:

    Jeg har allerede læst dette SuperUser svar og denne Wikipedia artikel, men begge er for tekniske for mig at virkelig pakke mit hoved rundt.

    Jeg forstår ideen om en tracker: Klienter forbinder til en central server, der opretholder en liste over jævnaldrende i en sværm.

    Jeg forstår også ideen om peer-udveksling: Klienter, der allerede er i en sværm, sender den komplette liste over deres jævnaldrende til hinanden. Hvis nye jævnaldrende opdages, tilføjes de til listen.

    Mit spørgsmål er, hvordan virker DHT? Det er, hvordan kan en ny klient deltage i en sværm uden enten en tracker eller viden om mindst et medlem af sværmen at udveksle kolleger med?

    (Bemærk: enkle forklaringer er bedst.)

    Hans spørgsmål spurgte igen et rigtigt detaljeret svar om de forskellige funktioner i BitTorrent-systemet; lad os tage et kig på det nu.

    Svaret

    SuperUser bidragyder Allquixotic tilbyder en dybtgående forklaring:

    Hvordan kan en ny klient deltage i en sværm uden enten en tracker eller kendskabet til mindst et medlem af sværmen til at udveksle kolleger med?

    Det kan du ikke. Det er umuligt.*

    * (Medmindre en knude på din lokal netværk sker allerede med en knude i DHT. I dette tilfælde kan du bruge en udsendelsesmekanisme som Avahi til at "opdage" denne peer og bootstrap fra dem. Men hvordan gjorde det de bootstrap sig selv? Til sidst rammer du en situation, hvor du skal oprette forbindelse til det offentlige internet. Og det offentlige internet er unicast-only, ikke multicast, så du sidder fast ved at bruge forudbestemte lister over jævnaldrende.)

    Referencer

    Bittorrent DHT implementeres via en protokol kendt som Kademlia, som er et specielt tilfælde af teoretisk koncept for et distribueret hashbord.

    Exposition

    Med Kademlia-protokollen, når du tilmelder dig netværket, går du igennem en bootstrapping procedure, som absolut kræver, at du ved, på forhånd, IP-adressen og porten på mindst en node, der allerede deltager i DHT-netværket. Den tracker, som du forbinder til, kan f.eks. Være en DHT-knude. Når du er tilsluttet en DHT-knude, fortsætter du med at downloade information fra DHT, som giver dig forbindelsesoplysninger til flere noder, og du navigerer derefter på den "graf" struktur for at få forbindelser til flere og flere noder, som kan give begge tilslutning til andre noder og payload data (brikker af download).

    Jeg tror, ​​at dit faktiske spørgsmål i fed skrift - det, hvordan man går med i et Kademlia DHT-netværk uden at vide nogenandre medlemmer - er baseret på en falsk antagelse.

    Det enkle svar på dit spørgsmål med fed skrift er, det gør du ikke. Hvis du slet ikke kender nogen information om endnu en vært, som kan indeholde DHT-metadata, sidder du fast - du kan ikke engang komme i gang. Jeg mener sikkert, at du kunne brute force forsøg på at opdage en IP på det offentlige internet med en åben port, der sker for at udsende DHT information. Men mere sandsynligt er din BT-klient hårdkodet til en bestemt statisk IP eller DNS, som løser en stabil DHT-knude, som kun leverer DHT-metadataen.

    Dybest set er DHT kun decentraliseret som tilslutningsmekanismen, og fordi tilslutningsmekanismen er ret sprød (der er ingen måde at "transmittere" over hele internettet! Så du skal unicasttil en individuel forud tildelt vært for at få DHT data), er Kademlia DHT ikke virkelig decentralt. Ikke i strengeste forstand.

    Forestil dig dette scenario: Nogen, der vil have P2P at stoppe, går ud og forbereder et angreb på alle almindeligt anvendte stabile DHT noder, der bruges til bootstrapping. Når de har iscenesat deres angreb, forår de det alle knuder alle med det samme. Wham; hver enkelt bootstrapping DHT-knude er helt ned i et fald. Hvad nu? Du sidder fast i forbindelse med centraliserede trackere at downloade traditionelle lister over jævnaldrende fra dem. Nå, hvis de også angriber sporerne, så er du virkelig, virkelig op en bæk. Med andre ord begrænses Kademlia og hele BT-netværket af begrænsningerne af internettet selv, idet der er et begrænset (og forholdsvis lille) antal computere, som du med succes skal angribe eller tage offline for at forhindre> 90% af brugere fra at oprette forbindelse til netværket.

    Når de "pseudo-centraliserede" bootstrapping noder er væk, er DHT's indvendige noder, som ikke bootstrapper fordi ingen på ydersiden af ​​DHT kender til de indvendige knudepunkter, er ubrugelige; de kan ikke bringe nye knudepunkter i DHT. Så som hver indre node afbryder fra DHT over tid, enten på grund af at folk lukker deres computere, genstart for opdateringer mv., Ville netværket falde sammen.

    Selvfølgelig for at komme rundt om dette, kunne nogen installere en patched BitTorrent-klient med en ny liste over forudbestemte stabile DHT-noder eller DNS-adresser, og højlydt reklamere for P2P-fællesskabet for at bruge denne nye liste i stedet. Men dette ville blive en "whack-a-mole" situation, hvor aggressoren (node-eateren) gradvist downloadede disse lister selv og målrette mod de modige nye bootstrapping noder, så tag dem offline også.

    Ikke kun lærte vi svaret på det oprindelige spørgsmål, men vi lærte også en smule om karakteren af ​​BitTorrent-systemet og dets sårbarheder.


    Har du noget at tilføje til forklaringen? Lyde af i kommentarerne. Vil du læse flere svar fra andre tech-savvy Stack Exchange brugere? Tjek den fulde diskussionstråd her.