Une application peer-to-peer (P2P) permet à un périphérique d'agir à la fois en tant que client et serveur dans une même communication, comme le montre la figure. Dans ce modèle, chaque client est un serveur et chaque serveur un client. Les deux peuvent lancer une communication et sont considérés comme égaux dans le processus de communication. Cependant, les applications P2P nécessitent que chaque périphérique final fournisse une interface utilisateur et exécute un service en arrière-plan. Lorsque vous lancez une application P2P spécifique, le périphérique charge l'interface utilisateur et les services d'arrière-plan. Les périphériques peuvent ensuite communiquer directement.

Certaines applications P2P utilisent un système hybride dans lequel le partage des ressources est décentralisé, mais les index pointant vers l'emplacement des ressources sont stockés dans un répertoire centralisé. Dans un système hybride, chaque homologue accède à un serveur d'index pour obtenir l'emplacement d'une ressource stockée chez un autre homologue. Le serveur d'index permet également de connecter deux homologues, mais une fois ceux-ci connectés, la communication s'effectue entre les deux homologues sans autre communication vers le serveur d'index.

Les applications P2P peuvent être utilisées sur des réseaux P2P, des réseaux client/serveur et via Internet.