/ / In che modo un client Bittorrent scopre inizialmente i suoi colleghi?

Come fa un client Bittorrent a scoprire inizialmente i suoi colleghi?

Quando il client torrent si unisce allo sciame per condivideree raccogliere pezzi di file, come fa a sapere esattamente dove sono tutti i suoi colleghi? Continua a leggere mentre frugiamo nei meccanismi alla base del protocollo BitTorrent.

La sessione di domande e risposte di oggi ci viene fornita da SuperUser, una suddivisione di Stack Exchange, un raggruppamento di siti Web di domande e risposte guidato dalla community.

La domanda

Il lettore SuperUser Steve V. aveva una domanda molto specifica sul sistema Distributed Hash Table (DHT) all'interno del protocollo BitTorrent:

Ho già letto questa risposta di SuperUser e questo articolo di Wikipedia, ma entrambi sono troppo tecnici per farmi davvero girare la testa.

Comprendo l'idea di un tracker: i client si connettono a un server centrale che mantiene un elenco di peer in uno sciame.

Comprendo anche l'idea dello scambio tra pari: i clienti già in uno sciame inviano l'un l'altro l'elenco completo dei loro colleghi. Se vengono scoperti nuovi peer, questi vengono aggiunti all'elenco.

La mia domanda è: come funziona DHT? Questo è, come può un nuovo cliente unirsi a uno sciame senza un tracker o la conoscenza di almeno un membro dello sciame con cui scambiare colleghi?

(Nota: le spiegazioni semplici sono le migliori.)

La sua domanda a sua volta ha suscitato una risposta molto dettagliata sulle diverse funzioni del sistema BitTorrent; diamo un'occhiata ora.

La risposta

Collaboratore di SuperUser Allquixotic offre una spiegazione approfondita:

Come può un nuovo cliente unirsi a uno sciame senza un tracker o la conoscenza di almeno un membro dello sciame con cui scambiare colleghi?

Non puoi. È impossibile.*

* (A meno che un nodo sul tuo rete locale sembra essere già un nodo nel DHT. In questo caso, è possibile utilizzare un meccanismo di trasmissione, come Avahi, per "scoprire" questo peer e avviare da loro. Ma come ha fatto essi bootstrap stessi? Alla fine, ti imbatterai in una situazione in cui è necessario connettersi a Internet pubblico. E Internet pubblico è solo unicast, non multicast, quindi sei bloccato con l'utilizzo di elenchi predeterminati di colleghi.)

Riferimenti

Bittorrent DHT è implementato tramite un protocollo noto come Kademlia, che è un caso speciale del concetto teorico di una tabella hash distribuita.

Esposizione

Con il protocollo Kademlia, quando ti unisci alla rete, segui una procedura di bootstrap, che richiede assolutamente di sapere, in anticipo, l'indirizzo IP e la porta di almeno un nodogià partecipando alla rete DHT. Il tracker a cui ti connetti, ad esempio, può essere esso stesso un nodo DHT. Una volta connesso a un nodo DHT, si procede quindi al download delle informazioni dal DHT, che fornisce informazioni sulla connettività per più nodi e quindi si naviga nella struttura del "grafico" per ottenere connessioni a un numero sempre maggiore di nodi, che possono fornire entrambi connettività ad altri nodi e dati del payload (blocchi del download).

Penso che la tua vera domanda sia in grassetto: quella di come entrare in una rete DHT di Kademlia senza saperlo qualunquealtri membri - si basa su un presupposto falso.

La semplice risposta alla tua domanda in grassetto è: non lo fai. Se non conosci ALCUNA informazioneanche un host che potrebbe contenere metadati DHT, sei bloccato - non puoi nemmeno iniziare. Voglio dire, certo, potresti tentare la forza bruta di scoprire un IP su Internet pubblico con una porta aperta che capita di trasmettere informazioni DHT. Ma più probabilmente, il tuo client BT è codificato su un determinato IP statico o DNS che si risolve in un nodo DHT stabile, che fornisce solo i metadati DHT.

Fondamentalmente, il DHT è decentralizzato solo come il meccanismo di giunzione, e poiché il meccanismo di giunzione è abbastanza fragile (non c'è modo di "trasmettere" su tutta Internet! Quindi devi unicasta un singolo host pre-assegnato per ottenere i dati DHT), Kademlia DHT no veramente decentrata. Non nel senso più stretto della parola.

Immagina questo scenario: qualcuno che vuole fermare il P2P esce e prepara un attacco tutti nodi DHT stabili comunemente usati che vengono utilizzati per il bootstrap. Una volta messo in scena il loro attacco, lo scatenano tutti nodi contemporaneamente. Wham; ogni singolo nodo DHT di bootstrap è in un colpo solo. E adesso? Sei bloccato con la connessione a localizzatori centralizzati per scaricare elenchi tradizionali di colleghi da quelli. Bene, se attaccano anche i tracker, allora sei davvero, veramente su un torrente. In altre parole, Kademlia e l'intera rete BT sono vincolate dalle limitazioni di Internet stesso, in quanto esiste un numero limitato (e relativamente piccolo) di computer che dovresti attaccare con successo o portare offline per prevenire> 90% degli utenti dalla connessione alla rete.

Una volta che i nodi "pseudo-centralizzati" del bootstrap sono andati tutti, i nodi interni del DHT, che non sono bootstrap perché nessuno all'esterno del DHT conosce i nodi interni, sono inutili; non possono inserire nuovi nodiil DHT. Quindi, man mano che ogni nodo interno si disconnette dal DHT nel tempo, a causa di persone che spengono i loro computer, si riavviano per aggiornamenti, ecc., La rete collasserebbe.

Certo, per aggirare questo, qualcuno potrebbedistribuire un client BitTorrent con patch con un nuovo elenco di nodi DHT o indirizzi DNS stabili predeterminati e fare pubblicità ad alta voce alla comunità P2P per utilizzare invece questo nuovo elenco. Ma questa diventerebbe una situazione da "colpo di fulmine" in cui l'aggressore (il mangiatore di nodi) scaricherebbe progressivamente questi elenchi e prenderà di mira i nuovi coraggiosi nodi di bootstrap, quindi li porterà anche offline.

Non solo abbiamo imparato la risposta alla domanda originale, ma abbiamo anche imparato un po 'della natura del sistema BitTorrent e delle sue vulnerabilità.


Hai qualcosa da aggiungere alla spiegazione? Suona nei commenti. Vuoi leggere altre risposte da altri utenti esperti di Stack Exchange? Dai un'occhiata al thread completo di discussione qui.