Académique Documents
Professionnel Documents
Culture Documents
Client/Serveur
1.1 Objectifs de ce chapitre.
Nous allons aborder, dans ce chapitre, différentes notions nécessaires à la compréhension du
fonctionnement général d'une architecture informatique basée sur des interactions clients/serveurs.
Nous définirons les termes de serveur et de client, ainsi que la relation client/serveur en donnant
des exemples simples puis le concept d'architecture Client/Serveur. Enfin les différents types de
serveurs seront présentés en insistant sur leur fonction principale et les caractéristiques de mise en
oeuvre.
Au terme de ce chapitre, le lecteur devrait connaître les différents éléments d'une architecture
informatique et aura eu un aperçu du vocabulaire que l'on peut rencontrer dans le domaine.
1.2 Définitions
1.2.1 Client, Serveur, Relation Client/serveur
En informatique, un serveur est une machine (ordinateur) qui propose un service. Ce service sera
proposé à toute machine pouvant accéder via un réseau informatique à la machine serveur.
Par symétrie, un client est une machine qui utilise un service mis à disposition par une autre
machine.
Client : ordinateur qui utilise un service
Une première remarque concerne les ressources mises à disposition. Celles-ci ne peuvent-être que
des ressources possédées par la machine serveur (ce qui est une évidence). Les ressources
potentiellement mises à disposition sont soit d’ordre physique :
- Espace de stockage (fichiers sur un disque dur ou sur un autre périphérique de masse)
- Temps de calcul (temps UC) + utilisation mémoire centrale (les deux étant liés)
- Liaisons à des périphériques ou à des interfaces locales (Imprimantes, accès distant…)
soit d’ordre logique :
- Applications spécifiques (bases de données, pages WEB…)
- Gestion de l’infrastructure informatique (authentification, gestion des licences...)
1
Dans le cas des ressources logiques (le plus fréquent maintenant), le service est plus complexe et va
utiliser les autres catégories de ressources (disque, UC, voire périphériques).
La deuxième remarque concerne la distinction que l'on peut faire entre les fonctions d'une machine
et la machine elle-même. En fait, la relation Client/Serveur est une relation entre fonctions et non
entre machines. En d'autres termes cela veut dire que plusieurs serveurs (en tant que fonctions)
peuvent être hébergés sur la même machine. Par exemple, une machine hébergeant un serveur WEB
peut aussi être serveur de messagerie, si elle possède les ressources suffisantes.
De même, le client et le serveur peuvent être sur la même machine; Un exemple habituel est le
fonctionnement de l'interface graphique sur une machine UNIX autonome : le client X (programme
qui envoie les commandes graphiques pour affichage) et le serveur X (programme qui va gérer
l'affichage sur l'écran à partir des commandes reçues) sont sur la même machine. Cet exemple peut
être d'ailleurs vu comme un paradoxe lorsque la machine qui affiche n'est pas la même que celle qui
envoie les commandes graphiques : le serveur X est alors la machine locale (celle qui affiche pour
l'utilisateur) et le client X, la machine distante (qui fait les traitements – elle est donc serveur pour
un autre service-).
De fait, un serveur pour une application peut-être client pour une autre ce qui va conduire à définir
des architectures plus complexes comme nous le verrons plus loin.
Dans le cas d'un ensemble de machines en réseau, les interactions Client/Serveur peuvent être vues
de manière différente suivant l'endroit où l'on se place.
2
Relation Client/Serveur (vision côté client) :
Dans le cas d'une machine cliente multi-tâches, il peut y avoir des accès simultanés à plusieurs
serveurs pour un client unique. Chaque serveur est toujours spécialisé dans un service mais le client
a besoin de plusieurs services pour mener à bien la tâche en cours (par exemple : messagerie avec
affichage de pages WEB intégrées).
On imagine facilement la complexité d'un tel système s'il fallait gérer chaque accès de manière
individuelle pour un ensemble de 100 machines et d'une dizaine de serveurs.
Pour être utilisable, l'informatique partagée va devoir être basée sur 2 aspects :
- la nécessité d’un réseau de communication pour assurer physiquement les échanges
- la nécessité de protocoles gérant les échanges Client/Serveur pour contrôler logiquement
ces échanges.
3
Dans ce dernier cas, chaque fonction spécifique nécessite la définition d'un protocole adapté. Cela
conduit forcément à une convergence des protocoles applicatifs sur un même support lors d'une
mise en œuvre par réseaux informatiques. Le point de convergence des protocoles applicatifs est
généralement la couche transport TCP/IP (surtout s'il y a communication entre sous-réseaux) ou
plus rarement la couche liaison (LLC+Ethernet) si on reste sur un même réseau local de type
industriel.
Comme nous l'avions évoqué précédemment, la relation Client/Serveur peut être plus complexe
avec des architectures où un serveur peut devenir client d’un autre serveur pour répondre à un client
: le serveur est spécialisé dans un service mais il a besoin pour le mettre en œuvre d’un autre
service :
On parle alors d'architecture à étages (tier en anglais), ou d'architectures N-tier. Ces architectures
peuvent paraître plus complexes avec l'utilisation de plusieurs protocoles (un par relation entre
4
machines), mais elles conduisent aussi à une mise en œuvre plus simple permettant des
modifications plus aisées, car chaque fonction peut être traitée séparément.
Une architecture fréquemment rencontrée est une architecture à 3 étages (3-tier) où les fonctions de
base : IHM (Interface Homme-Machine), Traitement et stockage (base de données) sont séparées
sur 3 serveurs. De ce fait, on peut changer l'interface homme-machine (fréquent sur les sites WEB
par exemple) sans changer le reste de l'application. De même, la base de données peut-être
complètement refondue pour pouvoir répondre à d'autres applications sans que le service initial ne
soit affecté de manière visible. Un point important de ces architectures concerne la sécurité : si le
réseau est constitué correctement, un client ne pourra pas réaliser directement des requêtes SQL sur
le serveur de base de données.
La représentation habituelle pour une application basée sur le protocole HTTP est la suivante :
5
- La structure client/serveur WEB est un contre exemple parfait de l'architecture client/serveur X
(ou l'inverse !) : en effet dans un relation client/serveur X11, c'est le serveur qui affiche et le client
qui génère les ordres alors que dans une structure WEB c'est l'inverse, l'informatique s'éloigne
quelquefois (souvent ?) de la pure logique comme le montre cette phrase !
Lors de la mise en œuvre de cette architecture à 3 étages dans un réseau de type LAN des
problèmes de sécurité peuvent apparaître :
En effet, le client peut accéder directement par une autre application au serveur de base de données,
il n'y a pas d'impossibilité physique. Il faut alors prévoir d'introduire des contraintes au niveau des
équipements intermédiaires (VLAN...) si l'on veut empêcher cet accès.
Une autre évolution, liée à la sécurité, concerne l'authentification du client, cette dernière peut-être
gérée par un serveur spécifique (LDAP...) et constitue alors un niveau supplémentaire.
1.2.3 Middleware
Le middleware (quelquefois traduit en français sous le terme Intergiciel) est un ensemble de
protocoles, logiciels permettant de réaliser les relations applications clients / serveurs.
D’un point de vue des communications le middleware se situe au niveau des couches
intermédiaires : Session, Présentation, Application
6
Mais il peut représenter un ensemble plus complet d'outils (API : Application Programming
Interface) permettant cet échange en facilitant le développement d’applications qui doivent
s’interfacer avec un type de serveur donné. Puisqu'il est situé au-dessus de la couche transport, mais
en dessous d'une application, il a un lien direct avec le Système d’exploitation. Toutefois ce terme
n'a pas une définition très précise comme peuvent l'avoir les fonctions des couches basses. En
particulier, son usage a évolué en fonction du temps et des catégories d'applications qu'il doit
supporter.
Callrpc()
Execute
request Call
service
Service
execute
Request
completes
Return
reply
Suite du
programme
Fonctionnement :
Appel CallRPC() identique à une fonction avec des paramètres mais la requête est transmise sur le
réseau. Cet appel distant bloque le thread jusqu’au retour de la réponse (ou time out).
La machine serveur exécute réellement la fonction et renvoie par le réseau le résultat du traitement
au thread en attente.
Celui-ci se débloque et poursuit son exécution.
7
Structures des couches intermédiaires :
IP
Couches basses
Application
8
Application
IP
Couches basses
Remarque : l'application est souvent découpée en fonctions liées aux couches OSI, mais cela
n’apparaît pas dans les PDU.
Serveurs de ressources
Serveurs proposant des services liés à l’usage direct d’une de ses ressources par le client pour le
même usage. Exemples : serveurs de fichiers, d’impression
Serveurs d’applications
Serveurs proposant l’exécution d’une application particulière à distance. Exemples : serveurs de
terminaux, serveur Telnet
Serveurs de communication
Serveurs proposant un partage de ses capacités de communications (cartes réseaux) vers l’extérieur.
Il a des fonctionnalités proche de celles d’un routeur. Exemples : serveurs d’accès distants (VPN).
Serveurs spécifiques
Serveurs multimédia, serveurs de base de données, serveurs d’entrepôt de données (Data
WareHouse)...
Serveurs de groupware
Services utilisant des informations formatées à destination d’un utilisateur humain. Exemples :
mail, gestion de documents…
9
Usage presque généralisé comme une interface normalisée pour diverses applications : client à tout
faire (messagerie, gestion et configuration d’applications...)
Les applications WEB évoluent vers des interactions de plus en plus complexes.
Serveurs DNS
Utilité : Résolution d’un nom littéral vers une adresse IP
10
Le protocole DNS est basée sur UDP ou TCP. Il met en oeuvre une recherche arborescente (par
zone) en travaillant sur une base de données répartie. Chaque domaine possède un serveur DNS de
zone locale qui définit la correspondance entre les noms des machines locales et leur adresse IP. Les
demandes remontent vers un serveur racine puis sont renvoyées vers le serveur de zone locale qui
donne l'information recherchée.
Ce service permet entre autre une authentification centralisée, lorsque des clients veulent accéder à
différents services (serveurs). Le protocole LDAP sert souvent à une communications entre
serveurs. Les applications serveurs concernées par cette authentification doivent posséder un
module LDAP client pour aller interroger le serveur LDAP. C'est une architecture à plusieurs
niveaux.
11
1.3.3 Serveurs de ressources
Serveurs de fichiers
Utilité : partage de fichiers et centralisation du stockage.
C'est un service complexe car il est souvent transparent pour l’utilisateur, il est donc intégré dans le
système d’exploitation. Les protocoles mis en œuvre sont donc des protocoles spécifiques au SE
(on retrouve ici la notion de Middleware).
Serveurs d’impression
Utilité : partage d'imprimantes et gestion centralisée des quotas
C'est aussi un service complexe car les périphériques sont considérés comme des fichiers dans les
systèmes d'exploitation.
Les services proposés sont par exemple : Spooler (désynchronisation de l'envoi et de l'impression),
contrôle de volume (taille), contrôle horaire...
12
Serveurs de terminaux
Utilité : travail à distance sur une autre machine
Dans ce cas, non seulement les données sont à distance, mais le code exécuté aussi. Le client n'est
en fait qu'un terminal de contrôle et de visualisation.
Console texte déportée : Telnet
Environnement graphique déporté : console à distance Windows, XWindows sous UNIX
Les problème de sécurité doivent être pris en compte : protocoles cryptés, accès restreint pour
certains comptes.
Le domaine des serveurs d'applications est un secteur en plein développement depuis quelques
années, où l'externalisation des ressources informatiques se développent rapidement dans les
entreprises (serveurs CITRIX, virtualisation…). Ce sont des technologies de plus en plus présentes..
Les services sont comparables à ceux d'un routeur mais c'est une approche différente. Ce service
englobe d'autres fonctionnalités : authentification, cache
En général, ils ont moins de puissance qu'un routeur en terme de débit routé brut.
Serveurs de Mail
13
Utilité : envoi, réception, stockage de messages
Même si le service global, met en œuvre un échange final de type Client/Client, des services
intermédiaires sont utilisés. Les serveurs fournissent donc les fonctions : Stockage temporaire,
Aiguillage (DNS), Renvoi...
Le service de messagerie est basé sur des protocoles asymétriques (l'envoi et la lecture des
messages ne se fait pas avec les mêmes protocoles :
Envoi : SMTP
Réception : POP, IMAP
14
1.3.7 Autres.
Serveurs WEB
Initialement les serveurs WEB étaient uniquement des serveurs de pages HTML statiques, leur
fonction correspondait à un simple transfert de fichiers HTML. Maintenant, afin de permettre une
personnalisation des pages affichées, les serveurs WEB peuvent envoyer des pages HTML crées
dynamiquement (Calculs sur le serveur) ou contenant des scripts (fonctions) encapsulées (calculs
sur le client). On s'oriente de plus en plus vers des architectures plus complexes, où de nombreux
services sont apportés s'appuyant sur le protocole HTTP et les fonctionnalités des clients
(navigateurs). En fait, les protocoles applicatifs précédents (mail, transfert de fichiers...) sont
remplacés par le développement d'interfaces WEB, où chaque lien ou contrôle permet de mettre en
oeuvre une fonction, la complexité est reportée sur le serveur, au bénéfice d'un client générique
(exemple : WEBMail versus client de messagerie).
Transfert de fichiers
Ne pas mélanger avec serveurs de fichiers, ici les fichiers sont physiquement transférés (donc il en
existe 2 copies).
Ce sont des protocoles plus simples qui permettent une compatibilité inter-plateforme : FTP ; TFTP
et qui sont surtout utilisés à plus longue distance.
15
1.4 Lien Serveur - Système d’exploitation
1.4.1 Généralités
Les fonctionnalités serveur sont toujours supportés par un système d’exploitation. En effet, un
serveur utilise des ressources gérées par le SE : disque, mémoire, UC, périphériques.
Pour cela le SE met aussi à disposition des ressources logicielles : threads, sémaphores,
descripteurs, priorités…, ainsi que des outils de surveillance, de statistiques...
L'intégration des fonctionnalités serveur au sein d'un SE peut se faire suivant différentes approches
en fonction des caractéristiques initiales des SE. Actuellement, tous les SE serveur sont basés sur
des SE standard : UNIX/Linux, Windows
UNIX :
UNIX propriétaires, Linux et dérivés
Le système d'exploitation standard possède un serveur de fichiers natif (NFS), les autres services
sont ajoutés comme des applications supplémentaires, plusieurs solutions peuvent alors être
choisies.
16
fonctionnaient sous UNIX. Mais Microsoft s’est aussi positionné, depuis Windows Serveur 2003,
sur le marché des gros réseaux.
De manière synthétique, on évalue les parts de marché de manière équitable entre les 2 familles.
Mais ceci n’est qu’une évaluation car certains systèmes Linux ne sont pas déclarés (et non visible
s’ils n’ont pas d’interaction avec le Web). Une mesure peut-être réalisée sur les serveurs web
public.
17
1.5 Questions concernant ce chapitre.
Les éléments de réponse sont en partie seulement dans le polycopié, l'usage de documents
complémentaires est conseillé (livres, Internet, RFC...). De plus, les réponses ne sont pas uniques et
donc aucune correction ne pourra être fournie...!
Question 1 :
Donner pour chaque ressource un ou plusieurs exemples de serveurs l'utilisant :
- Espace de stockage
- Temps UC (+ mémoire centrale)
- Liaisons à des périphériques (Imprimantes, accès distant…)
Question 2 :
Imaginer une architecture Client/Serveur 4 tier.
Dessiner un schéma de principe
Attribuer des fonctions cohérentes à chaque étage
Dessiner la mise en oeuvre réelle
Question 3 :
Comment est mis en place la permanence dans le temps de la relation client-serveur :
Au niveau de quelles couches OSI ?
A partir de quels éléments ?
Question 4 :
Dessiner les interactions qu'il peut y avoir entre les différents éléments d'un ordinateur en relation
client/serveur :
- Noyau du SE
- Périphériques
- Drivers
- Applications
- Middleware
- Logiciel de développement : API
- Autres... (nécessaires pour reliés les précédents)
Question 5 :
Donner des exemples de serveurs d'infrastructure
- Noms des Services
- Fonctions principales
Question 6 :
Donner des exemples de serveurs de ressources
- Noms des Services
- Fonctions principales
18
Question 7 :
Un Serveur d’applications c'est quoi ?
Exemples (aller voir sur le WEB)
Question 8 :
A quoi sert un serveur d’accès distant ?
Donner un schéma de fonctionnement
Question 9 :
Donner le parcours d'un mail envoyé par un utilisateur de la machine de gauche vers un utilisateur
de celle de droite.
Donner le parcours du même mail lu par un utilisateur de la machine de droite
Question 10 :
Donner la liste des systèmes d'exploitation serveur connus ainsi que les différentes versions
Si vous aviez à choisir un système serveur lequel prendriez-vous ?
Pourquoi, avantages/inconvénients
19