Définitions
- client : envoie des requêtes au serveur et attend le résultat.
- serveur : attend des requêtes, les traite, renvoie le résultat au client.
- architecture client/serveur :
- bas niveau (matérielle) : réseaux téléphoniques
- haut niveau (logicielle) : navigateur/serveur web
- protocole : codification des échanges entre client et serveur en terme de structure, contenu et ordonnancement dans le temps.
- exemples : ethernet (bas niveau), http (haut niveau)+
- socket : périphérique logiciel permettant l'envoi et la réception de suite d'octets vers/de une autre socket.
- domaine : « contexte » d'utilisation de la socket.
- pour communiquer entre deux processus d'un même machine = domaine UNIX
- pour communiquer entre deux processus distant = domaine Internet.
- protocoles associés : TCP (mode connecté), UDP (mode non connecté), Raw, ...
Implémentations client/serveur basées sur :
- protocole d'envoi/réception de données : TCP, UDP, …
- protocole orienté requête : RPC, RMI, HTTP...
<aside>
☝
Remarque : la complexité réside dans la définition du protocole et son implémentation dans le langage choisi.
</aside>
Typologie C/S
Mode de communication :
- connecté : le client contacte (= se connecte) le serveur avant d'envoyer ses requêtes,
- non connecté : le client envoie directement une requête au serveur, qui attend de n'importe qui.
Durée de vie :
- client : une ou plusieurs requêtes puis terminaison,
- serveur exécuté en démon : sauf problème, tant que la machine fonctionne,