59 votes

En termes simples, comment un client BitTorrent découvre-t-il initialement les pairs à l'aide de la DHT ?

J'ai déjà lu cette réponse de SuperUser y cet article de Wikipedia mais les deux sont trop techniques pour que je les comprenne vraiment.

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

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

Ma question est la suivante : comment fonctionne la DHT ? C'est-à-dire, 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 ?

(Remarque : les explications simples sont les meilleures).

53voto

Giuseppe R Points 1325

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.

24voto

Spiff Points 95683

Réponse courte : Il l'obtient à partir du fichier .torrent.

Quand un client BitTorrent génère un fichier .torrent sans suivi (c'est-à-dire lorsque quelqu'un se prépare à partager quelque chose de nouveau via BitTorrent), il ajoute une clé " nodes " (clé comme dans " paire clé/valeur " ; comme un en-tête de section, pas une clé cryptographique) au fichier .torrent qui contient les K nœuds DHT les plus proches connus de ce client.

http://www.bittorrent.org/beps/bep%5F0005.html#torrent-file-extensions

Un dictionnaire de torrent sans suivi ne possède pas de clé " announce ". Au lieu de cela, un torrent sans suivi possède une clé " nodes ". Cette clé doit être doit être définie sur les K nœuds les plus proches dans la table de routage du client de routage du client générateur de torrent. Alternativement, la clé peut être définie sur un bon nœud connu tel que comme celui exploité par la personne qui génère le torrent. Veuillez ne pas ajouter automatiquement " router.bittorrent.com " aux fichiers torrents ou d'ajouter automatiquement ce nœud aux tables de routage des clients.

Ainsi, lorsque vous fournissez à votre client BitTorrent le fichier .torrent d'un torrent sans traqueur que vous souhaitez télécharger, il utilise la valeur de la clé " nodes " du fichier .torrent pour trouver ses premiers nœuds DHT.

2voto

jlb Points 4079

Vous ne pouvez pas ! vous devez connaître au moins une IP d'un des essaims, c'est la faiblesse d'un réseau p2p. On peut diffuser aveuglément pour trouver la première IP, mais dans un grand réseau, si tout le monde fait ça, on aura des problèmes de congestion. Vous pouvez utiliser un cache, mais cela n'est possible que pour les grands essaims (cache d'adresses de pairs plus grand). Vous devez toujours connecter un tracker pour demander seulement la première IP.

Distribué dans la DHT signifie que les clients n'ont pas besoin de détenir toutes les listes contenant la somme md5 du nom des fichiers partagés, avec les pairs correspondants. La liste de hachage est divisée en parties égales et distribuée avec redondance à travers l'essaim. Si un pair se déconnecte, il y en a un autre quelque part avec la même partie de la liste de hachage. Les pairs partagent entre eux l'adresse du bon détenteur de la partie de la liste de hachage.

torrent-freak a écrit un post sur ce sujet

1voto

tameit Points 11

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 ?

Il le demande.

Les clients Bittorrent qui prennent en charge le DHT Exécuter deux applications peer-to-peer distinctes.

Le premier s'occupe du partage des fichiers : A essaim dans le jargon bittorrent, est un groupe de pairs partageant un objet bittorrent (par exemple, un fichier ou une structure de répertoire). Chaque objet bittorrent possède des métadonnées qui sont enregistrées dans un fichier .torrent. (Elles comprennent la taille de l'objet, le nom du dossier, éventuellement des informations sur le tracker ou les nœuds, etc.) Le hachage des métadonnées nécessaires pour télécharger cet objet bittorrent est appelé infohash.

Le DHT est essentiellement une deuxième application P2P visant à remplacer les trackers : Elle stocke des paires de (infohash, essaim) et met à jour l'essaim si elle reçoit des messages d'annonce. Un nouveau client doit avoir connaissance d'un certain "nœud" (le jargon bittorrent pour un pair de la DHT) pour amorcer ses informations sur la DHT. Les arguments donnés par @allquixotic s'appliquent ici. Comme la DHT est actuellement composée de plus de 7 millions de pairs, une attaque soutenue par déni de service semble peu probable.

Il peut alors interroger la DHT par rapport à un infohash et n'a pas besoin d'utiliser un tracker ou de connaître un pair qui fait partie de l'essaim auparavant. Si l'un des pairs qu'il contacte supporte partage des métadonnées il a seulement besoin de l'infohash peut récupérer le fichier .torrent de l'essaim.

0voto

MrSmith42 Points 101

La plupart des clients de réseaux p2p sont amorcés à partir d'une liste de pairs d'amorçage auxquels ils se connectent initialement... une fois qu'ils se connectent à un pair amorcé, il télécharge les autres de manière distribuée. Il se connecte au pair d'amorçage et télécharge sa liste DHT de pairs, puis va vers chacun d'eux et fait de même, etc. etc.

Par exemple :

Voici une liste de nœuds d'amorçage :

https://github.com/dontcontactme/p2pspider/blob/master/lib/dhtspider.js#L10

C'est ici que le client se connecte à eux pour hydrater la liste des pairs :

https://github.com/dontcontactme/p2pspider/blob/master/lib/dhtspider.js#L60

C'est similaire au fonctionnement d'un tracker, sauf que presque tout le monde peut être un nœud d'amorçage et qu'il est donc presque impossible de les fermer.

Le porte-monnaie central Bitcoin fonctionne de la même manière. Il vous permet de changer les pairs d'amorçage si, pour une raison quelconque, les pairs par défaut sont fermés.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X