Résumé
Comment un nouveau client peut-il rejoindre un essaim sans disposer d'un tracker ou sans connaître au moins un membre de l'essaim avec qui échanger des pairs ?
Tu ne peux pas. C'est impossible.*
* (Sauf si un nœud de votre réseau local se trouve être déjà un nœud dans la DHT. Dans ce cas, vous pourriez utiliser un mécanisme de diffusion, tel qu'Avahi, pour "découvrir" ce pair, et démarrer à partir de lui. Mais comment ils s'amorcer eux-mêmes ? Vous finirez par vous retrouver dans une situation où vous devrez vous connecter à l'Internet public. Et l'Internet public est unicast-only, pas multicast, donc vous êtes coincé avec l'utilisation de listes prédéterminées de pairs).
Références
Bittorrent DHT est mis en œuvre via un protocole connu sous le nom de Kademlia qui est un cas particulier de la notion théorique d'a Table de hachage distribuée .
Exposition
Avec le protocole Kademlia, lorsque vous rejoignez le réseau, vous passez par une bootstrapping procédure, qui nécessite absolument que vous sachiez, à l'avance l'adresse IP et le port d'au moins un nœud participant déjà au réseau DHT. Le tracker 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 téléchargez des informations à partir de la DHT, qui vous fournit des informations de connectivité pour d'autres nœuds, et vous naviguez ensuite dans cette structure "graphique" pour obtenir des connexions avec de plus en plus de nœuds, qui peuvent fournir à la fois la connectivité à d'autres nœuds et des données utiles (morceaux du téléchargement).
Je pense que la question en gras -- celle de savoir comment rejoindre un réseau DHT Kademlia sans connaître le nom de l'utilisateur. tout d'autres membres -- est basé sur une fausse hypothèse.
La réponse simple à votre question en gras est la suivante, tu ne le fais pas . Si vous ne connaissez AUCUNE information sur ne serait-ce qu'un seul hôte susceptible de contenir des métadonnées DHT, vous êtes coincé - vous ne pouvez même pas commencer. Je veux dire, bien sûr, vous pouvez essayer par force brute de découvrir une IP sur l'internet public avec un port ouvert qui diffuse des informations DHT. Mais plus probablement, votre client BT est codé en dur sur une IP statique spécifique ou un DNS qui se résout en un nœud DHT stable, qui fournit juste les métadonnées DHT.
Fondamentalement, le DHT est aussi décentralisé que le mécanisme de jonction, et parce que le mécanisme de jonction est assez fragile (il n'y a pas de moyen de "diffuser" sur l'ensemble de l'Internet ! unicast à un hôte individuel pré-assigné pour obtenir les données de la DHT), la DHT de Kademlia n'est pas vraiment décentralisé. Pas dans le sens le plus strict du terme.
Imaginez ce scénario : Quelqu'un qui veut que le P2P s'arrête sort et prépare une attaque sur tous les nœuds stables de DHT couramment utilisés, qui servent à l'amorçage. Une fois qu'ils ont mis en place leur attaque, ils Spring l'appliquent sur tous tous les nœuds en même temps. Wham chaque nœud de DHT est en panne d'un seul coup. Et maintenant ? Vous êtes coincé avec la connexion à traqueurs centralisés pour télécharger les listes traditionnelles de pairs à partir de celles-ci. S'ils attaquent aussi les traqueurs, alors c'est vraiment le cas, vraiment dans un ruisseau. En d'autres termes, Kademlia et l'ensemble du réseau BT sont limités par les limites de l'Internet lui-même, en ce sens qu'il existe un nombre fini (et relativement faible) d'ordinateurs qu'il faudrait attaquer avec succès ou mettre hors ligne pour empêcher plus de 90 % des utilisateurs de se connecter au réseau.
Une fois que les nœuds d'amorçage "pseudo-centralisés" sont tous partis, les nœuds intérieurs de la DHT, qui ne sont pas amorçables parce que Personne à l'extérieur de la DHT ne connaît les nœuds intérieurs. sont inutiles ; ils ne peuvent pas introduire de nouveaux nœuds dans la DHT. Ainsi, comme chaque nœud intérieur se déconnecte de la DHT au fil du temps, soit à cause des personnes qui éteignent leurs ordinateurs, soit en redémarrant pour les mises à jour, etc, le réseau s'effondrerait.
Bien sûr, 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 bruyamment à la communauté P2P d'utiliser cette nouvelle liste à la place. Mais cela deviendrait une situation de "whack-a-mole" où l'agresseur (le mangeur de nœuds) téléchargerait progressivement ces listes lui-même, et ciblerait les courageux nouveaux nœuds d'amorçage, puis les mettrait également hors ligne.