Le protocole client–serveur désigne un mode de transmission d'information (souvent à travers un réseau) entre plusieurs programmes ou processus : l'un, qualifié de client, envoie des requêtes ; l'autre, qualifié de serveur, attend les requêtes des clients et y répond[1],[2]. Le serveur offre ici un service au client.
Par extension, le client désigne souvent le terminal ou la machine sur lequel est exécuté le logiciel client, et le serveur, l'ordinateur sur lequel est exécuté le logiciel serveur. Les machines serveurs sont généralement dotées de capacités supérieures à celles des ordinateurs personnels en ce qui concerne la puissance de calcul, les entrées-sorties et les connexions réseau, afin de pouvoir répondre de manière efficace à un grand nombre de clients. Les clients sont souvent des ordinateurs personnels ou terminaux individuels (téléphone, tablette), mais pas systématiquement. Un serveur peut répondre aux requêtes de plusieurs clients : c'est le cas d'un serveur d'impression contrôlant le partage d'imprimantes, des sites d'achat en ligne ou des jeux massivement multijoueurs ; mais parfois, client et serveur sont sur la même machine : c'est le cas pour le système d'affichage X Window[2].
Il existe une grande variété de serveurs et de clients en fonction des besoins ou services à fournir : un serveur Web publie des pages Web demandées par des navigateurs Web ; un serveur de messagerie électronique transmet les courriels à des clients de messagerie ; un serveur de fichiers permet de partager des fichiers sur un réseau aux machines qui le sollicitent ; un serveur de base de données permet aux clients de récupérer des données stockées dans une base de données, etc.
Le client et le serveur doivent bien sûr utiliser le même protocole de communication au niveau de la couche transport. Depuis 1978, la communication de tous les systèmes informatiques en réseau est régie par une norme, le modèle OSI.
Bien que souvent confondues, les notions de « programme client » (ou processus client) et de programme serveur sont différentes de celles de « machine client ». En effet, il est courant qu'un seul ordinateur exécute à la fois un ou plusieurs programmes serveur et un ou plusieurs programmes client.