1Sep

Come fa un client BitTorrent a scoprire i suoi pari?

Quando il tuo client torrent si unisce allo swarm per condividere e raccogliere pezzi di file, come fa esattamente a sapere dove si trovano tutti i suoi pari? Continua a leggere mentre ci muoviamo dentro i meccanismi che sottendono il protocollo BitTorrent.

Today's Question &La sessione di risposta ci viene fornita per gentile concessione di SuperUser, una suddivisione di Stack Exchange, un raggruppamento di Q & A basato su community.

La domanda

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

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

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

Capisco anche l'idea dello scambio tra pari: i clienti già in uno sciame trasmettono l'elenco completo dei loro colleghi l'uno all'altro. Se vengono rilevati nuovi peer, vengono aggiunti all'elenco.

La mia domanda è: come funziona DHT?Cioè, , come può un nuovo cliente entrare in uno sciame senza un tracker o con la conoscenza di almeno un membro dello sciame con cui scambiare coetanei?

( Nota: le spiegazioni semplici sono le migliori.)

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

La risposta

Collaboratore SuperUser Allquixotic offre una spiegazione approfondita:

Come può un nuovo cliente entrare in uno sciame senza un tracker o la conoscenza di almeno un membro dello sciame con cui scambiare coetanei?

Non puoi.È impossibile. *

* ( A meno che un nodo sulla rete non sia già un nodo nel DHT, in questo caso è possibile utilizzare un meccanismo di trasmissione, come Avahi, per "scoprire" questo peere come ha fatto il bootstrap da loro, ma in che modo si sono riavviati da ? Alla fine, si verificherà una situazione in cui è necessario connettersi a Internet. E Internet pubblico è unicast-only, non multicast, quindi sei bloccatocon l'utilizzo di elenchi di peer predeterminati.) Riferimenti

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

Exposition

Con il protocollo Kademlia, quando ti colleghi alla rete, esegui una procedura di bootstrap, che richiede assolutamente di conoscere in anticipo , l'indirizzo IP e la porta di almeno un nodo che già partecipa alla rete DHT.Il tracker a cui ti colleghi, ad esempio, potrebbe essere esso stesso un nodo DHT.Una volta connesso a un nodo DHT, si procede quindi a scaricare le informazioni dal DHT, che fornisce le informazioni sulla connettività per più nodi, quindi si sposta la struttura "grafico" per ottenere connessioni a un numero sempre maggiore di nodi, che può fornire siaconnettività ad altri nodi e dati di carico utile( blocchi del download).

Penso che la tua vera domanda in grassetto - quella di come unire una rete DHT di Kademlia senza conoscere nessun altro - si basa su una falsa ipotesi.

La semplice risposta alla tua domanda in grassetto è che non hai .Se non conosci NESSUNA informazione su nemmeno un host che potrebbe contenere metadati DHT, sei bloccato - non puoi nemmeno iniziare. Voglio dire, certo, si potrebbe tentare la forza bruta di scoprire un IP sull'internet pubblico con una porta aperta che capita di trasmettere informazioni DHT.Ma più probabilmente, il tuo client BT è hard-coded per alcuni IP statici o DNS specifici che si risolvono in un nodo DHT stabile, che fornisce solo i metadati DHT.

Fondamentalmente, il DHT è decentralizzato solo come meccanismo di unione e poiché il meccanismo di unione è abbastanza fragile( non c'è modo di "trasmettere" su tutto l'Internet! Quindi devi unicast a un host pre-assegnato aottenere i dati DHT), Kademlia DHT non è realmente decentrato .Non nel senso più stretto della parola.

Immagina questo scenario: Qualcuno che vuole che il P2P si fermi si spegne e prepara un attacco su tutti nodi DHT stabili usati comunemente usati per il bootstrap. Una volta messo in scena il loro attacco, lo lanciano su tutti i nodi tutti in una volta. Wham ;ogni singolo nodo DHT di avvio è tutto in un colpo solo. Ora cosa? Sei bloccato con la connessione a tracker centralizzati per scaricare elenchi tradizionali di peer da quelli. Bene, se attaccano anche i tracker, allora sei veramente, davvero su un torrente. In altre parole, Kademlia e l'intera rete BT sono limitati dalle limitazioni di Internet stessa, in quanto esiste un numero finito( e relativamente piccolo) di computer che è necessario attaccare o portare offline per impedire & gt; 90% di utenti dalla connessione alla rete.

Una volta che i nodi bootstrap "pseudo-centralizzati" 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 portare nuovi nodi nel DHT.Quindi, dal momento che ogni nodo interno si disconnette dal DHT nel tempo, a causa dell'arresto dei computer, del riavvio degli aggiornamenti, ecc., La rete potrebbe collassare.

Ovviamente, per ovviare a questo, qualcuno potrebbe implementare un client BitTorrent patchato con un nuovo elenco di nodi DHT stabili predeterminati o indirizzi DNS, e pubblicizzare a voce alta alla comunità P2P per utilizzare invece questo nuovo elenco. Ma questa sarebbe diventata una situazione di "whack-a-mole" in cui l'aggressore( il mangiatore di nodi) avrebbe scaricato questi elenchi autonomamente e avrebbe indirizzato i coraggiosi nuovi nodi di bootstrap, quindi li avrebbe anche portati offline.

Non solo abbiamo appreso la risposta alla domanda originale, ma abbiamo anche imparato parecchio sulla natura del sistema BitTorrent e sulle sue vulnerabilità.

Hai qualcosa da aggiungere alla spiegazione? Sound off nei commenti. Vuoi leggere più risposte dagli altri utenti di Stack Exchange esperti di tecnologia? Controlla la discussione completa qui.