Le modèle client-serveur est une architecture d’application distribuée qui partitionne la tâche ou la charge de travail entre les fournisseurs d’une ressource ou d’un service.
Dans l’architecture client-serveur, lorsque l’ordinateur client envoie une demande de données au serveur via Internet ou sur un réseau local, le serveur accepte le processus demandé et renvoie les paquets de données demandés au client.
Les clients ne partagent aucune de leurs ressources.
Des exemples de modèle client-serveur sont le courrier électronique, le World Wide Web, etc.
Cet article vous explique ce qu’est l’architecture client-serveur et comment cela fonctionne avec quelques exemples.

Table des matières
Le modèle ou architecture client-serveur
Fonctionnement du modèle client-serveur
L’image ci-dessous montre un schéma de l’architecture client-serveur.
Au centre, le serveur, celui qui possède les données et informations et qui répond aux demandes des clients.
Les clients sont des utilisateurs avec un PC, Smartphone ou tout autre appareil.
Dans ce dernier une application permet d’effectuer la connexion au serveur pour obtenir en retour les données.
C’est donc une architecture centralisé.
Voici le fonctionnement général :
- Le serveur ouvre un (ou plusieurs) port réseau en écoute
- Le client avec son application se connecte à ce port via un protocole applicatif bien défini
- Lorsque le serveur accepte la connexion, il la traite bien répond à son tour
- Le client reçoit la réponse et traite les données en retour dans l’application
C’est par exemple ce qui se passe lorsque vous utilisez votre navigateur internet pour afficher un site WEB.
Le navigateur WEB se connecte au serveur WEB qui retourne le contenu de la page.
Enfin le navigateur internet se charge de l’afficher à l’écran de l’utilisateur.
C’est un modèle client/serveur.
Plus de détails : Comment fonctionnent les sites internet
Type d’architectures et niveaux
On distingue ensuite plusieurs types d’architectures qui se différencient par des niveaux.
Cela dépend en fait de l’infrastructure qui se trouve derrière le serveur et qui n’est pas visible du client.
Lorsqu’un serveur délivre par ses propres moyens les données au client, on parle d’une architecture à deux niveaux.
Si le client interroge par exemple une base de données ou autre un serveur, on parle d’architecture à trois niveaux.
Puis si deux se trouve derrière le serveur frontale, c’est une architecture à quatre niveaux.
Ainsi de suite.
Par exemple les solutions de CDN (content delivery network) pour les sites WEB fonctionnent à trois ou quatre niveaux.
Le CDN s’intercale entre le client et le serveur WEB. Il permet notamment de bénéficier d’un cache et peut offre un Firewall (WAF).
Terminaux clients et serveur d’application
Ici on a beaucoup parlé des serveurs sur internet dans le cas d’un serveur Web, serveur de mail, etc.
Mais il est tout à fait possible de faire tourner des applications sur un serveur et l’exécuter depuis un client.
On parle alors d’un serveur d’application.
Terminal Server de Microsoft permet cela ou encore les solutions Citrix (XenDesktop et XenApp).
Enfin le serveur peut-être un hôte virtuel dans un environnement virtualisé.
L’utilisateur peut avoir accès à un bureau complet Windows ou on peut publier l’application.
Dès qu’il lance l’icône du bureau, cela l’exécute sur le serveur d’application et non sur son poste client.
Le client, il peut alors s’agir d’un terminal, c’est à dire un simple écran avec une petite UC qui dès le démarrage se connecter au serveur d’application.
Il faut voir cela comme un PC allégé et très peu puissant puisque la majorité des calculs se font sur le serveur.
Il se présente alors sous la forme d’un boitier.
L’établissement de la connexion Client-serveur
Rien d’extraordinaire dans le cas d’une connexion client-serveur.
On retrouve donc le principe habituel :
- L’utilisateur lance une application sur le client qui cherche à se connecter au serveur
- L’application effectue une recherche DNS de l’adresse du serveur WEB.
- Le serveur DNS répond avec l’adresse IP du serveur WEB.
- L’application peut alors envoyer une requête au serveur avec un protocole de transport spécifique par exemple TCP ou UDP
- Le serveur reçoit la requête puis envoie une réponse avec les données demandées
Les avantages et inconvénients des architecture client-server
Avantages du modèle client-serveur:
- Système centralisé avec toutes les données en un seul endroit. C’est d’autant plus vrai pour les serveurs d’applications.
- La rentabilité nécessite moins de coûts de maintenance et la récupération des données est possible.
- La capacité du client et des serveurs peut être modifiée séparément.
Inconvénients du modèle client-serveur:
- Les clients sont sujets aux virus, chevaux de Troie et vers s’ils sont présents sur le serveur ou téléchargés sur le serveur.
- Les serveurs sont sujets aux attaques par déni de service (DOS).
- Les paquets de données peuvent être falsifiés ou modifiés pendant la transmission.
- Le phishing ou la capture des identifiants de connexion ou d’autres informations utiles de l’utilisateur sont courants et les attaques MITM (Man in the Middle) sont courantes.
Pour pallier aux problème d’attaques et mises hors ligne, les CDN peuvent aider car ils aident à répartir la charge étant donné que selon les emplacements géographiques on ne tombe pas sur le même serveur.
La solution P2P peut aider, elle est notamment utilisé par les botnets pour éviter leur démantèlement.