Le modèle ou architecture client-serveur

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.

Le modèle ou architecture client-serveur

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

Le modèle ou architecture client-serveur

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
Le modèle ou architecture client-serveur

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.

Les types d'architectures client-serveur avec les niveaux

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

Client-serveur avec un CDN pour un serveur WEB

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'architecture de XenDesktop qui permet de publier des applications et bureaux Windows

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.

Un terminal virtualisé

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:

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.

Tags: