Architecture Client-Serveur
Architecture Client-Serveur
Architecture client-serveur
1
1. Introduction
L'architecture client-serveur est une pierre angulaire des systèmes informatiques modernes.
Elle repose sur un modèle structuré qui répartit les tâches et responsabilités entre les composants
du système, permettant une communication fluide et efficace. Ce travail explore les concepts
fondamentaux, les modèles architecturaux et la répartition des responsabilités entre le client et le
serveur. Il aborde également les avantages et les limites des différents modèles, notamment le 2-
tiers, le 3-tiers et les architectures avancées basées sur les micro-services, tout en illustrant chaque
aspect par des exemples concrets. Ces éléments visent à mettre en lumière la pertinence et la
diversité des approches dans le développement d'applications fiables et évolutives.
2
2. Concept clé de l’architecture client-serveur
2.1. Définition de l'architecture client-serveur
o Le client
Le client, actif ou esclave, initie les communications en envoyant une requête vers le serveur.
Ce sont les postes d'où proviennent les demandes. Ils peuvent être individuels ou multiples et sont
actifs dans le processus, initiant les communications en envoyant des requêtes vers le serveur. Il
attend ensuite la réception des réponses pour continuer sa tâche. Un client a accès à un portail
central qui centralise les différentes ressources ou services fournis par le serveur.
o Le serveur
Il répond aux demandes des clients en fournissant la ressource demandée ou en exécutant les
actions spécifiées. Le serveur, considéré comme passif ou maître, se tient prêt à réagir aux
sollicitations des clients. Il traite les demandes reçues et renvoie les informations nécessaires. Ce
dernier peut avoir différentes spécialités, avec la capacité de gérer les demandes de plusieurs clients
en même temps, assurant ainsi une utilisation efficace des ressources réseau : il peut gérer des
applications, modifier des données, stocker des fichiers, piloter des terminaux ou traiter des
courriels.
Dans l’architecture client-serveur, une machine comme un ordinateur physique peut être à la
fois client et serveur. Le fait qu’il envoie ou reçoive les requêtes de services et de ressources
détermine son rôle dans le réseau.
Le client et le serveur communique par message (requête-réponse). Une requête représente les
paramètres d’appels, de spécification du service requis. La réponse quant - à elle fait office de
résultat, d’indicateur éventuel d’exécution ou d’erreur.
3
2.2.1. Requête
Une requête est une demande envoyée par le client (par exemple, un navigateur web ou une
application) au serveur. Cette demande précise les informations ou services dont le client a besoin.
Les éléments constitutifs d'une requête incluent généralement :
o une méthode : (par exemple, GET, POST, PUT en HTTP) qui indique l'action à effectuer.
o En-têtes : qui transportent des métadonnées (par exemple, format accepté, authentification,
etc.).
o Un corps (facultatif) : qui contient des données supplémentaires (par exemple, dans une
soumission de formulaire).
2.2.2. Réponse
Une réponse est le message renvoyé par le serveur au client après avoir traité la requête. Elle
contient les informations ou résultats demandés. Les composants typiques d'une réponse incluent :
o Un code de statut : indiquant le résultat du traitement (par exemple, 200 pour succès, 404 pour
ressource non trouvée, etc.).
o En-têtes : transportant des informations sur la réponse (type de contenu, taille, etc.).
o Un corps (facultatif) : contenant les données demandées, comme une page HTML, des fichiers
JSON ou d'autres formats.
o Le client envoie une requête au serveur pour demander une action spécifique (exemple :
récupérer une page web ou soumettre un formulaire).
o Cette requête est souvent transmise via un protocole de communication, comme HTTP ou
HTTPS.
4
b) Traitement par le serveur :
o Il exécute les processus nécessaires (par exemple, effectuer un calcul, interroger une base de
données, etc.).
c) Réponse du serveur :
o Cette réponse contient généralement les données ou informations demandées (comme une page
web au format HTML ou un fichier).
d) Boucle itérative :
o Ce cycle peut se répéter chaque fois que le client a besoin d'une nouvelle ressource ou d'une
action supplémentaire.
TCP et IP sont des protocoles distincts qui permettent ensemble de garantir la transmission
effective des données à leur destination prévue au sein d’un réseau. Le protocole IP obtient et
5
définit l’adresse, notamment l’adresse IP, de l’application ou du périphérique auquel les données
doivent être envoyées. Le protocole TCP est ensuite chargé du transport et du routage des données
à travers l’architecture réseau et de s’assurer qu’elles sont livrées à l’application ou au dispositif
de destination que l’IP a défini. Les deux technologies fonctionnant ensemble permettent la
communication entre les dispositifs sur de longues distances, ce qui permet de transférer les
données là où elles doivent aller de la manière la plus efficace possible.
Les deux protocoles sont fréquemment utilisés ensemble et dépendent les uns des autres pour
que les données aient une destination et y parviennent en toute sécurité. C’est pourquoi le processus
est régulièrement appelé TCP/IP. Avec les protocoles de sécurité appropriés en place, la
combinaison du TCP/IP permet aux utilisateurs de suivre un processus sûr et sécurisé lorsqu’ils
doivent déplacer des données entre deux ou plusieurs appareils.
Le modèle TCP/IP est la norme pour la communication sur Internet. Développé par le
Department of Defense des États-Unis, il assure une transmission fiable des données en divisant
les messages en paquets, évitant ainsi de renvoyer l'intégralité du message en cas de problème.
Les paquets empruntent des itinéraires différents en fonction de la disponibilité des chemins et
sont réassemblés automatiquement à leur destination.
Le modèle repose sur une architecture en couches standardisées, permettant aux logiciels
et matériels de suivre un processus uniforme. Les données traversent ces couches, où chaque
couche gère une tâche spécifique, et sont finalement reconstituées dans leur format initial à
destination.
Le protocole TCP, basé sur une connexion stable, garantit la division, la numérotation, et
le réassemblage des paquets, tout en s'assurant que chaque paquet atteint sa destination. Il
intervient également dans la retransmission des paquets abandonnés et le contrôle des flux.
6
L’envoi d’un courriel via SMTP est un bel exemple ; le serveur divise le message en paquets
à la couche TCP, qui les transmet ensuite à la couche IP pour acheminement au serveur destinataire.
À réception, les paquets sont réassemblés et transmis à la boîte de réception du destinataire.
Le protocole TCP utilise une liaison à trois voies pour établir une connexion entre les
périphériques, synchronisant les paquets avant leur transfert, garantissant ainsi la fiabilité des
communications.
Le modèle TCP/IP définit la manière dont les périphériques doivent transmettre des
données entre eux et facilite la communication sur les réseaux et les grandes distances. Le modèle
décrit la manière dont les données sont échangées et organisées sur les réseaux. Il est divisé en
quatre couches, qui définissent les normes en matière d’échange de données et représentent la
manière dont les données sont traitées et regroupées lorsqu’elles sont transmises entre des
applications, des périphériques et des serveurs.
o Utilise des dispositifs comme les câbles Ethernet, cartes réseau (NIC) ou réseaux sans fil.
o Définit la manière dont les données sont converties en signaux physiques et transmises.
b) Couche Internet :
o Responsable du routage des paquets de données à travers différents réseaux pour atteindre leur
destination.
o Assure que les paquets suivent des itinéraires disponibles même si le chemin initial est saturé
ou indisponible.
c) Couche transport :
o Assure une communication fiable entre l'émetteur et le récepteur.
o Divise les données en paquets, les numérote et vérifie leur réception correcte.
7
o Gère la retransmission des paquets perdus et contrôle les flux pour éviter la congestion du
réseau.
d) Couche application :
o Permet aux applications (emails, messagerie, navigation web) d’échanger des données de
manière standardisée.
8
Figure 3: Différence entre HTTP & HTTPS, [Link]
HTTP est un protocole de la couche application dans le modèle OSI (Open Systems
Interconnection) ou encore TCP de communication réseau. Il définit plusieurs types de
demandes et de réponses. Par exemple, lorsque vous souhaitez consulter les données d'un
site Web, vous envoyez la requête HTTP GET. Si vous souhaitez envoyer des informations,
par exemple remplir un formulaire de contact, vous envoyez la requête HTTP PUT.
De la même manière, le serveur envoie différents types de réponses HTTP sous forme de codes
numériques et de données. Voici quelques exemples :
o 200 - OK
9
Figure 4;Http fonctionnement, [Link]
Le protocole HTTP transmet des données non chiffrées, ce qui signifie que les informations
envoyées depuis un navigateur peuvent être interceptées et lues par des tiers. Ce processus n'étant
pas idéal, il a été étendu au protocole HTTPS pour ajouter une couche de sécurité supplémentaire
aux communications. Le protocole HTTPS associe les requêtes et les réponses HTTP aux
technologies SSL et TLS.
Les sites Web HTTPS doivent obtenir un certificat SSL/TLS auprès d'une autorité de
certification (CA) indépendante. Ces sites Web partagent le certificat avec le navigateur avant
d'échanger des données pour établir la confiance. Le certificat SSL contient également des
informations cryptographiques, qui permettent au serveur et aux navigateurs Web d'échanger des
données chiffrées ou brouillées. Le processus fonctionne comme suit :
a) Vous visitez un site Web HTTPS en saisissant le format d'URL https:// dans la barre
d'adresse de votre navigateur.
10
d) Le certificat SSL du site Web prouve l'identité du serveur. Une fois que le navigateur est
satisfait, il utilise la clé publique pour chiffrer et envoyer un message contenant une clé de
session secrète.
e) Le serveur Web utilise sa clé privée pour déchiffrer le message et récupérer la clé de session.
Il chiffre ensuite la clé de session et envoie un message d'accusé de réception au navigateur.
f) Désormais, le navigateur et le serveur Web utilisent la même clé de session pour échanger
des messages en toute sécurité.
2.3.3. DNS
Le protocole DNS (Domain Name System) est un processus qui permet aux internautes de
naviguer sur Internet à l’aide de noms d’hôtes et non d’adresses IP numériques. Le DNS est
l’annuaire téléphonique d’Internet : il simplifie le processus de recherche de sites web
spécifiques via les navigateurs web.
o Lorsque vous utilisez un client DNS tel que votre ordinateur, un appareil intelligent, un
navigateur web ou une application pour vous connecter à un nom de domaine, vous déclenchez
ce que l’on appelle une requête récursive, une requête DNS, une recherche DNS ou une
demande DNS.
o Lorsqu’une demande d’enregistrement DNS est effectuée à partir d’un appareil comme un
smartphone, un ordinateur ou une tablette, un navigateur (tel que Google Chrome) recherche
d’abord l’enregistrement dans son cache. Si aucun enregistrement n’existe, le résolveur du
système d’exploitation est interrogé. Ce composant du système d’exploitation, appelé résolveur
de stub, vérifie l’enregistrement.
11
o Si l’enregistrement demandé n’est pas mis en cache au niveau local, les requêtes DNS sont
alors dirigées vers une série de serveurs DNS externes qui résolvent la demande.
o Le premier de la série est le serveur DNS récursif, également connu sous le nom de récurseur
DNS ou de résolveur DNS récursif, souvent géré par un fournisseur d’accès à Internet (FAI).
Quand c’est possible, le résolveur récursif utilise les données du cache DNS pour atteindre le
site souhaité. Si ces données ne sont pas disponibles, il dirige la demande vers le serveur de
noms racine.
o Les serveurs de noms racine, ou serveurs DNS racine, acheminent la requête vers un serveur
connu sous le nom de serveur de noms de domaine de premier niveau (TLD), en fonction de
l’extension du site : .com, .org ou .net, par exemple.
o Les serveurs de noms TLD envoient les demandes concernant des extensions spécifiques au
serveur de noms faisant autorité, également appelé serveur DNS faisant autorité ou serveur de
noms de domaine faisant autorité.
o Le serveur de noms faisant autorité contient des informations sur la zone DNS qu’il gère,
notamment des informations relatives aux noms de domaine spécifiques stockés dans les
enregistrements de ressources DNS, et il connecte les noms de domaine aux adresses IP
correspondantes.
Lorsqu’un serveur DNS ne parvient pas à récupérer une réponse complète, il déclenche une
requête DNS itérative. Les serveurs continueront de renvoyer la demande par différents
serveurs jusqu’à ce qu’une adresse IP soit trouvée, qu’un délai d’expiration soit atteint ou
qu’une erreur se produise.
12
Figure 5: DNS, [Link]
3. Modèles architecturaux
Le modèle 2-tiers est une architecture logicielle divisée en deux couches principales :
Côté client :
o Cette couche peut inclure des éléments de présentation (comme des boutons, des formulaires)
et parfois une partie de la logique, comme la validation des données avant leur envoi.
Côté serveur :
o Cette couche gère les données, leur stockage et le traitement des requêtes.
o C'est souvent une base de données (ex. : SQL, Oracle) où toutes les informations sont
centralisées.
13
o Exemple : Un serveur qui reçoit des requêtes pour afficher, modifier ou supprimer des données
stockées.
Le client et le serveur communiquent directement grâce à des protocoles comme TCP/IP, sans
intermédiaire supplémentaire.
o Le client est une application installée sur les postes des employés.
o Le serveur central contient la base de données avec les informations des produits.
o Le client est une application qui permet de vérifier les soldes ou effectuer des transactions
simples.
o Le serveur gère la base de données des comptes bancaires et traite les demandes.
14
3.1.2. Avantages et inconvénients du modèle 2-tiers
Avantages
o Performances locales optimales : La connexion directe entre le client et le serveur permet des
échanges rapides, surtout sur un réseau local.
o Coût réduit : Nécessite moins de ressources matérielles ou logicielles, ce qui en fait une
solution économique pour les petites entreprises.
o Centralisation des données : Toutes les données sont regroupées sur un serveur unique, ce
qui facilite leur gestion.
Limites
o Sécurité limitée : Les données circulent directement entre le client et le serveur, ce qui peut
les exposer à des risques si la communication n'est pas protégée.
o Couplage fort : Les deux couches sont fortement dépendantes l'une de l'autre. Une mise à jour
du serveur peut nécessiter des modifications côté client, ce qui complique la maintenance.
Le modèle 2-tiers est bien adapté pour des applications simples ou internes à une organisation,
mais il montre ses limites dès qu'on doit gérer des systèmes complexes ou des utilisateurs à grande
échelle.
15
o Rôle : Fournir une interface utilisateur pour interagir avec le système.
o Fonctions principales : Collecter les données saisies par l'utilisateur (par exemple, via des
formulaires), afficher les résultats ou les réponses provenant du serveur applicatif.
o Exemples : Un navigateur web (par exemple, Chrome ou Firefox), une application mobile ou
un logiciel de bureau.
o Fonctions principales : Recevoir les requêtes provenant du client, appliquer les règles métiers
(par exemple, calculs, décisions, vérifications), transmettre les requêtes nécessaires à la base
de données.
o Exemples : Une API REST ou SOAP utilisée pour traiter les requêtes des utilisateurs, des
serveurs d'applications comme [Link], Java EE ou .NET.
o Fonctions principales : Répondre aux requêtes envoyées par le serveur applicatif (lecture,
écriture, mise à jour), garantir l'intégrité, la sécurité et la sauvegarde des données.
16
Figure 7: 3-tiers, [Link]
Utilisations typiques :
o Applications web dynamiques : Par exemple, les sites de commerce électronique où les
utilisateurs naviguent via un navigateur, le traitement des commandes est fait côté serveur
applicatif, et les informations sur les produits sont récupérées dans une base de données.
o Applications d'entreprise : ERP ou CRM qui nécessitent une gestion complexe des données
et une interface utilisateur conviviale.
o Jeux en ligne : Où le client (le jeu) interagit avec un serveur applicatif pour les mécanismes
du jeu, qui accède ensuite à la base de données des scores ou des profils des joueurs.
Bénéfices :
o Facilité de maintenance : Les développeurs peuvent intervenir sur une couche sans affecter
directement les autres.
o Évolutivité : Chaque couche peut être mise à l'échelle séparément selon les besoins (par
exemple, ajouter plus de serveurs pour la base de données).
17
o Sécurité : La séparation des responsabilités permet un meilleur contrôle des accès et des
données sensibles.
o Répartition claire des responsabilités : Chaque couche a un rôle bien défini, ce qui permet
de maintenir une architecture claire.
o Flexibilité : Les modifications dans une couche (par exemple, mise à jour de la base de
données) n'affectent pas directement les autres couches.
o Support des grands systèmes : Idéal pour les systèmes complexes avec un grand nombre
d'utilisateurs ou une forte charge de données.
o Portabilité : Les clients peuvent utiliser différents appareils ou navigateurs pour se connecter
(ordinateur, smartphone, tablette).
o Complexité accrue : Nécessite une expertise plus poussée pour concevoir, implémenter et
maintenir les différentes couches.
o Coûts plus élevés : Les infrastructures (serveurs dédiés, bases de données robustes) et le
développement sont plus coûteux.
o Latence possible : Le passage par plusieurs couches peut ralentir les réponses, surtout si le
système n'est pas optimisé.
Le modèle 3-tiers est couramment utilisé dans des systèmes nécessitant modularité, évolutivité et
sécurité.
18
3.3. Variations avancées
3.3.1. Modèle n-tiers : Présentation
Le modèle n-tiers est une architecture logicielle qui divise les fonctionnalités d'une
application en plusieurs couches indépendantes. Chaque couche joue un rôle spécifique, ce qui
améliore la modularité, la flexibilité et la maintenance du système. Ces couches coopèrent pour
traiter les données, appliquer les règles métier et présenter les résultats à l'utilisateur. La
première couche est la couche client ou présentation. Elle représente l'interface utilisateur
permettant de communiquer avec l'application. Par exemple, un navigateur web ou une
application mobile envoie des requêtes aux autres couches pour interagir avec le système.
La couche serveur applicatif, ou logique métier, gère les traitements des données et
applique les règles métier. Elle agit comme intermédiaire entre le client et la base de données.
Par exemple, elle traite les calculs, les validations ou encore les connexions avec des services
externes comme une passerelle de paiement. Dans certains cas, des couches supplémentaires
comme une couche de cache pour accélérer les requêtes fréquentes, une couche d'intégration
pour connecter des systèmes tiers ou encore une couche de sécurité pour protéger contre les
intrusions peuvent être ajoutées pour optimiser le système.
Enfin, la couche serveur de base de données stocke et gère les données de manière
centralisée. Elle exécute les requêtes de la couche applicative pour fournir ou modifier les
informations nécessaires. Par exemple, elle peut héberger les données d'un système de
commerce électronique (produits, commandes, utilisateurs). Ces couches additionnelles, bien
qu'augmentant la complexité, apportent des bénéfices en termes de performances, d'intégration
et de sécurité.
Le modèle n-tiers est souvent utilisé pour des systèmes complexes comme les plateformes
web et les applications d'entreprise. Parmi ses avantages figurent une évolutivité accrue, une
meilleure maintenance et une sécurité renforcée grâce à la séparation des responsabilités.
Cependant, il peut introduire une certaine latence et complexité, tout en nécessitant des
infrastructures plus coûteuses.
19
3.3.2. Architectures basées sur les micro-services
Les architectures basées sur les microservices sont des systèmes où les applications sont
décomposées en services autonomes, chacun ayant une fonction précise. Chaque service est
indépendant, peut être développé et déployé séparément, et communique avec les autres via des
API légères comme REST ou gRPC. Ces services sont conçus pour répondre aux besoins métier
spécifiques de manière modulaire.
L’un des principaux avantages des microservices est leur évolutivité. Chaque service peut
être mis à l'échelle indépendamment selon les besoins. Par exemple, dans un site de commerce
électronique, le microservice de gestion des commandes peut être renforcé en cas de forte
demande sans impacter les autres parties du système. Cette architecture offre également une
flexibilité technologique : chaque microservice peut être développé dans une technologie
adaptée à ses besoins, permettant ainsi des choix optimaux pour chaque fonctionnalité.
Ce modèle est particulièrement adapté aux applications à grande échelle, telles que Netflix
ou Amazon, où chaque fonctionnalité (streaming, gestion des comptes, recommandations) est
gérée par un microservice distinct. Les solutions cloud natives et les systèmes IoT sont
également des exemples typiques d'utilisation, car ils bénéficient de l'indépendance et de la
modularité des microservices.
En résumé, les architectures basées sur les microservices sont idéales pour des applications
nécessitant flexibilité, évolutivité et livraison continue, bien qu'elles demandent une expertise
technique plus poussée pour leur mise en œuvre et leur maintenance.
20
3.4. Comparaison entre les architectures
o Le client gère l'interaction directe avec l'utilisateur à travers une interface conviviale,
comme une application mobile, un navigateur web ou un logiciel de bureau.
o L'objectif est de permettre aux utilisateurs de saisir des données, de naviguer dans
l'application ou de visualiser des résultats.
b) Logique de présentation :
o Par exemple, pour une boutique en ligne, il vérifiera les stocks, calculera les montants totaux
des commandes et appliquera des règles telles que les réductions ou les frais de livraison.
o Le serveur s'occupe du stockage des données dans une base de données, de leur sécurisation
pour éviter tout accès non autorisé, et de leur traitement (ex. : calculs, requêtes SQL).
o Il garantit l'intégrité des données, notamment en cas d'accès simultané par plusieurs
utilisateurs.
22
o Côté client : L'utilisateur utilise une application mobile ou un navigateur pour consulter son
solde ou transférer de l'argent. L'interface affiche les relevés bancaires et un formulaire pour
saisir les informations de transfert.
o Côté serveur : Le serveur traite la demande de transfert en vérifiant que le solde est suffisant
(logique métier), puis met à jour les données dans la base de données pour enregistrer la
transaction (gestion des données). Enfin, il renvoie une confirmation au client.
5.1. Avantages
Si le modèle client-serveur constitue l’une des architectures les plus utilisées dans la technique
des réseaux, c’est notamment grâce à ses nombreux avantages.
L’un des grands avantages réside dans son administration centrale : le serveur constitue le
centre du réseau. Tous les utilisateurs ou clients l’utilisent. Les ressources les plus importantes,
comme les bases de données, sont disponibles sur le serveur et donc centralisées. Cette
structure simplifie l’administration et la maintenance des ressources importantes et sensibles.
La position centrale du serveur permet aussi d’effectuer facilement et sûrement les mises à jour
avec peu de risques.
23
La centralisation des ressources-clés permet aussi de gérer au plus près les droits d’accès
pour une plus grande sécurité. Il est important de savoir à tout moment qui a accès aux données
sensibles, et qui peut effectuer certaines manipulations. Afin de garantir une protection optimale
des données, il s’agit dans ce cas de limiter au maximum les droits d’accès.
5.2. Inconvénients
Malgré ses nombreux avantages, le modèle client-serveur présente aussi certains inconvénients.
Panne de serveur
Ressources serveur
Le serveur exécute des tâches qui demandent beaucoup de ressources. Le client fonctionne
avec des exigences en matière de ressources nettement moins élevées. Un serveur qui disposerait
de trop peu de ressources aurait une incidence sur le travail de tous les clients. C’est pourquoi il
est important de choisir un fournisseur fiable qui garantisse la mise à disposition de ressources.
Chronophage
Un autre élément à ne pas sous-estimer est le temps à consacrer pour l’exploitation de son
propre serveur. Non seulement ce type de matériel demande le savoir-faire correspondant,
notamment pour sécuriser et configurer les serveurs, mais aussi des ressources en temps non
négligeables.
24
6. Conclusion
En conclusion, l'architecture client-serveur représente une base indispensable pour la
conception des systèmes informatiques, offrant des solutions adaptées aux besoins variés des
utilisateurs et des entreprises. À travers l'exploration des modèles 2-tiers, 3-tiers et des micro-
services, ce travail démontre comment la modularité, la répartition des responsabilités et
l'intégration des couches supplémentaires contribuent à la performance, à la sécurité et à la
maintenance des applications. Bien que chaque modèle ait ses limites, il est clair que leur choix
dépend des contraintes techniques et des exigences métiers. Ces architectures, en constante
évolution, continueront de jouer un rôle essentiel dans les innovations numériques.
25
Webographie
[Link]
[Link]
[Link]
serveur#Comparaison_des_architectures_centralis%C3%A9es_et_distribu%C3%A9es
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
26