La découverte par les pairs et la découverte des ressources (les dossiers dans votre cas) sont deux choses différentes.
Je suis plus familier avec JXTA mais tous les réseaux peer to peer fonctionnent sur les mêmes principes de base.
La première chose à faire est la découverte par les pairs.
Découverte par les pairs
La plupart des réseaux p2p sont des réseaux "seedés" : au début, un pair se connectera à une adresse bien connue (codée en dur) pour récupérer une liste de pairs en activité. Il peut s'agir d'un amorçage direct, comme la connexion à dht.transmissionbt.com
comme mentionné dans un autre article, ou l'ensemencement indirect, comme cela se fait habituellement avec JXTA, où l'homologue se connecte à une adresse qui ne fournit qu'une liste en texte brut des adresses réseau des autres homologues.
Une fois que la connexion est établie avec le(s) premier(s) pair(s), le pair qui se connecte effectue une découverte des autres pairs (en envoyant des requêtes) et maintient une table de ceux-ci. Comme le nombre d'autres pairs peut être énorme, le pair qui se connecte ne maintient qu'une partie d'une table de hachage distribuée (DHT) des pairs. L'algorithme permettant de déterminer quelle partie de la table le pair qui se connecte doit maintenir varie en fonction du réseau. BitTorrent utilise Kademlia avec des identifiants/clés de 160 bits.
Découverte des ressources
Une fois que quelques pairs ont été découverts par le pair qui se connecte, ce dernier leur envoie quelques demandes de découverte de ressources. Les liens magnétiques identifient ces ressources et sont construits de telle manière qu'ils constituent une "signature" pour une ressource et garantissent qu'ils identifient de manière unique le contenu demandé parmi tous les pairs. L'homologue qui se connecte envoie alors une demande de découverte du lien magnétique/de la ressource aux homologues qui l'entourent. La DHT est construite de telle manière qu'elle aide à déterminer quels pairs doivent être sollicités en premier pour la ressource (pour en savoir plus, lisez Kademlia dans Wikipedia). Si le pair demandé ne détient pas la ressource demandée, il "transmet" généralement la requête à d'autres pairs récupérés dans sa propre DHT.
Le nombre de "sauts" sur lesquels la requête peut être transmise est généralement limité ; 4 est un nombre habituel avec les réseaux de type JXTA.
Lorsqu'un pair détient la ressource, il répond avec tous ses détails. Le pair qui se connecte peut alors se connecter au pair qui détient la ressource (directement ou via un relais - je n'entrerai pas dans les détails ici) et commencer à la récupérer.
Les ressources/services dans les réseaux P2P sont pas directement attachés à des adresses réseau : ils sont distribués et c'est là toute la beauté de ces réseaux hautement évolutifs.
3 votes
Est-ce même pertinent pour la programmation ?
2 votes
En rapport : Comment le protocole PEX (liens magnétiques) trouve-t-il son premier IP ?