Sommario
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 sulla propria rete locale non sia già un nodo nel DHT. In questo caso, è possibile utilizzare un meccanismo di trasmissione, come Avahi, per "scoprire" questo peer e avviare da esso. Ma come ha fatto si avviano da soli? Alla fine, ti imbatterai in una situazione in cui devi connetterti a Internet pubblico. E Internet pubblico è solo unicast, non multicast, quindi sei bloccato con l'utilizzo di elenchi predeterminati di peer.)
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 conoscere in anticipo l'indirizzo IP e la porta di almeno un nodo già partecipante 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 domanda effettiva in grassetto - quello di come partecipare a una rete Kademlia DHT senza conoscere eventuali altri membri - si basa su un falso presupposto.
La semplice risposta alla tua domanda in grassetto è che non lo fai . Se non conosci NESSUNA informazione su nemmeno 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 ottenere unicast su un singolo host pre-assegnato per ottenere il DHT dati), Kademlia DHT non è realmente decentralizzato. Non nel senso più stretto della parola.
Immagina questo scenario: qualcuno che vuole fermare il P2P esce e prepara un attacco a tutti i nodi DHT stabili comunemente usati che vengono utilizzati per il bootstrap. Una volta messo in scena il loro attacco, lo fanno scattare su tutti i nodi contemporaneamente. Wham ; ogni singolo nodo DHT di bootstrap è in un colpo solo. E adesso? Sei bloccato con la connessione a tracker centralizzati per scaricare elenchi tradizionali di peer da quelli. Bene, se attaccano anche i tracker, allora sei davvero, davverosu 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 portare nuovi nodi nel 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.
Ovviamente, per ovviare a questo problema, qualcuno potrebbe distribuire un client BitTorrent con patch con un nuovo elenco di nodi DHT o indirizzi DNS stabili predeterminati e pubblicizzare ad alta voce la comunità P2P per utilizzare questo nuovo elenco. Ma questa diventerebbe una situazione "da sballo" 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.