- JXMobile
-
Pair à pair
Pour les articles homonymes, voir P2P (homonymie).Le pair-à-pair (traduction de l'anglicisme peer-to-peer, souvent abrégé « P2P »), est un modèle de réseau informatique. Il s'oppose au modèle client-serveur. Le partage de fichiers en pair à pair est traité dans un article à part entière.
Sommaire
Principe général
Les systèmes pair-à-pair permettent à plusieurs ordinateurs de communiquer via un réseau, de partager simplement des objets – des fichiers le plus souvent, mais également des flux multimédia continus (streaming), le calcul réparti, un service (comme la téléphonie avec Skype), etc. sur Internet.
Le pair-à-pair a permis une décentralisation des systèmes, auparavant basés sur quelques serveurs, en permettant à tous les ordinateurs de jouer le rôle de client et serveur (voir client-serveur). En particulier, les systèmes de partage de fichiers permettent de rendre les objets d'autant plus disponibles qu'ils sont populaires, et donc répliqués sur un grand nombre de nœuds. Cela permet alors de diminuer la charge (en nombre de requêtes) imposée aux nœuds partageant les fichiers populaires, ce qui facilite l'augmentation du nombre de nœuds et donc de fichiers dans le réseau. C'est ce qu'on appelle le passage à l'échelle.
Illustration de réseaux client-serveurs et pair-à-pair. Un réseau de type client-serveur. Un réseau pair-à-pair. L'utilisation d'un système pair-à-pair nécessite pour chaque nœud l'utilisation d'un logiciel particulier. Ce logiciel, qui remplit alors à la fois les fonctions de client et de serveur, est parfois appelé servent (de la contraction de « serveur » et de « client », due à Gnutella), ou plus communément mais de façon réductrice, « client ». C'est là l'origine du terme pair (de l'anglais : peer) que l'on trouve dans pair-à-pair : les communications et les échanges se font entre des nœuds qui ont la même responsabilité dans le système.
Le modèle pair-à-pair va bien plus loin que les applications de partage de fichiers. Il permet en effet de décentraliser des services et de mettre à disposition des ressources dans un réseau. Tout nœud d'un réseau pair-à-pair peut alors proposer des objets et en obtenir sur le réseau. Les systèmes pair-à-pair permettent donc de faciliter le partage d'informations. Ils rendent aussi la censure ou les attaques légales ou pirates plus difficiles. Ces atouts font des systèmes pair-à-pair des outils de choix pour décentraliser des services qui doivent assurer une haute disponibilité tout en permettant de faibles coûts d'entretien. Toutefois, ces systèmes sont plus complexes à concevoir que les systèmes client-serveur. Des propositions utilisant le modèle pair-à-pair sont applicables à plus ou moins long terme pour ne plus utiliser de serveurs, entre autres pour :
- les DNS;
- la mise à disposition de logiciels (distributions Linux comme la Mandriva, mises-à-jour Microsoft, World of Warcraft, etc.) ;
- diffuser des contenus multimédia (streaming);
- les logiciels de messagerie en ligne (skype).
L'application la plus connue actuellement reste cependant le partage de fichiers par le biais de logiciel à la fois client et serveur comme eDonkey/eMule (protocole originel eDonkey), FastTrack (utilisé par KaZaA), etc.
Toutefois, les systèmes pair-à-pair décentralisés ont plus de difficultés que les systèmes client-serveur pour diffuser l'information et coordonner l'interconnexion des nœuds, donc assurer des faibles délais aux requêtes. C'est pourquoi sont apparus des systèmes pair-à-pair qui imposent une structure entre les nœuds connectés, afin de garantir des délais de communication faibles : il s'agit des systèmes décentralisés structurés. Ces systèmes s'inspirent de structures de graphes pour interconnecter les nœuds. Ils ont ainsi pu se passer de serveurs pour assurer une répartition de la charge parmi les nœuds en terme :
- de trafic de contrôle reçu et envoyé par chaque nœud, ce qui revient à limiter le nombre de nœuds auxquels est connecté chaque nœud ;
- de nombre de requêtes transmis à un nœud ;
- de responsabilité pour l'accès aux objets partagées dans le réseau.
Enfin, ces systèmes permettent souvent d'utiliser un routage proche de celui du graphe dont ils s'inspirent, diminuant ainsi le nombre de messages de requêtes transitant dans le réseau.
Le pair-à-pair ne doit pas être confondu avec la notion de liaison point à point (Point-to-Point en anglais), ni avec le protocole point à point (PPP).
Applications
Le pair-à-pair ne s'est pas fait connaître en tant que principe mais par les applications qui ont pu émerger selon ce nouveau modèle de réseau.
Partage de fichiers
Article détaillé : Partage de fichiers en pair à pair.L'application la plus répandue du pair-à-pair est le partage de fichiers. L'avènement des connexions à Internet à haut débit (ADSL notamment) sans limite de temps a contribué à cet essor.
Chaque internaute est un pair du réseau et les ressources sont des fichiers. Chacun peut donc partager ses fichiers et télécharger les fichiers des autres. Ces systèmes s'avèrent très efficaces y compris quand il s'agit d'échanger de gros volumes de données.
Parmi les applications les plus utilisées, on peut distinguer BitTorrent et eMule.
Calcul distribué
Une seconde application destinée au grand public ou à la recherche mais toutefois moins répandue que le partage de fichier est la possibilité pour les internautes de mettre à disposition une partie de leur puissance de calcul.
Les ordinateurs d'aujourd'hui sont tellement puissants que la majeure partie du temps, une grande partie de leur processeur est disponible pour effectuer des calculs. Le projet BOINC a saisi cette opportunité pour créer un gigantesque parc informatique réparti dans le monde afin d'utiliser cette immense puissance de calcul totale pour effectuer des calculs trop complexes pour être réalisé dans un laboratoire.
Le projet BOINC demande donc au particulier de permettre l'usage de la puissance de calcul dont il n'a pas immédiatement besoin pour contribuer à la recherche sur le repliement de protéine (Folding@Home) et même la recherche d'intelligence extra-terrestre par analyse de spectre électromagnétique (SETI@home).
Systèmes de fichiers répartis
Articles détaillés : Système de fichiers distribué et Catégorie:Système de fichiers distribués.Autres applications
Le concept de pair-à-pair est également décliné dans d'autres logiciels tels que Skype, un logiciel de téléphonie.
Architectures logicielles
Les serveurs pair-à-pair fonctionnent dans la quasi-totalité des cas en mode synchrone : le transfert d'information est limité aux éléments connectés en même temps au réseau.
Ils peuvent utiliser le protocole TCP comme couche de transport des données (il fonctionne en duplex, la réception des données est donc confirmée et leur intégrité est assurée).
En revanche, certaines utilisations comme le continu (streaming) nécessitent l'emploi d'un protocole plus léger et plus rapide, comme UDP, bien que moins fiable, quitte à assurer eux-mêmes l'intégrité des données transmises. UDP est aussi le protocole le plus utilisé pour transmettre des messages entre serveurs dans les systèmes en partie centralisés.Les systèmes pair-à-pair se répartissent en plusieurs grandes catégories, selon leur organisation.
Architecture centralisée
Dans cette architecture, un client (un logiciel utilisé par les membres) se connecte à un serveur qui gère les partages, la recherche, l'insertion d'informations, bien que celles-ci transitent directement d'un utilisateur à l'autre.
Certains considèrent que de telles architectures ne sont pas pair-à-pair, car un serveur central intervient dans le processus. D'autres leur répondent que les fichiers transférés ne passent pas par le serveur central. C'est la solution la plus fragile puisque le serveur central est indispensable au réseau. Ainsi, s'il est supprimé, à la suite d'une action en justice par exemple, comme ce fut le cas avec Napster et Audiogalaxy, tout le réseau s'effondre.
Architecture décentralisée
Une telle architecture permet de résister à de telles attaques puisque le logiciel client ne se connecte pas à un unique serveur mais à plusieurs. Le système est ainsi plus robuste mais la recherche d'informations est plus difficile. Elle peut s'effectuer dans des systèmes décentralisés non-structurés, comme Gnutella, où la recherche nécessite un nombre de messages élevé, proportionnel au nombre d'utilisateurs du réseau (et exponentiel suivant la profondeur de recherche). Dans les systèmes décentralisés structurés, une organisation de connexion est maintenue entre les nœuds. La plupart est basée sur les table de hachage distribuées, permettant de réaliser des recherches en un nombre de messages croissant de façon logarithmique avec le nombre d'utilisateurs du réseau, comme CAN, Chord, Freenet, GNUnet, Tapestry, Pastry et Symphony.
Une autre solution a été envisagée, consistant en l'utilisation de « super-nœuds », éléments du réseau choisis en fonction de leur puissance de calcul et de leur bande passante, réalisant des fonctions utiles au système comme l'indexation des informations et le rôle d'intermédiaire dans les requêtes. Cette solution, rendant le système un peu moins robuste (les cibles à « attaquer » dans le réseau pour que le système devienne inopérant sont moins nombreuses que dans un système de type Gnutella, par exemple), est employée dans les systèmes FastTrack, comme KaZaA. Les nœuds du réseau peuvent alors devenir super-nœuds et vice-versa, selon les besoins du système ou de leur propre choix.
De la même façon, le système eDonkey2000 utilise des serveurs fixes, plus vulnérables car moins nombreux et moins souple que les super-nœuds FastTrack.
Protocoles réseaux
Les connexions se font par TCP/IP, le plus utilisé sur internet, qui intègre un contrôle de réception des données, ou par UDP lorsque l'application choisit de contrôler elle-même la bonne réception des données.
Plusieurs systèmes pair à pair sont proposés sous forme de réseau abstrait, même s'ils ne sont pas tous, en 2009, très répandus. Les applications proposées à l'utilisateur final fonctionnent à l'aide de tels protocoles réseaux.
Parmi eux, on trouve Mnet, Chord, Tapestry, Freenet, I2P (utilisé par iMule), Tor ou Koorde.
Sécurité
La plupart des questions de sécurité dans les réseaux P2P est dû au partage de fichier. Les utilisateurs recherchent :
- L'anonymat (afin d'éviter d'éventuelles poursuites judiciaires)
- Le brouillage du protocole (afin d'éviter les filtrages FAI)
- Le chiffrement (on peut savoir qui je suis mais pas ce que je télécharge)
Afin d'assurer l'anonymat ou la furtivité des utilisateurs, un ou plusieurs de ces concepts sont mis en pratique dans des applications pair-à-pair :
Routage aléatoire
Les requêtes passent par plusieurs nœuds afin de rendre leur traçage difficile. Ces nœuds faisant transiter les informations sont d'autres utilisateurs du réseau, différents fragments d'un même fichier passent donc par différentes machines, et y sont recopiés (mécanisme de cache), avant de parvenir à l'ordinateur final ayant demandé le téléchargement.
Ce mécanisme de cache est souvent utilisé conjointement avec le chiffrement des données de façon à ce que les intermédiaires ne puissent pas voir ce qui transite.
Ce procédé est mis en œuvre dans Freenet, I2P, Tor, stealthNet.
Réseaux de confiance : « Ami à ami »
Ce procédé est mis en œuvre dans WASTE, GNUnet, OneSwarm.
Chiffrement des échanges
Article détaillé : Cryptographie.Ce procédé est mis en œuvre dans Freenet, Ants, OFFSystem,stealthNet.
Évolution
Décentralisation
On peut constater, dans l'évolution des technologies pair-à-pair une tendance à toujours plus de décentralisation. Illustration avec les logiciels de partage de fichiers connus :
Technologie Ressources Recherche de ressources Recherche de pairs Multi-source Architecture client-serveur centralisé centralisé centralisé non Napster (1999) décentralisé centralisé centralisé non Direct Connect (?) décentralisé décentralisé centralisé non eDonkey (2003) décentralisé semi-centralisé semi-centralisé oui Kademlia (?) décentralisé décentralisé décentralisé oui Instantanéité d'accès à la ressource
Un des avantages de l'accès client-serveur est l'instantanéité avec laquelle on obtient la ressource. C'est pourquoi le téléchargement par http, ftp ou via les newsgroups sont encore utilisés bien qu'étant des systèmes typiquement client-serveur.
L'usage des logiciels de transfert de fichiers, de l'époque de Napster à celle de BitTorrent, est d'attendre l'arrivée du fichier de plusieurs heures à plusieurs jours. Plusieurs initiatives tentent de combler cette lacune. C'est par exemple le cas de Freenet mais aussi de Wuala qui veut rendre l'accès aux fichiers stockés en réseau aussi rapide que l'accès à un fichier local.
Optimisation par proximité géographique
Proactive network Provider Participation for P2P ou P4P est un groupe de travail qui vise au développement de technologies permettant d'optimiser les échanges pair-à-pair. Ils partent du principe que des pairs proches géographiquement sont plus à même d'échanger des données.
Remarque : Le P3P, malgré son nom, n'a rien à voir avec le P2P et n'en est pas une évolution. Il s'agit de la Platform for Privacy Preferences : une initiative du W3C qui vise à améliorer la sécurité des échanges sur le Web.
Évolution de la recherche scientifique
Le pair-à-pair et, de façon plus générale les systèmes distribués, sont le sujet de nombreuses recherches universitaires en informatique.
Terminologie
Pour traduire « peer-to-peer » en français, « poste-à-poste » est la recommandation officielle faite à la fois en France par la Commission générale de terminologie et de néologie[1] et au Québec par l'OQLF[2], ces organismes reconnaissant cependant tous les deux l'expression « pair-à-pair » comme synonyme. L'anglicisme reste néanmoins très utilisé en français.
D'autre part, l'OQLF recommande les traits d'union pour « poste-à-poste » et « pair-à-pair » lorsqu'ils sont utilisés comme substantifs, mais pas lorsqu'ils ont une valeur adjectivale ; l'organisme rappelle également que ces expressions sont invariables[2].
- Le terme de système pair-à-pair permet de nommer un ensemble constitué d'utilisateurs (en nombre pas forcément défini, ni fixe, mais plutôt de manière générale), du protocole qui leur permet de communiquer (Gnutella, BitTorrent, CAN, etc.), et du fonctionnement du protocole entre ces machines ;
- le terme de réseau pair-à-pair permet de désigner les machines et leur interconnexion à un moment donné, avec un nombre défini de machines / utilisateurs ;
- le terme de nœud permet de désigner le logiciel présent sur une machine, donc souvent un utilisateur (mais éventuellement plusieurs) ;
- le terme de lien désigne une connexion (souvent TCP) entre deux nœuds ;
- le terme d'objet désigne ce qui est partagé dans un système pair-à-pair.
Liste de logiciels pair à pair
BitTorrent
~ ABC ~ Azureus ~ BitComet ~ BitTornado ~ BT++ ~ Deluge ~ eXeem ~ KTorrent ~ mlDonkey ~ Opera ~ The Pirate Bay ~ PTC ~ qBittorrent ~ Shareaza ~ TorrentStorm ~ Transmission ~ µTorrent ~ WinMobile Torrent ~ Xtorrent
Gnutella
Limewire et son clone Frostwire ~ Shareaza ~ Acquisition (Mac) ~ BearShare ~ Cabos (Mac : Aquisition + Limewire) ~ Gnucleus ~ mlDonkey ~ Morpheus ~ mlmac ~ Poisoned ~ PeerCast ~ Phex ~ Swapper ~ XoloX ~ Mutella ~ IMesh
Napster
OpenNap ~ mlmac ~ Poisoned ~ lopster
FastTrack
Kazaa ~ Grokster arrêté par la MPAA et la RIAA ~ iMesh ~ gIFT ~ mlmac ~ Poisoned
eDonkey2000
eDonkey2000 (regroupement eDonkey2000 - Overnet) ~ mlDonkey ~ eMule ~ xMule ~ aMule ~ Shareaza ~ lMule ~ lphant
MP2P
Freenet
Frost - Le logiciel qui permet d'utiliser les forums de Freenet. ~ Fuqid - Pour publier des sites web. ~ Freemail
GNUnet
GNUnet projet de la Free Software Foundation.
Direct Connect
Direct Connect ~ DC++ ~ Zion++ ~ BlackDC ~ oDC ~ rmDC ~ DC Pro
Ares Galaxy
~ Ares (Galaxy ou Lite) ~ FileCroc
Autres systèmes pair-à-pair chiffrés et/ou partiellement anonymes
~ ANts P2P ~ stealthNet ~ Filetopia ~ Gigatribe ~ MUTE (Partage de fichier uniquement) ~ Nodezilla (Multi fonctions) ~ OFFSystem ~ Spider ~ Tor (réseau) (Grand projet issu de l'EFF. Navigation web, etc.) ~ Winny (Stoppé - Partage de fichier uniquement. A donné naissance à Share). ~ RetroShare (En développement actif)
Autres systèmes
AllPeers ~ Alpine ~ bwa ~ CAN ~ Carracho ~ Chord ~ Dexter ~ Evernet ~ FreePastry ~ GPU ~ Groove ~ Hotwire ~ JXTA ~ JXMobile ~ KoffeePhoto ~ Kademlia ~ MojoNation ~ OFFsystem ~ P2PS ~ Pastry ~ Pichat ~ PixVillage ~ Rshare ~ Scribe ~ Soulseek ~ Swarmcast ~ Symphony ~ Tapestry ~ TribalWeb ~ Wambo ~ WinMX ~ Hotline et KDX
Annexes
Bibliographie
- (en) Ralf Steinmetz, Peer-to-peer systems and Applications, éd. Spinger (ISBN 3-540-29192-X)
Notes et références
- ↑ Vocabulaire de l'informatique, JORF n°111 du 13 mai 2006 (p. 7072, texte n° 130), NOR CTNX0609259X, sur Légifrance.
- ↑ a et b Entrée « Peer-to-peer » dans le Grand dictionnaire terminologique, OQLF
Voir aussi
Articles connexes
- Calcul parallèle
- Grille informatique
- (en) The World of Peer-to-Peer, un wikibook.
- Étude et utilisation des technologies pair-à-pair
Liens externes
- Conférences
- (en)The IEEE International Conference on Peer-to-Peer Computing
- (en)"Peer-to-Peer Paradigm" Minitrack in Americas Conference on Information Systems
- (en)CoNEXT (ACM SIGCOMM), Conference on emerging Networking EXperiments and Technologies.
- Ateliers
- (en)International Workshop on Peer-to-Peer Systems
- (en)The International Workshop on Hot Topics in Peer-to-Peer Systems
- (en)Fifth International Workshop on Agents and Peer-to-Peer Computing
- International Workshop on Global and Peer-to-Peer Computing
- (en)International Workshop on Peer-to-Peer Knowledge Management
- Portail de l’informatique
- Portail sur Internet
Catégories : Partage de fichiers | Architecture logicielle
Wikimedia Foundation. 2010.