Cours Sockets en Réseaux et Systèmes Distribués -Développement d'applications réparties

Ce document intitulé "Développement d'Applications Réparties" est destiné aux étudiants de Master 1 Réseaux et Systèmes Distribués de l'Université Abdelhamid Mehri – Constantine 2. Il couvre les notions suivantes:

  • Rappels sur le modèle en couches des réseaux
  • Communication synchrone et asynchrone
  • Les sockets : historique, modèle, et utilisation en mode connecté et non connecté

Cours Sockets en Réseaux et Systèmes Distribués -Développement d'applications réparties

Télécharger PDF

Université Abdelhamid Mehri – Constantine 2

Faculté des Nouvelles Technologies de l'Information et de la Communication

Département d’Informatique Fondamentale et ses Applications

Développement d’Applications Réparties

Master 1 Réseaux et Systèmes Distribués

Dr Ilham KITOUNI

20-21

Chapitre 3 - Partie 2

Les Sockets

Sommaire

1. Rappels

2. La communication

3. Les Sockets

1. Historique

2. Le modèle de sockets

3. Client-serveur en mode connecté

4. Client-serveur en mode non connecté

Rappels

Réseau : modèle en couches

Nous nous intéressons à chaque site en tant que composante d'une application répartie. Conçue selon un modèle en couches. Chaque couche fournit un ensemble de services aux couches supérieures. Ce qui a pour objectif de masquer les difficultés d'implémentation.

Les couches

Le réseau et la couche réseau. Un canal de communication entre deux sites a les propriétés : Les données ne sont pas altérées. Les messages ne sont pas perdus (pas toujours vrai on va la relaxer). Le canal est FIFO les messages arrivent dans l'ordre de leurs envois. Le réseau est considéré comme : Asynchrone : le délai de transit est indéfini (cas général). Synchrone : le délai est borné et connu par le concepteur.

Couche services. C'est une API qui offre un certain nombre de primitives sous forme d'API à la couche application. Les primitives d'envoi et de réception de messages. Utilise les primitives de l'API de la couche réseau pour offrir ses services.

Couche application. C'est la couche applicative. C'est la couche avec celle du service qui nous intéresse dans ce cours.

La communication

Plusieurs définitions mais on va garder une définition du point de vue de la couche application. Une communication est une suite de trois actions : L'envoi. Le transport (ne nous intéresse pas). La réception. On s'intéresse à la sémantique des deux actions de communication sur l'application répartie. Ici on va voir les modèles les plus connus et utilisés : Communication synchrone. Communication asynchrone. Attention à ne pas confondre avec le synchrone et asynchrone du réseau.

Communication synchrone

La communication est dite synchrone quand les actions d'envoi et de réception ne sont possibles que si : L'émetteur se trouve dans un état d'envoi. Et le récepteur dans un état de réception.

Notion de canal : v = recevoir(c) - recevoir une valeur dans la variable v à envoyer(e,c) – envoi la valeur de l'expression e au canal c. Le processus appelle recevoir et se bloque jusqu'à ce qu'une valeur est envoyée sur le canal. Le processus appelle l'opération envoyer et se bloque jusqu’à la réception du message par le récepteur. Affectation distribuée v = e.

Avantage et inconvénient : Communiquer est une action de synchronisation. Un moyen efficace pour le contrôle d'exécution des applications réparties => des applications simples. Contraignant quand la synchronisation n'est pas nécessaire mais juste l'échange de données. Beaucoup de synchronisation tue la concurrence (synonyme d’inefficacité). La qualité de la conception est importante (risque des blocages....). Permet seulement une communication un-à-un. Solution: => Communication asynchrone.

Communication asynchrone

Il est très contraignant pour parler avec quelqu'un au téléphone. Il faut qu'il soit disponible pour écouter. Idée => utiliser les répondeurs. Solution : Celui qui appelle peut déposer son message et continu à faire tout ce qu'il a à faire et qui ne dépend pas de la réponse. Celui qui est appelé n'est pas obligé de définir son comportement en fonction de celui qui appelle. Il consulte son répondeur quand il a besoin de l'information.

Propriété recherchée : Action d'envoi n'est pas bloquante (peut être si le répondeur est plein). L'action de réception n’est pas bloquante sauf s’il n'y a pas de message en attente. Communication n-à-1. D'où l'utilisation de la notion de port. Adresse d'écoute. Doté d'une mémoire tampon.

envoyer(en,p) - envoit la valeur de l'expression en au port p. Le processus ne se bloque pas. Le message est stocké dans le tampon du port si celui-ci est non vide ou le récepteur n'est pas en attente. v = recevoir(p) - recoit une valeur du port p et la stocke dans une variable v. Le processus se bloque si le tampon est vide.

Sockets

Historique

Au début des années 80, l’ARPA (Advanced Research Projects Agency du département de la défense américaine) a assigné à l’Université de Berkeley en Californie la responsabilité de construire un système d’exploitation qui pourrait être utilisé comme plate-forme standard pour l’ARPANet, le prédécesseur de l’actuel Internet. Berkeley, déjà très connu pour son travail sur Unix, a ajouté une nouvelle interface au système d’exploitation pour implémenter les communications réseaux. Cette interface est généralement connue sous le nom de Berkeley-Socket. BSD : Berkeley Software Distribution est à l’origine de presque tout ce qui existe comme interface pour TCP/IP, et à l’origine même des Windows Sockets (WinSock).

Le modèle des sockets

Interface (point de communication) client/serveur utilisée à l’origine dans le monde UNIX et TCP/IP. Primitives pour le support de communications reposant sur les protocoles (TCP/IP, UDP/IP). Les applications client/serveur ne voient les couches de communication qu’à travers l’API socket (abstraction). Un Socket désigne l’extrémité d’un canal de communication bidirectionnel.

Sockets et OSI

Une socket est donc une interface entre les applications des utilisateurs et la couche transport.

Protocoles TCP et UDP

Les sockets peuvent être utilisée en deux modes de communication : Le mode connecté (comparable à une communication téléphonique), utilisant le protocole TCP (Transmission Control Protocol). Dans ce mode de communication, une connexion durable est établie entre les deux processus, de telle façon que l’adresse de destination n’est pas nécessaire à chaque envoi de données. Le mode non connecté (analogue à une communication par courrier), utilisant le protocole UDP(User Datagram Protocol). Ce mode nécessite l’adresse de destination à chaque envoi, et aucun accusé de réception n’est donné.

Fonctions d’une Socket

4 fonctions principales: Se connecter à une machine distante. Envoyer des données. Recevoir des données. Fermer la connexion. Un socket ne peut se connecter qu’à une seule machine. Un socket ne peut pas se reconnecter après la fermeture de connexion.

Connexion d’un socket

Pour qu’un socket puisse se connecter à une machine distante, cette dernière doit écouter les requêtes des clients sur le port spécifié. Il faut définir au minimum l’adresse de la machine distante et son port d’écoute pour pouvoir se connecter.

Connexion réseau

Adresse Internet de la machine. Numéro du port.

Adresses Internet

Connexion réseau. Adresse Internet de la machine. Numéro : 193.49.192.193. Adresse IP (Internet Protocol). Désignation par des noms symboliques. Association de noms symboliques aux adresses numériques. Domain Name Server (ou DNS). Exemple : google.com : ...............

Notion de port

Pourquoi les ports ? Sur une même machine, plusieurs services sont accessibles simultanément (web, email, etc.). Points d’accès : ports logiques (nombre de 65535). Rien à avoir avec les ports physiques (série et parallèle).

Désignation des ports : Port : numéro allant de 1 à 65535. Les ports 1 à 1023 sont réservés aux services courants : Exemples de ports réservés, FTP, 21/TCP. Telnet, 23/TCP. SMTP, 25/TCP. Login, 513/TCP. HTTP, 80/TCP. Ports utilisateur >= 1024.

Client-serveur en mode connecté

Le client : Ouvre une connexion avec le serveur avant de pouvoir lui adresser des appels, puis ferme la connexion à la fin de la suite d’opérations. Délimitation temporelle des échanges. Maintien de l’état de connexion pour la gestion des paramètres de qualité de service. Traitement des pannes, propriété d’ordre. Orienté vers traitement ordonné d’une suite d’appels. Ordre local (requêtes d’un client traitées dans leur ordre d’émission).

Le serveur : La gestion de données persistantes et protocole avec état.

Mode connecté : caractéristiques

Caractéristiques : Établissement préalable d’une connexion (circuit virtuel) : le client demande au serveur s’il accepte la connexion. Fiabilité assurée par le protocole de transport utilisé : TCP. Mode d’échange par flux d’octets : le récepteur n’a pas connaissance du découpage des données effectué par l’émetteur. Après initialisation, le serveur est "passif", il est activé lors de l’arrivée d’une demande de connexion d’un client. Un serveur peut répondre aux demandes de services de plusieurs clients: les requêtes arrivées et non traitées sont stockées dans une file d’attente.

Contrainte : Le client doit avoir accès à l’adresse du serveur (adresse IP et numéro de port).

Modes de gestion des requêtes : Itératif : le processus serveur traite les requêtes les unes après les autres. Concurrent : par création de processus fils pour les échanges de chaque requête.

Enchaînement des opérations (1)

Enchaînement des opérations (2)

Client-serveur en mode non connecté

Le client peut envoyer des appels au serveur à n’importe quel moment. Mode assez léger orienté : Traitement non ordonné des appels. Absence de mémoire entre appels successifs. Serveur sans données rémanentes et sans état. Exemple : Calcul de fonction numérique. DNS. NFS.

Mode non connecté : caractéristiques

Caractéristiques : Pas d’établissement préalable d’une connexion. Adapté aux applications pour lesquelles les réponses aux requêtes des clients sont courtes (un message). Protocole de transport utilisé : UDP. Mode d’échange par messages : le récepteur reçoit les données suivant le même découpage que celui effectué par l’émetteur.

Contraintes : Le client doit avoir accès à l’adresse du serveur (adresse IP et numéro de port). Pour répondre à chaque client, le serveur doit en récupérer l’adresse : il faut pour cela utiliser les primitives de la forme sendto et recvfrom.

Mode de gestion des requêtes : Itératif : le processus serveur traite les requêtes les unes après les autres. Concurrent : par création de processus fils pour les échanges de chaque requête.

Enchaînement des opérations (1)

Enchaînement des opérations (2)

FAQ

Qu'est-ce qu'un socket ?

Un socket est une interface entre les applications des utilisateurs et la couche transport, utilisée pour les communications réseau.

Quelle est la différence entre TCP et UDP ?

TCP est un protocole de communication connecté qui assure la fiabilité des données, tandis que UDP est un protocole non connecté qui ne garantit pas la livraison des données.

Qu'est-ce qu'un port dans le contexte des sockets ?

Un port est un point d'accès logique sur une machine qui permet de distinguer différents services (comme le web, l'email, etc.) sur une même machine.



Partagez vos remarques, questions , propositions d'amélioration ou d'autres cours à ajouter dans notre site

Enregistrer un commentaire (0)
Plus récente Plus ancienne

Publicité 1