1Sep

Hur upptäcker en Bittorrent-klient ursprungligen sina medarbetare?

När din torrentklient sammanfogar svärmen för att dela och samla filstycken, hur exakt vet den var alla sina kamrater är? Läs vidare när vi pekar inuti de mekanismer som undergått BitTorrent-protokollet.

Dagens fråga &Svarssession kommer till oss med tillstånd av SuperUser-en indelning av Stack Exchange, en community-driven gruppering av Q & A-webbplatser.

Frågan

SuperUser-läsaren Steve V. hade en mycket specifik fråga om DHT-systemet( Distributed Hash Table) i BitTorrent-protokollet:

Jag har redan läst detta SuperUser-svar och denna Wikipedia-artikel men båda är för tekniska för mig att verkligenvik mitt huvud runt.

Jag förstår tanken på en spårare: Klienterna ansluter till en central server som upprätthåller en lista över kamrater i en svärm.

Jag förstår också idén om peer-utbyte: Klienter som redan är i svärm skickar komplett lista över sina kamrater till varandra. Om nya kamrater upptäcks läggs de till i listan.

Min fråga är hur fungerar DHT?Det är hur kan en ny klient gå med en svärm utan att antingen spåra eller kunskap om minst en medlem av svärmen för att utbyta kamrater med?

( Obs! Enkela förklaringar är bäst.)

Hans fråga fick i sin tur ett riktigt detaljerat svar om BitTorrent-systemets olika funktioner.låt oss ta en titt på det nu.

Svaret

SuperUser-bidragsgivaren Allquixotic erbjuder en fördjupad förklaring:

Hur kan en ny klient ansluta sig till en svärm utan antingen en spårare eller kunskap om minst en medlem av svärmen för att utbyta kamrater?

Du kan inte. Det är omöjligt. *

* ( Om inte en nod på ditt lokalnätverk råkar vara en nod i DHT. I det här fallet kan du använda en sändningsmekanism, som Avahi, för att "upptäcka" denna peer, och bootstrap från dem. Men hur gick de bootstrap sig? I slutändan kommer du att träffa en situation där du behöver ansluta till det offentliga Internet. Och det offentliga Internetet är enbart unicast, inte multicast, så du är fastmed användning av förutbestämda listor av kamrater.)

Referenser

Bittorrent DHT implementeras via ett protokoll som kallas Kademlia, vilket är ett speciellt fall av teoretiskt koncept för ett Distribuerat hashbord.

-exponering

Med Kademlia-protokollet, när du går med i nätverket, går du igenom en bootstrapping-procedur, vilket absolut kräver att du vet i förväg , IP-adressen och porten på minst en nod som redan deltar i DHT-nätverket. Spåraren som du ansluter till kan till exempel vara en DHT-nod. När du är ansluten till en DHT-nod fortsätter du sedan ladda ner information från DHT, som ger dig information om anslutning för fler noder, och du navigerar sedan på den "grafstrukturen" för att få anslutningar till fler och fler noder, som kan ge bådeanslutning till andra noder och nyttolastdata( bitar av nedladdningen).

Jag tycker att din faktiska fråga i fetstil - det som gäller hur man går med i ett Kademlia DHT-nätverk utan att veta några andra -medlemmar - bygger på ett felaktigt antagande.

Det enkla svaret på din fråga med fetstil är, , du inte .Om du inte känner till någon information alls om ens en värd som kan innehålla DHT-metadata, är du fast - du kan inte ens komma igång. Jag menar säkert, du kan brute force försök att upptäcka en IP på det offentliga internet med en öppen port som händer att sända DHT information. Men mer troligt är din BT-klient hårdkodad till någon specifik statisk IP eller DNS som löser en stabil DHT-nod, som bara ger DHT-metadata.

I grund och botten är DHT bara decentraliserad som anslutningsmekanism, och eftersom anslutningsmekanismen är ganska spröd( det finns inget sätt att "sända" över hela Internet! Så du måste unicast till en individuell fördelad värd tillfå DHT data), Kademlia DHT är inte verkligen decentraliserad. Inte i ordets strängaste bemärkelse.

Tänk på detta scenario: Någon som vill att P2P ska sluta går ut och förbereder en attack på alla vanliga stabila DHT-noder som används för bootstrapping. När de har arrangerat sin attack, spring de på alla noder på en gång. Wham ;varje enskild bootstrapping DHT-nod är nere i ett fall. Nu då?Du sitter fast vid anslutning till -centraliserade trackers för att ladda ner traditionella listor av kamrater från dem. Tja, om de attackerar spårarna också, då är du verkligen, verkligen upp en bäck. Med andra ord begränsas Kademlia och hela BT-nätet av Internetets begränsningar, eftersom det finns ett begränsat antal( och relativt små) datorer som du skulle behöva attackera eller ta offline för att förhindra & gt; 90% av användare från att ansluta till nätverket.

När de "pseudo-centraliserade" bootstrapping noderna är borta, är DHT: s inre noder, som inte bootstrappas, eftersom ingen på utsidan av DHT känner till interna noderna , är värdelösa.de kan inte föra nya noder i DHT.Så eftersom varje inre nod kopplas från DHT över tiden, antingen på grund av att människor stänger av sina datorer, startar om uppdateringar etc., skulle nätverket kollapsa.

För att komma runt om det här, kan det vara så att någon kan distribuera en patched BitTorrent-klient med en ny lista över förutbestämda stabila DHT-noder eller DNS-adresser och annonsera högt till P2P-gruppen för att använda den här nya listan istället. Men det här skulle bli en "whack-a-mole" -situation där aggressorn( noder-eatern) skulle ladda ner dessa listor progressivt och rikta sig mot de modiga nya uppstartningsnoderna och sedan ta dem offline också.

Inte bara lärde vi oss svaret på den ursprungliga frågan men vi lärde oss också ganska lite om BitTorrent-systemet och dess sårbarheter.

Har något att lägga till förklaringen? Ljud av i kommentarerna. Vill du läsa mer svar från andra tech-savvy Stack Exchange-användare? Kolla in hela diskussionsgängan här.