Développement d’Applications Réparties
Chapitre 1 : Les sockets
Séance 2 : 05/10/2023
Enseignante : Leïla Bayoudhi
Auditoire : LCS-GLSI3
Etablissement : Institut Supérieur d’Informatique de Mahdia
Année universitaire : 2023-2024
Rappel : le modèle client/serveur
Le client demande l’exécution d’un service
Le serveur réalise le service
Les deux sont généralement localisés sur deux machines distinctes (il s’agit parfois de la même machine)
Communications par messages
Requête : paramètres d’appel, spécification du service requis
Réponse : résultats, indicateur éventuel d’exécution ou d’erreur bloqué en attente de la réponse
13
Rappel : Mise en œuvre du modèle client/serveur
Besoin d’un support pour transporter les informations entre le client et le serveur (C/S)
► Bas niveau
Utilisation directe du transport : sockets (construits sur TCP ou UDP) (détails dans ce chapitre)
► Haut niveau
Intégration dans le langage de programmation : RPC ou Remote Procedure Call (construits sur
sockets) (chapitre 2 et les autres)
Nécessité d’établir un protocole entre le client et le serveur pour qu’ils se comprennent
14
Exemple de client/serveur
Un serveur de fichiers
Des clients qui demandent des fichiers
Comment gérer la concurrence ?
un processus serveur un client servi
plusieurs clients plusieurs processus serveur
Quel protocole utiliser ?
le client envoie le nom du fichier
le serveur renvoie la taille puis les données
comment gère -t-on les erreurs ?
15
Les sockets
La socket est un mécanisme de communication permettant d’utiliser l’interface de transport (TCP-UDP)
L’API (Application Programming Interface) Socket
permet aux programmes d’échanger des données
les applications client/serveur ne voient les couches de communication qu’à travers l’API socket
(abstraction)
Une socket est Liée localement à un port. Elle permet la communication avec un port distant sur
une machine distante : c'est-à-dire avec une application distante
Le terme socket signifie douille, prise électrique femelle, ce sur quoi on branche quelque chose
16
L’API Socket
► Mode connecté (protocole TCP)
Ouverture d’une liaison, suite d’échanges, fermeture de la liaison
Le serveur préserve son état entre deux requêtes
Garanties de TCP : ordre, contrôle de flux, fiabilité
Adapté aux échanges ayant une certaine durée (plusieurs messages)
Lenteur des transmissions
Vu comme un «service téléphonique»
17
L’API Socket
► Mode non connecté (protocole UDP)
Les requêtes successives sont indépendantes
Pas de préservation de l’état entre les requêtes
Le client doit indiquer son adresse à chaque requête (pas de liaison permanente)
Pas de garanties particulières (UDP)
Arrivée dans le bon ordre non garantie
Non fiabilité des transmissions
Adapté aux échanges brefs (réponse en 1 message)
Rapidité des transmissions
Applications audio/vidéo
Vu comme un «service postal»
18
L’API Socket
Points communs
Le client a l’initiative de la communication : le serveur doit être à l’écoute
Le client doit connaître la référence du serveur [adresse IP, n° de port]
il peut la trouver dans un annuaire si le serveur l’y a enregistrée au préalable,
ou la connaître par convention : n°s de port pré-affectés
Le serveur peut servir plusieurs clients (1 thread unique ou 1 thread par client)
19
L’API Socket
20
Sockets TCP : En mode connecté
• Données envoyées dans un « tuyau » et non pas par paquet : Flûx de données
• Une socket est un des deux bouts du tuyau
• Chaque application a une socket locale pour gérer la communication à distance
21
Sockets TCP : principe
Client Serveur
1. Crée une socket 1. Crée une socket
2. Le serveur lie une socket d'écoute sur un certain
2. Se connecte au serveur en donnant l’adresse socket
port bien précis
distante (adresse IP du serveur et numéro de port du
service). 3. Se met à l’écoute des connexions entrantes
3. Le système d’exploitation attribue pour cette 4. Pour chaque connexion entrante
connexion automatiquement un numéro de port local i. Accepte la connexion (un nouveau socket de
au client service créé, ce qui permet de lancer un thread
ou un processus fils pour gérer cette connexion
4. Lit et/ou écrit (envoi et réception des messages) sur
et dialoguer avec le client)
la socket
ii. Lit et/ou écrit sur la nouvelle socket
5. Ferme la socket 5. Ferme la socket créé
22