Sommaire
Comment un nouveau client peut-il rejoindre un essaim sans un pisteur ou la connaissance d'au moins un membre de l'essaim avec lequel échanger des pairs?
Tu ne peux pas. C'est impossible.*
* (À moins qu'un nœud de votre réseau local ne soit déjà un nœud dans la DHT. Dans ce cas, vous pouvez utiliser un mécanisme de diffusion, tel que Avahi, pour "découvrir" cet homologue et l'amorcer à partir de celui-ci. Mais comment ils se bootstrap? Finalement, vous tomberez sur une situation où vous devez vous connecter à l'Internet. Et l'Internet est unicast, et non multicast, de sorte que vous êtes coincé avec l' aide de listes pré-déterminé de pairs.)
Les références
Bittorrent DHT est implémenté via un protocole appelé Kademlia , qui est un cas particulier du concept théorique d’une table de hachage distribuée .
Exposition
Avec le protocole Kademlia, lorsque vous rejoignez le réseau, vous suivez une procédure d’ amorçage , qui requiert obligatoirement que vous connaissiez au préalable l’adresse IP et le port d’au moins un nœud participant déjà au réseau DHT. Le suivi auquel vous vous connectez, par exemple, peut être lui-même un nœud DHT. Une fois que vous êtes connecté à un nœud DHT, vous procédez au téléchargement des informations à partir du DHT, qui vous fournit les informations de connectivité pour plusieurs nœuds, puis vous naviguez dans cette structure de "graphe" pour obtenir des connexions vers de plus en plus de nœuds, qui peuvent fournir les deux. connectivité à d'autres nœuds et données utiles (morceaux du téléchargement).
Je pense que votre question en gras - celle de savoir comment rejoindre un réseau Kademlia DHT sans connaître d’ autres membres - est basée sur une fausse hypothèse.
La réponse simple à votre question en gras est que vous ne le faites pas . Si vous ne connaissez AUCUNE information sur un seul hôte susceptible de contenir des métadonnées DHT, vous êtes bloqué - vous ne pouvez même pas vous lancer. Je veux dire, bien sûr, vous pourriez tenter par la force brute de découvrir une adresse IP sur l’Internet public avec un port ouvert permettant de diffuser des informations DHT. Mais plus probablement, votre client BT est codé en dur sur une adresse IP ou DNS statique spécifique, qui se résout en un nœud DHT stable, qui fournit uniquement les métadonnées DHT.
Fondamentalement, la DHT est seulement aussi décentralisé que le mécanisme de liaison, et parce que le mécanisme de liaison est assez fragile (il n'y a aucun moyen de « diffusion » sur tout l'Internet! Donc vous devez unicast à un hôte pré-attribuée individuel pour obtenir la DHT Kademlia DHT n’est pas vraiment décentralisée. Pas dans le sens le plus strict du mot.
Imaginez ce scénario: quelqu'un qui souhaite que P2P s'arrête s'éteint et prépare une attaque sur tous les nœuds DHT stables couramment utilisés qui sont utilisés pour le démarrage. Une fois leur attaque mise en scène, ils la lancent sur tous les nœuds en même temps. Wham ; chaque nœud d'amorçage DHT est en panne d'un coup. Maintenant quoi? Vous devez vous connecter à des suivis centralisés pour télécharger des listes traditionnelles de pairs à partir de ceux-ci. Eh bien, s’ils attaquent aussi les traqueurs, alors vous êtes vraiment, vraimentune crique. En d'autres termes, Kademlia et l'ensemble du réseau BT sont contraints par les limitations d'Internet lui-même, en ce sens qu'il existe un nombre fini (et relativement petit) d'ordinateurs qu'il vous faudrait attaquer ou mettre hors ligne avec succès pour éviter> 90% des utilisateurs de se connecter au réseau.
Une fois que tous les nœuds d'amorçage "pseudo-centralisés" ont disparu, les nœuds intérieurs de la DHT, qui ne démarrent pas parce que personne à l'extérieur de la DHT ne connaît les nœuds intérieurs , sont inutiles; ils ne peuvent pas amener de nouveaux nœuds dans la DHT. Ainsi, à mesure que chaque nœud intérieur se déconnecte de la DHT au fil du temps, en raison de l’arrêt des ordinateurs, de la réinitialisation des mises à jour, etc., le réseau s’effondrait.
Bien entendu, pour contourner ce problème, quelqu'un pourrait déployer un client BitTorrent corrigé avec une nouvelle liste de nœuds DHT stables prédéterminés ou d'adresses DNS, et annoncer à haute voix à la communauté P2P d'utiliser cette nouvelle liste à la place. Mais cela deviendrait une situation de type "whack-a-mole" où l'agresseur (le mangeur de nœuds) téléchargerait ces listes progressivement, ciblerait les nouveaux nœuds de démarrage courageux, puis les mettrait hors ligne également.