Une application distribuée est une application informatique dans laquelle les résultats sont obtenus par la coopération de plusieurs ordinateurs d'un réseau informatique. Un protocole de communication établit les règles selon lesquelles les ordinateurs communiquent et coopèrent.
L'architecture client/serveur est un modèle d'organisation d'une application distribuée dans laquelle les traitements sont effectués par l'exécution conjointe de deux logiciels différents et complémentaires placés sur des ordinateurs différents : le client et le serveur. Le client formule des requêtes, puis les transmets au serveur. Le serveur traite les demandes, puis envoie sa réponse au client. Le client affiche la réponse (par exemple, il présente le résultat à l'écran). Un protocole de communication établit le format des requêtes envoyées au serveur, et des réponses de celui-ci.
Dans l'architecture client-serveur les clients vont rechercher les informations stockées dans les serveurs. Dans l'architecture pair-à-pair (anglais peer-to-peer abrégé P2P) par contre les clients vont rechercher des informations stockées dans d'autres clients, et les serveurs jouent le rôle d'intermédiaires.
Les utilisations courantes des serveurs sont le serveur de fichiers, d'impression, de base de données, de courrier, ainsi que le serveur web, le serveur d'applications, le proxy ou le serveur de jeu.
Un serveur de fichiers (anglais file server) est utilisé pour le stockage et le partage de fichiers entre plusieurs clients. Un serveur d'impression est utilisé comme intermédiaire entre un ensemble de clients et un ensemble d’imprimantes, tandis qu'un serveur de base de données est utilisé pour stocker et manipuler des données contenues dans une ou plusieurs bases de données et partagées entre plusieurs clients.
Un serveur de courrier est utilisé pour stocker et transmettre du courrier électronique. Un serveur web stocke et manipule les pages d’un site Web et les transmets sur demande au client (voir navigateur web). Un serveur de jeu arbitre et suit l’évolution d’un jeu en mettant en communication les différents joueurs.
Un serveur d'applications effectue les traitements d’un ou plusieurs logiciels applicatif à architecture client/serveur. Un serveur mandataire (anglais proxy) reçoit des demandes, les contrôle, puis les transmet à d’autres serveurs.
Exemple d’utilisation sur Internet : l’application web Google fonctionne à l’aide d’environ 15 000 serveurs de bas de gamme divisés en grappes de 40 à 80 serveurs dans divers centres de traitement de données dans le monde.
L’auto-hébergement consiste pour un particulier à utiliser son ordinateur personnel comme serveur, et de le mettre à disposition par l'intermédiaire de sa connexion Internet personnelle. L'usager évite ainsi les frais dus à un contrat avec un hébergeur web. Il peut ainsi avoir son propre serveur web (LAMP, WAMP, ...) et, en utilisant un DNS dynamique (en), avoir son propre nom de domaine. Certains FAI font payer les adresses IP fixes, mais elles ne sont pas indispensables.
Le démarrage et l'exécution du logiciel qui traite les demandes se fait sans intervention humaine, il peut avoir lieu lors du démarrage de l'ordinateur (anglais boot), ou sur demande. Rien n'est affiché à l'écran et le logiciel est invisible (voir aussi daemon).
Un logiciel serveur donné peut co-opérer avec n'importe quel client qui utilise le même protocole. De même un logiciel client donné peut co-opérer avec n'importe quel serveur utilisant le même protocole.
Un serveur de fichiers répond à des demandes relatives à la création, le déplacement, la suppression, la lecture, la modification ou le verrouillage d'un fichier. Les fichiers sont stockés dans les mémoires de masse du serveur – la plupart du temps des disque durs – et manipulés selon les demandes des clients.
Les serveurs de fichiers sont souvent inclus dans les systèmes d'exploitation. CIFS est le protocole du serveur de fichier et d'impression inclus dans les systèmes d'exploitation Windows. NFS est un protocole courant des serveurs de fichiers des systèmes d'exploitation Unix. Samba est un serveur en protocole CIFS pour les systèmes d'exploitation Unix. FTP est un protocole de serveur de fichier très utilisé sur le réseau Internet.
Un NAS est un équipement matériel / logiciel clé en main prévu exclusivement pour servir de serveur de fichier. Les NAS reconnaissent plusieurs protocoles.
Un serveur d'impression répond à des demandes en rapport à des travaux d'impression numérique. Les documents sont placés dans des files d'attente, puis envoyés aux imprimantes (voir spooling).
Les demandes concernent la manipulation des files d'attente (une pour chaque imprimante) : lecture du contenu, ajout ou suppression de documents, mise en attente, priorités. Le serveur envoie automatiquement les documents un après l'autre à l'imprimante. Les documents peuvent subir des transformations de format en vue de les adapter aux caractéristiques de l'imprimante destinataire. PCL et PostScript sont des formats de données courant en impression numérique.
CIFS est le protocole des serveurs d'impression et de fichiers inclus dans les systèmes d'exploitation Windows. CUPS est un serveur d'impression courant sur les systèmes d'exploitation Unix. JetDirect est une gamme de serveurs d'impression sous forme d'une carte d'extension à poser dans les imprimantes Hewlett Packard.
Un serveur de base de données réponds à des demandes de manipulation de données stockées dans une ou plusieurs base de données. Il s'agit typiquement de demandes de recherche, de tri, d'ajout, de modification ou de suppression de données.
Le serveur de base de données fait partie d'un système de gestion de base de données (abréviation SGBD) — logiciel qui manipule une base de données — qui comporte un logiciel client et un logiciel serveur. Les demandes de manipulation de données sont souvent créées par un logiciel de gestion sous forme de requêtes en langage SQL, puis le client les transmet au serveur en utilisant un protocole propre au SGBD.
Oracle, Microsoft SQL Server ou MySQL sont des SGBD qui comportent un serveur de base de données.
Une application informatique en architecture trois tiers comporte typiquement un serveur de base de données (tiers 3) avec un serveur web (tiers 2) et un navigateur web (tiers 1). L'application hébergée par le serveur web est le client du serveur de base de données.
Un serveur de courrier réponds à des demandes d'acheminement de messages électroniques. Le serveur stocke les messages arrivés, et transmet les messages en partance au destinataire (un autre serveur de courrier). Un serveur de courrier répond également aux demandes de manipulation et de récupération des messages stockés.
SMTP est un protocole utilisé pour acheminer un message électronique entre un client et le serveur, aussi bien qu'entre un serveur et un autre serveur. POP est un protocole utilisé pour récupérer les messages stockés et les transmettre au client. IMAP est un protocole utilisé pour examiner et manipuler les messages stockés à partir d'un client.
Les messages en partance sont souvent placés dans des files d'attente, et envoyés groupés à intervalles réguliers (voir spooling).
Un webmail est une application placée sur un serveur web, qui agit comme un client sur un serveur de courrier.
Un serveur web répond à des demandes de consultation de documents tels que ceux du World wide web. Chaque consultation d'un nouveau document hypertexte par parcours d'un hyperlien dans le logiciel client (la plupart du temps un navigateur web) provoque l'envoi d'une nouvelle demande. Chaque demande peut être envoyée à un serveur différent.
En réponse à une demande, le serveur peut envoyer un document qui est stocké en tant que fichier dans les mémoires de masse du serveur ou exécuter un traitement puis envoyer le résultat sous forme d'un document. HTTP et HTTPS sont les protocoles des serveurs web et HTML est le format de fichier prévu à cet effet.
Apache est un serveur web pour les systèmes d'exploitation Unix et Windows. Internet Information Services (abrégé IIS) est un serveur web inclus dans les systèmes d'exploitation Windows.
Une application web est un logiciel applicatif composé d'un ensemble de traitements qui créent des documents instantanés suite à la réception de demandes de consultation. Le webmail, le wiki et le weblog sont des applications web.
Le serveur fait partie d'un logiciel de jeu en ligne multijoueur en architecture client-serveur. Il répond à des demandes de diffusion des opérations effectuées par chaque joueur. Le serveur valide les opérations de chaque joueur, arbitre le jeu puis transmet les évolutions du jeu aux autres joueurs.
Le serveur de jeu stocke l'état du jeu en mémoire et l'entretient. Une copie de l'état du jeu est envoyée aux joueurs qui entrent dans la partie.
Lors de la réception d'une demande — opération effectuée par un joueur — le serveur effectue divers traitements en vue de contrôler la conformité de l'opération par rapport aux règles du jeu puis il effectue les modifications nécessaires sur l'état du jeu qu'il stocke en mémoire. Le serveur envoie ensuite aux différents clients la liste des évolutions effectuées sur l'état du jeu. Chaque client entretient sa propre copie de l'état du jeu.
Le protocole est différent pour chaque jeu en ligne et dépend de la vitesse d'évolution du jeu. Dans un jeu d'action comme Quake ou Half-Life le protocole est adapté à une évolution très rapide. Dans un jeu sur navigateur web les protocoles sont ceux du web et le serveur est une application web.