1Sep

Comment un client Bittorrent découvre-t-il initialement ses pairs?

Lorsque votre client torrent rejoint l'essaim pour partager et rassembler des fichiers, comment sait-il exactement où se trouvent tous ses pairs? Continuez à lire pendant que nous explorons les mécanismes qui sous-tendent le protocole BitTorrent.

Question d'aujourd'hui &La session de réponse nous est offerte par SuperUser, une subdivision de Stack Exchange, un regroupement communautaire de sites Web Q & A.

La question Lecteur

SuperUser Steve V. avait une question très spécifique sur le système DHT( Distributed Hash Table) dans le protocole BitTorrent:

J'ai déjà lu cette réponse SuperUser et cet article Wikipédia mais les deux sont trop techniques pour moiEnveloppe ma tête.

Je comprends l'idée d'un tracker: les clients se connectent à un serveur central qui maintient une liste de pairs dans un essaim.

Je comprends également l'idée de l'échange entre pairs: les clients déjà dans un essaim envoient la liste complète de leurs pairs les uns aux autres. Si de nouveaux pairs sont découverts, ils sont ajoutés à la liste.

Ma question est, comment fonctionne DHT?C'est-à-dire, comment un nouveau client peut-il rejoindre un essaim sans un traqueur ou la connaissance d'au moins un membre de l'essaim pour échanger des pairs avec?

( Note: les explications simples sont les meilleures.)

Sa question à son tour a incité une réponse vraiment détaillée au sujet des différentes fonctions du système de BitTorrent;Jetons un coup d'oeil maintenant.

La réponse

SuperUser contributeur Allquixotic offre une explication en profondeur:

Comment un nouveau client peut-il rejoindre un essaim sans un tracker ou la connaissance d'au moins un membre de l'essaim avec lequel échanger des pairs?

Vous ne pouvez pas. C'est impossible. *

* ( A moins qu'un noeud de votre réseau local ne soit déjà un noeud dans la DHT. Dans ce cas, vous pouvez utiliser un mécanisme de diffusion, comme Avahi, pour "découvrir" ce pair. Mais comment est-il capable de s'auto-amorcer? Vous finirez par vous retrouver dans une situation où vous devez vous connecter à l'Internet public et l'Internet public est unicast-only, pas multicast, donc vous êtes bloqué

Références

Bittorrent DHT est implémenté via un protocole connu sous le nom de Kademlia, qui est un cas particulier de concept théorique d'une table de hachage distribuée.

Exposition

Avec le protocole Kademlia, lorsque vous rejoignez le réseau, vous passez par une procédure d'amorçage, ce 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 continuez à télécharger les informations de la DHT, qui vous fournit des informations de connectivité pour plusieurs nœuds, puis vous naviguez dans cette structure "graphique" pour obtenir des connexions à plusieurs nœuds.connectivité à d'autres nœuds, et données utiles( morceaux du téléchargement).

Je pense que votre vraie question en gras - celle de savoir comment rejoindre un réseau Kademlia DHT sans connaître tout autre membre - est basée sur une fausse hypothèse.

La réponse simple à votre question en gras est, vous n'avez pas .Si vous ne connaissez AUCUNE information concernant un seul hôte qui pourrait contenir des métadonnées DHT, vous êtes bloqué - vous ne pouvez même pas commencer. Je veux dire, bien sûr, vous pourriez essayer de force brute pour découvrir une adresse IP sur l'Internet public avec un port ouvert qui arrive à diffuser des informations DHT.Mais plus probablement, votre client BT est codé en dur sur une adresse IP ou un DNS statique spécifique qui se résout en un nœud DHT stable, qui fournit uniquement 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 cassant( il n'y a aucun moyen de "diffuser" sur tout l'Internet!) unicast à un hôte pré-assigné individuel àobtenir les données DHT), Kademlia DHT n'est pas vraiment décentralisé.Pas dans le sens le plus strict du mot.

Imaginez ce scénario: Quelqu'un qui veut arrêter P2P sort et prépare une attaque sur tous les nœuds DHT stables couramment utilisés qui sont utilisés pour l'amorçage. Une fois qu'ils ont mis en scène leur attaque, ils se déclenchent sur tous les nœuds à la fois. Wham ;chaque nœud bootstrap DHT est en panne d'un seul coup. Maintenant quoi? Vous êtes coincé avec la connexion trackers centralisés pour télécharger les listes traditionnelles de pairs de ceux-ci. Eh bien, si elles attaquent les trackers aussi, alors vous êtes vraiment, vraiment jusqu'à 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 limité( et relativement petit) d'ordinateurs que vous devrez attaquer ou mettre hors ligne pour prévenir.% d'utilisateurs de la connexion 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 bootstrap car ne connaît personne à l'extérieur de la DHT sur 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, que ce soit en raison de l'arrêt des ordinateurs, du redémarrage des mises à jour, etc., le réseau s'effondre.

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 ou d'adresses DNS prédéterminés, et faire de la publicité forte à la communauté P2P pour 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 ces listes progressivement, et ciblerait les nouveaux nœuds d'amorçage courageux, puis les mettrait également hors ligne.

Nous avons non seulement appris la réponse à la question initiale, mais nous avons aussi beaucoup appris sur la nature du système BitTorrent et ses vulnérabilités.

Avoir quelque chose à ajouter à l'explication? Sonnez dans les commentaires. Vous voulez lire plus de réponses d'autres utilisateurs de Stack Exchange? Découvrez le fil de discussion complet ici.