Le pair-à-pair. ou système pair à pair. (en anglais , souvent abrégé « P2P ») est un modèle d'échange en réseau où chaque entité est à la fois client et serveur, contrairement au modèle client-serveur. Les termes « pair », « nœud » et « utilisateur » sont généralement utilisés pour désigner les entités composant un tel système.. Un système pair à pair peut être partiellement centralisé (une partie de l'échange passe par un serveur central intermédiaire) ou totalement décentralisé (les connexions se font entre participants sans infrastructure particulière). Il peut servir entre autres au partage de fichier, au calcul distribué ou à la communication.

Principe général La particularité des architectures pair-à-pair réside dans le fait que les échanges peuvent se faire directement entre deux ordinateurs connectés au système, sans transiter par un serveur central. Il permet ainsi à tous les ordinateurs de jouer directement le rôle de client et de serveur (voir client-serveur). On appelle souvent nœud les postes connectés par un protocole réseau pair à pair. Un réseau pair à pair est alors l'interconnexion de nœuds créés à un moment donné selon le protocole pair-à-pair choisi, tel Internet ou le Bluetooth.

Les systèmes pair à pair permettent à plusieurs ordinateurs de communiquer via un réseau, en y partageant simplement des objets – des fichiers le plus souvent, mais également des flux multimédias continus (streaming), le calcul réparti, un service comme la téléphonie sur IP. L'arrivée et le départ des nœuds sont dynamiques : les nœuds ne sont pas définis une fois pour toutes au démarrage du système.

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 ) 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.

En particulier, certains systèmes pair à pair rendent les objets d'autant plus accessibles qu'ils sont populaires, et donc répliqués sur un grand nombre de nœuds. Cela permet alors, pour ces objets populaires (par exemple un fichier partagé un grand nombre de fois), de diminuer la charge en nombre de requêtes de recherches reçues par les nœuds du système, ce qui facilite l'augmentation du nombre de nœuds participants et donc d'objets accessibles dans le réseau. C'est ce qu'on appelle le passage à l'échelle. Le modèle pair à pair va bien plus loin que les applications de partage de fichiers : il permet de décentraliser des services et de mettre à disposition des ressources dans un réseau, nommées objets. Tout nœud d'un réseau pair à pair peut alors proposer des objets et en obtenir via ce réseau.

Les systèmes pair à pair permettent donc de faciliter le partage d'informations. L'absence d'infrastructure stable dans ces systèmes rend plus difficile la censure ou les attaques légales ou pirates. En effet, un système pair à pair est composé d'un réseau dynamique de nœuds participants, c'est-à-dire qu'ils arrivent et repartent tout en permettant au réseau de rester fonctionnel. Il faudrait donc cibler en même temps une part importante de ces nœuds pour empêcher les autres nœuds participants de maintenir l'interconnexion entre les nœuds. La part de nœuds à cibler dépend du protocole utilisé. Ces atouts font des systèmes pair à pair des outils de choix pour décentraliser des services qui doivent être dynamiques, assurer la disponibilité des ressources tout en permettant de faibles coûts d'entretien. Toutefois, ces systèmes sont plus complexes à concevoir que les systèmes client-serveur.

Par ailleurs, des usages de systèmes pair à pair font apparaître que certains nœuds sont bien plus utilisés que les autres, soit parce qu'ils pourvoient une part importante des ressources partagées, soit parce qu'ils participent à une part importante des requêtes d'échanges de données. Leur déconnexion rendrait donc le système pair à pair moins efficace.

Des propositions utilisant le modèle pair à pair ont été faites pour ne plus utiliser de serveurs, entre autres pour : le multijoueurs local sur les consoles Nintendo 3DS ; les DNS (Distributed DNS) ; la mise à disposition de logiciels (distributions Linux comme la Mandriva, le système de mises à jour Microsoft Avalanche, World of Warcraft, etc.) ; diffuser des contenus multimédias (streaming) ; les logiciels de messagerie en ligne (Tox) ; la téléphonie (les premières versions de Skype).

L'application la plus connue actuellement reste cependant le partage de fichiers par le biais de protocoles comme Bittorent, eDonkey, FastTrack (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 mieux répartir la charge entre les nœuds et optimiser ainsi : le trafic de contrôle reçu et envoyé par chaque nœud, ce qui revient à limiter le nombre de voisins auquel est connecté chaque nœud ; le nombre de requêtes transmises à un nœud ; la répartition de responsabilité pour l'accès aux objets partagés 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 est distinct de la notion de liaison point à point (Point-to-Point en anglais) et du 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

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 limites de temps a contribué à cet essor. Le principe réparti de ces systèmes permet de tirer parti de l'asymétrie des connexions, et donc de télécharger à débit important un fichier à partir de plusieurs sources à débit limité.

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, µTorrent et eMule...

Les protocoles P2P peuvent aussi être utilisés pour le partage de mises à jour de logiciels (distribuées sous forme de fichiers de mises à jour), par exemple le service de mise à jour de Windows 10 pouvant récupérer et distribuer une mise à jour via le réseau local et via internet permettant de limiter le débit de données nécessaire à la distribution des mises à jour depuis les serveurs Microsoft. Le client Steam dispose d'une fonctionnalité similaire, permettant de récupérer une mise à jour depuis un autre client connecté sur le réseau local, limitant le volume de données échangées sur la connexion internet.

Synchronisation des données Dans le cadre des grands systèmes informatisés, la synchronisation entre les différents serveurs peut-être problématique le flux d'information pouvant être trop important pour pouvoir être géré par un serveur unique. Certains systèmes procèdent à une synchronisation de proche en proche entre les différentes nodes, par exemple le logiciel "Location Aware Delivery", utilisé en interne par Meta (ex Facebook), permettant la synchronisation des fichiers de configuration serveurs directement d'un serveur à un autre, sans devoir être téléchargés depuis un serveur central.

Calcul distribué

Le P2P ne doit pas être confondu avec le calcul distribué : Un réseau de calcul distribué n'a pas nécessairement recours à un protocole P2P.

Le calcul distribué est destiné au grand public ou à la recherche: il s'agit de la possibilité pour les internautes de mettre à disposition une partie de leur puissance de calcul. Par définition, on pourra parler de réseau de calcul distribué P2P si et seulement si, dans le cadre du calcul effectué, les clients ont la possibilité de communiquer directement entre eux (par exemple pour le partage d'un résultat ou la soumission d'un nouveau calcul), sans passer par un serveur dédié. Ce mode de fonctionnement est théorique, il n'existe pas d'application grand publique connue de réseau de calcul distribué usant d'une topologie P2P.

Exemple de confusion : Le projet BOINC

Les réseaux de calcul distribués les plus connus comme SETI@home (recherche extra-terrestre), Folding@Home (repliement des protéines) du projet BOINC font usage de la contribution des machines des internautes, limitant les coûts pour le laboratoire. Toutefois les clients ne communiquent jamais entre eux, leur contribution consistant à recevoir un morceau de calcul à effectuer depuis un serveur central appartenant au projet, pour renvoyer le résultat du calcul à ce serveur. Le serveur se chargera d'analyser le résultat du calcul, de planifier, puis de renvoyer un nouveau calcul au client. Il s'agit d'une relation purement client–serveur, cela ne relève donc pas du P2P.

Blockchain

vignette Dans le cadre du minage de cryptomonnaie, un réseau de machines va se voir attribuer un défi afin de valider la création d'un nouveau bloc de la blockchain. Par exemple dans le cadre de la preuve de travail, il s'agira de résoudre un calcul complexe dont la présentation du résultat permettra aux pairs de prouver une dépense d'énergie et se voir autoriser la création d'un nouveau bloc. Il n'y a pas de serveur dédié à l'émission ni à la réception du défi, les échanges ont tous lieu entre pairs.

Systèmes de fichiers répartis

Autres applications Le concept de pair à pair est également décliné dans d'autres logiciels tels que TeamViewer, Jami. Depuis son rachat par Microsoft, le logiciel de téléphonie Skype ne l'utilise plus.

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 (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 elles-mêmes l'intégrité des données transmises. UDP est aussi le protocole le plus utilisé pour transmettre des 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.