µtorrent - DHT ?

Résolu/Fermé
kang59 Messages postés 95 Date d'inscription mercredi 6 juin 2007 Statut Membre Dernière intervention 4 mai 2010 - Modifié le 26 sept. 2008 à 13:34
verdy_p Messages postés 202 Date d'inscription vendredi 27 janvier 2006 Statut Membre Dernière intervention 29 janvier 2019 - 29 avril 2018 à 02:28
Bonjour,
je suis un tout nouvel arrivant sur ce site, que je connais déjà pourtant, à force de furetage sur le net à la recherche d'info diverse et (av)variées ^^.
Mon problème (faisons bref) :
j'utilise µtorrent depuis un moment.
Jusqu'à auhourd'hui je n'ai eu aucun problème, mais ce matin, depuis qu'il est connecté, il m'affiche en bas "DHT en attente d'identificatoin" ou alors "DHT : 0 noeuds(identification)" et ma vitesse de DL en est relativement diminuée.
Pourtant je n'ai rien changé dans ma config logicielle et matérielle...
(connexion sur modem USB, ADSL 2M ; Bitdefender 9 professionalplus avec firewall intégré, autorisations effectuée, ports ouverts etc...)

Ma(es) question(s) :

- c'est quoi DHT ? j'ai cherché partout sur le site et j'ai été incapable de trouver une définition ou une explication.
- comment remédier à monpb ?

Merci d'avance pour toute aide !
A voir également:

4 réponses

suite copie du http://ww12.quebectorrent.com

Les tables de hash réparties sont utilisées notamment dans les protocoles Chord, protocole P2P CAN, Tapestry, Kademlia (utilisé par eMule), Ares Galaxy. Système aussi utilisé dans de nombreux clients récents pour le protocle BitTorrent comme Azureus, Bitcomet ou encore µTorrent (prononcer Micro Torrent). Le premier client BitTorrent à utiliser le DHT était Azureus, suivi du client officiel BitTorrent, c'était deux versions différentes. La version officielle fut alors appelée Mainline DHT. Dorénavant la plupart des clients supportent la version Mainline DHT.

Principe [modifier]

Supposons un grand nombre d'utilisateurs (5 millions) ayant lancé leur logiciel de P2P (Peer-to-Peer) sur leur ordinateur. Chacun partage quelques fichiers (films au format MPEG, images, disques, etc.)

Un utilisateur (Luc) possède par exemple l'album de musique "Les idees saines de Serge Dassault" (disponible sous licence Creative Commons).

Supposons qu'un autre utilisateur (Pierre) souhaite télécharger cet album. Comment son logiciel de P2P peut-il trouver l'ordinateur de Luc ?

Le logiciel de Pierre pourrait éventuellement demander aux 5 millions d'ordinateurs si par hasard ils possèdent cet album. Le logiciel de Luc répondrait alors : «Je le possède et peux commencer à le transférer».

Il serait cependant bien lent de demander aux 5 millions d'ordinateurs si ils ont cet album, car il y aurait en permanence des millions de questions «Je cherche tel album, l'as-tu ?», entraînant des millions de réponses : «Non, désolé !».

Un grand annuaire archivant les noms des fichiers partagés par tous les utilisateurs résoudrait la question : il suffirait de demander à ce «grand annuaire» (= la table de hachage) l'album de musique "Les idees saines de Serge Dassault"pour obtenir la réponse : «il est disponible sur l'ordinateur de Luc (et celui de Mathieu, de Paul, etc.)».
135
marci
0
Génial. Merci pour cette explication limpide.
Eric
0
verdy_p Messages postés 202 Date d'inscription vendredi 27 janvier 2006 Statut Membre Dernière intervention 29 janvier 2019
29 avril 2018 à 02:28
Ce n'est pas seulement lié aux partages de fichiers. En fait un DHT permet de retrouver n'importe quoi (pas seulement un fichier partagé) sur Internet ayant une empreinte numérique solide (SHA1 ou plus, et même MD5). Cela peut servir à sécuriser des échanges de clés de cryptage sans savoir où est localisé sur le réseau celui à qui on destine la clé, et même de façon totalement anonyme: au lieu de chercher la clé publique du destinataire, on va utiliser sa clé pour crypter notre propre clé privée et l'identifiant unique du service pour lequel on destine la clé de décryptage permettant de sécuriser une connexion. On hache le tout avec une empreinte numérique sure (SHA512) et on envoie la recherche de cette empreinte sur le DHT, le destinataire lui aussi partcipe au DHT et se met à l'écoute d'une clé inverse sur le DHT. Le principe du DHT est de former un réseau connecté de plus haut "degré" possible (maximisant la longueur de routage avant de boucler et créer des chemins redondants entre les particpants du DHT). Pour cela chaque participant au DHT dispose d'un identifiant unique aléatoire, se connecte à un premier traqueur du DHT qui va lui donner (par exemple) 64 adresses de pairs du DHT respectant au moins un certain nombre de bits de différences dans leur identifiant unique aléatoire. On parcourt un certain temps temps le DHT pour voir si on ne trouve pas de doublon d'adresse réseau ni sur soi-même, sa propre adresse réseau; pour un même degré on compare le nombre de voisins en communs pour savoir quel est parmi nos pairs celui qui en a le moins en communs avec les autres de même degré, et on garde la liste triée selon ce critère; si on construit un HDT à 64 degrés, la liste ne peut pas dépasser 64 pairs, on choisit d'éliminer en priorité les pairs de plus faible degré et sinon ceux ayant le plus de voisins communs en doublon); si on ne trouve pas de doublon on progresse en intérrogeant successivement les voisins. La méthode de construction du DHT est assez rapide et consomme peu de ressource on obtient vite un réseau en arbre de taille quasi-exponentielle (chaque "degré" du DHT multiplie par deux le nombre de voisins.
Le but alors est d'arriver à construire un graphe permettant d'interroger de proche en proche (à l'aide de l'ensemble des pairs à qui on est "connecté" (en général pas plus de 64) en leur transmettant nos recherches de clés: le DHT est fait de telle façon qu'on aura après que les pairs auront interrogé chacun leurs propres pairs DHT, on aura transmise le moins possible de recherches en doublon vers les mêmes membres du DHT global via différents chemins. Le DHT autorise cependant des chemins multiples (les membres du DHT peuvent se déconnecter ou devenir inaccessibles ou surchargés). il crée donc un graphe global, très solide, stable, permettant d'interroger un réseau contenant des tas de données disparates. Un DHT en lui même ne permet pas de chercher un fichier précis, juste une empreinte numérique: tous les pairs connectés au DHT vont finalement interroger leurs pairs immédiats pour savoir s'ils connaissent une empreinte: les réponses seront retournées directement à celui qui l'a demandé par le chemin inverse (on peut avoir une réponse en doublon par pluseiuirs chemins mais il y en aura en général assez peu).
Ceci fait on a une liste d'hôtes sur Internet connaissant une clé et où on peut se connecter pour la rechercher explicitement: là on peut vérifier par exemple une identité réelle (faire un échange de clés PKI, vérifier des signatures publiques, des clés PGP, etc...), s'y connencter de façon sécurisée une fois l'identité vérifiée, puis demander ce qu'on voulait réellement avec l'empreinte recherchée au DHT: l'hôte dira s'il a réellement ce qu'on demandait avec cette empreinte anonyme. On peut aussi utiliser le DHT pour chercher un fichier non anonyme (uniquement par son empreinte numérique connue et publique de son contenu: c'est ce qui sert au partage de fichiers par exemple sur les Torrents où on cherche un fichier en général avec une empreinte SHA1 publique et on vérifie qu'on a bien le fichier qu'on voulait une fois connecté en demandant une clé plus longue mais plus sure comme une autre empreinte SHA512).
Le DHT peut servir à plain de choses, y compris à consolider une blockchain et éviter une prise de controle et la fragmentation du réseau en plusieurs grandes iles et plein d'ilots isolés car ce serait très compliqué de bloquer 100% de l'Internet (au pire un pays peut bloquer toutes les adresses internet des autres pays pour couper les ponts et créer un ilôt, mais c'est en fait très difficile à cause des VPN et des divers moyens de transmettre une adresse de routage ou un service mantdataire permettant l'interconnexion, et il y a des tas de procédés de cryptage qui empêche de voir ce qu'on fait sur une liaison privée transitant sur Internet par divers intermédiaires en fonction de la charge des routeurs, etc.)
Un DHT est donc assez générique. Avec lui on peut consolider n'importe quel protocole pair-à-pair, et même consolider le routage d'internet lui-même (les liens permettant à plusieurs réseaux distinct de localiser un chemin de routage par des annonces, qui sont elles-mêmes signées numériquement): en effet l'Internet lui-même, déjà IPv4 tout seul, est un réseau pair-à-pair, de même que le système DNS tout entier (tout fonctionne par des délégations de confiance et des chemins multiples possibles, visant à consolider la structure de sorte que si une des liaison du réseau plante, on pourra encore trouver des routes alternatives, les évaluer voir celles qui fonctionnent le mieux, provoquent le moins de doublons de transmission par les chemins alternatifs possibles).
Le concept du DHT est donc très précieux: il est difficile de casser le réseau et d'en isoler des parties car on retrouve facilement d'autres routes possibles. et le réseau DHT s'optimise tout seul (même si le DHT n'est pas très rapide à répondre: les chemins suivis dans les recherches du DHT font de nombreux "hops" mais en fait 64 hops parcourus chacun en ~50ms donne un temps de réponse très acceptable d'un peu plus de 3 secondes pour chercher quelquechose de précieux car unique dans un ensemble de données uniques comportant des millions (je devrais dire des milliards de milliards) d'éléments très différents de types différents connus sur des milliards d'objets connectés au Net, et cela demande très peu de bande passante car on n'est pas obligé d'interroger les milliards hôtes du réseau en se connectant sur chacun (ce qui prend là beaucoup plus de temps).
En principe le DHT est donc beaucoup plus rapide et fiable et ne nécessite aucune session permanente (pas besoin de TCP pour interconnecter ses pairs: les requêtes se font avec de tous petits datagrammes isolés: les membres du DHT qui reçoivent un datagramme peuvent ignorer directemetn sans rien faire d'autre si ce datagramme ne "matche" pas assez de bits communs avec les clés uniques recherchées et s'ils répondent alors, ils n'ont pas besoin d'attendre un accusé de réception de la part de celui qui cherchait la clé; ils peuvent cependant répondre plusieurs fois à une recherche si une réponse a été perdue en route et si les redemandes du même pair du DHT ne sont pas trop fréquentes, par exemple avec un minimum de 30 secondes à 1 minutes avant de retransmettre la même réponse)
Sur la base d'un DHT on peut donc construire même un protocole aussi fiable que TCP, avec très bonne garantie de livraison, même à travers un réseau géant très instable et très hétérogènes dans la vitesse et le débit de ses liaisons individuelles. Le DHT ne nécessite lui-même pas de cryptographie, n'importe qui peut y entrer (même un pirate voulant le saccager ne le saccagera pas, au contraire il le renforcera et on n'a pas besoin de savoir "à qui on parle" sur un DHT, tout mensonge finit par isoler et reléguer loin dans le réseau celui qui ne respecterait pas les règles normales permettant au DHT de se construire: le DHT détecte facilement le "spoofing" par exemple, c'est à dire des attaques de type "man-in-the-middle" car il contraint chaque membre à respecter les plus hauts degrés et sinon se verra relégué à plus forte distance et deviendra vite de plus en plus inaccessible et inutilisé: le DHT nécessite la confiance mais avant tout impose l'honnèteté, ce qui n'est pas facile à faire avec un P2P traditionnel y compris avec les protocoles de routage IP et d'annonces de routages possibles où quelqu'un peut encore facilement détourner du trafic et "faire taire" certaines parties du réseau IP).
Le DHT est une excellente brique en terme d'efficacité, il est très économe. On peut faire un DHT connecté à la fois en IPv4 et IPv6 ou tout autre protocole, on trouvera toujours un intermédiaire comprenant et adaptant les protocoles (bien que le DHT est normalement prévu pour être connecté en mode "datagramme", en général UDP, il peut avoir certains pairs utilisant des transits fiables comme TCP, ou un port série, un hub USB, un bus PCI, des adresses de mémoire partagée dans un hôte, peut importe, le DHT fonctionne sur un réseau très hétérogène).
0