In che modo un client BitTorrent individua inizialmente i suoi pari?
Quando il tuo client torrent si unisce allo sciame 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 all'interno dei meccanismi che sottendono il protocollo BitTorrent.
La sessione di domande e risposte di oggi ci viene fornita per gentile concessione di SuperUser, una suddivisione di Stack Exchange, un raggruppamento di siti Web di domande e risposte basato sulla comunità.
La domanda
Il lettore SuperUser 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 farmi veramente 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.
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? Questo è, come può un nuovo cliente entrare in uno sciame senza un tracker o la conoscenza di almeno un membro dello sciame per scambiare coetanei con?
(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
Il collaboratore di 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 per scambiare coetanei con?
Non puoi È impossibile.*
* (A meno che un nodo sul tuo rete locale capita di essere già un nodo nel DHT. In questo caso, è possibile utilizzare un meccanismo di trasmissione, come Avahi, per "scoprire" questo peer e eseguire il bootstrap da essi. Ma come è stato essi bootstrap stessi? Alla fine, ti capiterà una situazione in cui è necessario connettersi a Internet pubblica. E l'Internet pubblica è unicast-only, non multicast, quindi sei bloccato con 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.
Esposizione
Con il protocollo Kademlia, quando ti colleghi alla rete, esegui una procedura di bootstrap, che richiede assolutamente di sapere, in anticipo, l'indirizzo IP e la porta di almeno un nodo che già partecipa alla rete DHT. Il tracker a cui ci si collega, 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 con un numero sempre maggiore di nodi, che può fornire sia connettività ad altri nodi e dati di carico utile (blocchi del download).
Penso che la tua vera domanda in grassetto sia quella di come unirti a una rete DHT di Kademlia senza saperlo qualunquealtri membri - si basa su una falsa ipotesi.
La semplice risposta alla tua domanda in grassetto è, tu no. 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 ad 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 perché il meccanismo di unione è abbastanza fragile (non c'è modo di "trasmettere" sull'intera Internet! unicasta un singolo host pre-assegnato per ottenere i dati DHT), Kademlia DHT non lo è veramente decentrata. Non nel senso più stretto della parola.
Immagina questo scenario: qualcuno che vuole che il P2P si fermi si spegne e prepara un attacco tutti nodi DHT stabili comunemente utilizzati che vengono utilizzati per il bootstrap. Una volta messo in scena il loro attacco, lo scatenano tutti 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 le liste tradizionali di pari da quelle. Bene, se attaccano anche i tracker, allora lo sei davvero, veramente 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 disattivare offline per impedire> 90% degli utenti dalla connessione alla rete.
Una volta che i nodi "pseudo-centralizzati" di 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 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 aggirare questo problema, 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.