
C
CH
HA
AP
PI
IT
TR
RE
E
I
II
I
:
:
T
TE
EC
CH
HN
NI
IQ
QU
UE
ES
S
D
DE
E
D
DI
IA
AL
LO
OG
GU
UE
E
Introduction
Le client-serveur est avant tout un mode de dialogue entre deux processus. Le premier
appelé client demande l'exécution de services au second appelé serveur. Le serveur accomplit
les services et envoie en retour des réponses. En général, un serveur est capable de traiter les
requêtes de plusieurs clients. Un serveur permet donc de partager des ressources entre
plusieurs clients qui s'adressent à lui par des requêtes envoyées sous forme de messages.
Dans ce chapitre, nous présentons le mode de dialogue client-serveur, indépendamment
des fonctions accomplies et des matériels ou logiciels supports.
Nous allons dans cette section étudier plus en détail ce mode de dialogue.
1) Notions de base
Le modèle de communication client-serveur est orienté vers la fourniture de services par
un processus serveur à un processus client. Un échange consiste donc en la transmission d'une
requête à un serveur, qui exécute l'opération demandée et envoie en retour la réponse. Nous
définissons ci-dessous plus précisément ces concepts de base.
Client : Processus demandant l'exécution d'une opération à un autre processus par envoi d'un
message contenant le descriptif de l'opération à exécuter et attendant la réponse à cette
opération par un message en retour.
Serveur : Processus accomplissant une opération sur demande d'un client et transmettant la
réponse à ce client.
Requête (Request) : Message transmis par un client à un serveur décrivant l'opération à
exécuter pour le compte du client.
Réponse (Reply) : Message transmis par un serveur à un client suite à l'exécution d'une
opération contenant les paramètres de retour de l'opération.
En résumé, la figure 1 ci-dessous illustre ces notions: un client exécute une application et
demande l'exécution d'une opération à un serveur par le biais d'une requête (Request). Il
reçoit une réponse (Reply), lui indiquant par exemple que l'opération a été bien exécutée. Les
appels au service de transport mis en jeu sont au nombre de quatre: SendRequest() permet au
client d'émettre le message décrivant la requête à une adresse correspondant à la porte
d'écoute du serveur, ReceiveReply() permet au client de recevoir la réponse en provenance du