Communication entre processus - UDP From Coulouris, Dollimore and Kindberg Distributed Systems: Concepts and Design Edition 3, © Addison-Wesley 2001 Chapitre.

Slides:



Advertisements
Présentations similaires
Multiple Protocol Label Switching (MPLS)
Advertisements

DOM Document Object Model. Généralités Standard du W3C Parseur XML – Génération dun arbre dobjet – Construction totale de larbre DOM est spécifié en IDL.
SAX Simple API for XML. Généralités API non standard développé par les membres du forum XML-DEV Parseur XML – Orienté événement – Parsing dynamique SAX.
Cours réseaux Essi2 Anne-Marie Déry
Programmation Réseaux Illustration : Les Sockets en Java
Programmation Réseaux Illustration : Les Sockets en Java
Programmation Réseaux Illustration : Les Sockets en Java Anne-Marie Déry À travailler seuls Concepts généraux Mise en œuvre Java.
Programmation Réseaux Illustration : Les Sockets en Java Anne-Marie Déry À travailler seuls Concepts généraux Mise en œuvre Java.
Communication par diffusion : Multicast
Programmation Réseaux Illustration : Les Sockets en Java Anne-Marie Déry À travailler seuls Concepts généraux Mise en œuvre Java.
Applications distribuées et parallèlisme La communication ne doit pas rester bloquée pour un client.
Programmation Réseaux Illustration : Les Sockets en Java Anne-Marie Déry À travailler seuls Concepts généraux Mise en œuvre Java.
Programmation Réseaux Illustration : Les Sockets en Java
Communication par diffusion : Multicast Clientn Serveur Client1 Client2 Gr.
Les Sockets et Java Cours Harmonisation Anne-Marie Déry.
Programmation Réseaux Illustration : Les Sockets en Java Anne-Marie Déry À travailler seuls Concepts généraux Mise en œuvre Java.
Programmation Réseaux Illustration : Les Sockets en Java Anne-Marie Déry À travailler seuls Concepts généraux Mise en œuvre Java.
Module Systèmes dexploitation Chapitre 6 Communication Interprocessus Partie III École Normale Supérieure Tétouan Département Informatique
OTB Analog module: Input configuration with TSX PREMIUM (TSXCPP110)
TP 7.1 synchronized et join Écrire un programme Java qui crée 1000 threads et maintient un compteur nb du nombre de threads créés jusque-là. Le thread.
Multicast Fiable Actif (protocole DyRAM) F. BOUHAFS, M. MAIMOUR, C. PHAM INRIA RESO/LIP VTHD++/Brest/03-04 Juillet 2003.
Voisin-Polian : Introduction à Java 1 Introduction à Java - les flots - Frédéric VOISIN – Nicole POLIAN FIIFO - « Remise à Niveau »
Plan du cours 5:Threads introduction Définition Création des Threads
TP2 ... MVC ? JList JLabel JSlider ImageLibrary Contrôleur Vue Modèle
JORAM Java Open Reliable Asynchronous Messaging

CURSUS DE FORMATION AUX NOUVELLES TECHNOLOGIES DE DEVELOPPEMENT UV Java Module Java Expert.
UV Réseaux / Java RMI Module Java Expert
UDP – User Datagram Protocol
JDBC: manipuler une base de données en Java IFT6800 – E 2007 Jian-Yun Nie.
Les entrées /sorties en Java François Bonneville
À travailler seuls Concepts généraux Mise en œuvre Java Année
Connexion base de données
Chapitre IV Object, interfaces, classes imbriquées.
Common Gateway Interface
BlueJ_XI 1 Java, les objets : tout de suite ! Gestion des erreurs : les exceptions Notes de cours associées au chapitre 11 tutorial BlueJ
Faculté I&C, Claude Petitpierre, André Maurer 1 Java.
Cours du 19 octobre. POO-L3 H. Fauconnier2 E) Constructeurs et héritage Le constructeurs ne sont pas des méthodes comme les autres: le redéfinition na.
Badr Benmammar Programmation concurrente et temps réel en Java Badr Benmammar
La programmation objet Illustration de la POO en Pascal
Master 1 SIGLIS java Lecteur Stéphane Tallard Chapitre 4 – Structures de contrôle.
Communication entre processus - TCP From Coulouris, Dollimore and Kindberg Distributed Systems: Concepts and Design Edition 3, © Addison-Wesley 2001 Chapitre.
NSY102 1 Concurrence compléments Notes de cours Cnam Paris jean-michel Douin, douin au cnam point fr 19 Mars 2007.
Le patron de conception « Strategy » Simon Durocher ( )
Programmation par Objets et Java
À travailler seuls Concepts généraux Mise en œuvre Java Année
IFT1025: Programmation 2 Internet Jian-Yun Nie. Concepts Communication sur lInternet Connexion dans Java.
Multi-Thread Jian-Yun Nie
1 IFT 6800 Atelier en Technologies dinformation Cours 7 : Le langage de programmation Java chapitre 5: Les API Java.
Exceptions IFT1025: Programmation 2 Jian-Yun Nie.
Badr Benmammar Formation Développeur Java Thread et Swing Badr Benmammar
Badr Benmammar Programmation concurrente et temps réel en Java Badr Benmammar
Cours 11 Threads. Chapitre X threads threadPOO-L3 H. Fauconnier3 Threads threads: plusieurs activités qui coexistent et partagent des données exemples:
CSI1502 Principes fondamentaux en conception des logiciels Chapter 8: Gestion des exceptions.
Les algorithmes distribués dans un contexte Multicast
Masters IIGLI et ILGII – Intranet internet extranet – – Claude Montacié 1 Cours n° 5 Sockets et processus légers.
Copyright © SUPINFO. All rights reserved Module 3 – IP Basics IP adresses, classes and routing Campus-Booster ID : 802.
Communication entre processus From Coulouris, Dollimore and Kindberg Distributed Systems: Concepts and Design Edition 3, © Addison-Wesley 2001 Chapitre.
Communication entre processus From Coulouris, Dollimore and Kindberg Distributed Systems: Concepts and Design Edition 3, © Addison-Wesley 2001 Chapitre.
Développement d’application client/serveur
Communication entre processus From Coulouris, Dollimore and Kindberg Distributed Systems: Concepts and Design Edition 3, © Addison-Wesley 2001 Chapitre.
Master 1 SIGLIS Java Lecteur Stéphane Tallard Chapitre 6 – Exceptions.
CEG3585/CEG3555 Tutorat 2 Hi ver 2013.
Entrées / Sorties.
Les sockets.
Schéma de conception Factory Method Exemple Sylvain Giroux.
Ingénierie des réseaux - Chapitre 2 bis Les sockets en Java
Ingénierie des réseaux
Architecture Client/Serveur
IP Multicast Text available on
Transcription de la présentation:

Communication entre processus - UDP From Coulouris, Dollimore and Kindberg Distributed Systems: Concepts and Design Edition 3, © Addison-Wesley 2001 Chapitre 4

Plan zCaractéristiques des protocoles de communication entre processus dans un système réparti yPrincipes généraux ycommunication xpar datagrammes Client-serveur Communication de groupe xpar flots (streams) Client-serveur yconstruction de protocoles pour les patterns de communication xclient-serveur : requête-réponse xgroupe : même message est envoyé à plusieurs processus ydonnées xreprésentation des objets dans les messages xréférences à des objets distants

Interface de programmation pour UDP zabstraction la plus simple pour la transmission de messages zpermet au processus émetteur d ’envoyer un message au processus destinataire zles paquets indépendants sont appelés datagrammes zspécification de la destination via un socket ysocket : référence indirecte à un port spécifique du processus destination sur son ordinateur hôte

Communication par datagrammes zUn datagramme ytransmis par UDP ( User Datagram Protocol) ypas d ’accusé de réception ypas de ré-émission yle message peut ne pas arriver

Fonctionnement zÉmetteur :processus client ycréer un socket lié à une adresse Internet et un port quelconque libre xpour recevoir la réponse zRécepteur : processus serveur ycréer un socket lié à une adresse Internet et un port serveur prédéterminé connu des clients  la méthode receive rend xl ’adresse Internet de l ’émetteur xle numéro de port de l ’émetteur xle message

Communication par datagrammes exemple simple : le serveur import java.net.*; import java.io.*; // UDP server repeatedly receives a request and sends it back to the client public class UDPServer { public static void main(String args[]){ DatagramSocket aSocket = null; try{ aSocket = new DatagramSocket(6789); // port convenu avec les clients byte[] buffer = new byte[1000]; while(true){ DatagramPacket request = new DatagramPacket(buffer, buffer.length); aSocket.receive(request); // réception bloquante DatagramPacket reply = new DatagramPacket( request.getData(), request.getLength(), request.getAddress(), request.getPort()); aSocket.send(reply); // émission non-bloquante } }catch (SocketException e){System.out.println("Socket: " + e.getMessage()); }catch (IOException e) {System.out.println("IO: " + e.getMessage());} } finally {if(aSocket != null) aSocket.close();} }}

import java.net.*; import java.io.*; // UDP client sends a message to the server and gets a reply public class UDPClient{ public static void main(String args[]){ // args give message contents and server hostname DatagramSocket aSocket = null; try { // socket + port quelconque pour envoyer et recevoir la réponse aSocket = new DatagramSocket(); byte [] m = args[0].getBytes(); InetAddress aHost = InetAddress.getByName(args[1]); int serverPort = 6789; // port convenu avec le serveur DatagramPacket request = new DatagramPacket(m, args[0].length(), aHost, serverPort); aSocket.send(request); byte[] buffer = new byte[1000]; DatagramPacket reply = new DatagramPacket(buffer, buffer.length); aSocket.receive(reply); System.out.println("Reply: " + new String(reply.getData())); }catch (SocketException e){System.out.println("Socket: " + e.getMessage()); }catch (IOException e){System.out.println("IO: " + e.getMessage());} }finally {if(aSocket != null) aSocket.close();}}} Communication par datagrammes exemple simple : le client

Contraintes liées à l ’usage de datagrammes zTaille des messages yle récepteur doit spécifier un vecteur d ’octets d ’une taille déterminée pour recevoir le message xle message peut être tronqué à l ’arrivée xsous IP taille des paquets maximale 2**16 octets xdans la plupart des environnements, max 8Kb, en général zSynchronicité yÉmission non-bloquante xsend rend le contrôle dès que le message est transmis aux protocoles UDP et IP xà l ’arrivée, le message est placé dans une file sur le socket associé au port de destination si aucun processus ne possède de socket associé à ce port, le message est écarté yRéception bloquante xjusqu ’à l ’arrivée d ’un message à moins qu ’un timeout n ’existe sur le socket xutilisation de threads distincts pour contrôler ce problème zTimeouts yServeur xattente infinie peut être acceptable yautres applications xmoins acceptable ou praticable xfixer un timeout sur le socket la valeur doit être suffisamment élevée par rapport au temps de transmission des messages zÉmetteurs multiples yLa méthode receive xne permet pas de spécifier une origine pour le message à lir xrend l ’adresse Internet et le port de l ’émetteur le destinataire peut savoir d ’où provient le message xpossible de connecter un socket pour datagramme à une adresse Internet et un port remote spécifique le socket ne peut recevoir et émettre que vers cette adresse

Modélisation des fautes zCommunication fiable ypropriété d ’intégrité : un message ne doit pas être corrompu, ni dupliqué xutilisation de checksum pour la détection de messages corrompus : responsabilité de l ’application yPropriété de validité: tout message est éventuellement livré xdes messages peuvent ne pas être livrés (faute par omission) erreur de checksum ou tampon plein à la source ou la destination yNote: des messages peuvent aussi ne pas être livrés dans le bon ordre zOn peut construire un système de communication fiable fondé sur les datagrammes : accusé de réception + checksums

Utilisation de UDP zPour certaines applications, il est acceptable d ’utiliser un système où il peut survenir des fautes par omission zExemple : DNS est implémenté à l ’aide de UDP zAvantage ypas de overhead lié à la garantie de livraison, à savoir xle besoin d ’emmagasiner de l ’état de la communication à la source et à la destination xla transmission de messages supplémentaires xle temps d ’attente (latency) chez l ’émetteur

zjava.net.DatagramPacket //sending data public DatagramPacket(byte[] buf, int length, InetAddress address, int port)InetAddress //receiving data public DatagramPacket(byte[] buf, int length) //accessors public InetAddress getAddress()InetAddress public int getPort() public byte[] getData() public int getLength() API Java pour les datagrammes

zjava.net.DatagramSocket public DatagramSocket(int port) public void send(DatagramPacket p) throws IOExceptionDatagramPacketIOException public void receive(DatagramPacket p) throws IOExceptionDatagramPacketIOException //If the timeout expires, a java.io.InterruptedIOException is raised, public void setSoTimeout(int timeout) throws SocketExceptionSocketException //When a socket is connected, receive and send will not perform any security checks on incoming and outgoing packets, other than matching the packet's and the socket's address and port. public void connect(InetAddress address, int port)InetAddress

Implémentation de la communication de groupe via UDP zIP multicast ydisponible seulement via UDP au niveau application ymulticast xsur un réseau local xsur une zone Internet plus grande (multicast routers) ttl (time to live) –nombre de routers qu ’un datagramme peut traverser –valeur = 1 --> réseau local yun group multicast est spécifié par une adresse IP de classe D xgroupes permanents : à xgroupe temporaire : besoin d ’une adresse libre yl ’appartenance à un groupe est dynamique yon peut envoyer un datagramme à un groupe multicast sans en être membre

import java.net.*;import java.io.*; public class MulticastPeer{ public static void main(String args[]){ // args give message contents and destination multicast group (e.g." ") MulticastSocket s =null; try { InetAddress group = InetAddress.getByName(args[1]); s = new MulticastSocket(6789); s.joinGroup(group); byte [] m = args[0].getBytes(); DatagramPacket messageOut ; messageOut = new DatagramPacket(m, m.length, group, 6789); s.send(messageOut); byte[] buffer = new byte[1000]; for(int i=0; i< 3;i++) { // get messages from others in group DatagramPacket messageIn ; messageIn = new DatagramPacket(buffer, buffer.length); s.receive(messageIn); System.out.println("Received:" + new String(messageIn.getData())); } s.leaveGroup(group); }catch (SocketException e){ System.out.println("Socket: " + e.getMessage()); }catch (IOException e){ System.out.println("IO: " + e.getMessage()); }finally {if(s != null) s.close();}} }

Communication par datagrammes Broadcasting : MulticastClient public static void main(String[] args) throws IOException { MulticastSocket socket = new MulticastSocket(4446); InetAddress address = InetAddress.getByName(" "); socket.joinGroup(address); DatagramPacket packet; for (int i = 0; i < 5; i++) { // get a few quotes byte[] buf = new byte[256]; packet = new DatagramPacket(buf, buf.length); socket.receive(packet); String received = new String(packet.getData()); System.out.println("Quote of the Moment: " + received); } socket.leaveGroup(address); socket.close(); }

Communication par datagrammes Broadcasting : MulticastServer package chapitre4; public class MulticastServer { public static void main(String[] args) throws java.io.IOException { new MulticastServerThread().start(); }

Communication par datagrammes Broadcasting : MulticastServerThread public class MulticastServerThread extends QuoteServerThread public void run() { while (moreQuotes) { try {byte[] buf = new byte[256]; // construct quote String dString = null; if (in == null) dString = new Date().toString(); else dString = getNextQuote(); buf = dString.getBytes(); // send it InetAddress group = InetAddress.getByName(" "); DatagramPacket packet = new DatagramPacket (buf, buf.length, group, 4446); socket.send(packet); // sleep for a while try {sleep((long)(Math.random() * FIVE_SECONDS)); } catch (InterruptedException e) { } } catch (IOException e) { e.printStackTrace(); moreQuotes = false;}} socket.close();}

Communication de groupe zMulticast yenvoi d ’un message par un processus à chaque membre d ’un groupe de processus zinfrastructure pour construire des systèmes répartis tels que ytolérants aux fautes par réplication des services xmulticast de la requête d ’un client à un groupe de serveurs ytrouver des serveurs de découverte dans des systèmes avec réseautage spontané yaméliorer la performance grâce à la réplication de données xchaque fois que les données changent, multicast aux processus qui gèrent les copies ypropager des notifications d ’événements, xJini lorsque de nouveaux services de lookup annoncent leur existence

Modélisation des fautes zIdentique à celle des diagrammes UDP yfaute par omission zsi un routeur multicast tombe yles clients dépendants de ce routeur ne reçoivent plus les messages, même si les clients locaux peuvent les recevoir zordre d ’arrivée n ’est pas garanti

Effets de la fiabilité et de l ’ordonnancement des messages zTolérance aux fautes fondée sur la duplication de services ypour demeurer consistants entre eux, les serveurs xont le même état initial xet doivent réaliser les mêmes opérations dans le même ordre xles serveurs doivent tous recevoir (ou non) un message et ce dans le même ordre

Effets de la fiabilité et de l ’ordonnancement des messages zDécouverte de serveurs ou services dans un cadre de réseautage spontané yJini : les processus qui recherchent les services de découverte multicastent les requêtes à intervalle périodique pour un certain temps après leur mise en route ypas de conséquence si un message est perdu

Effets de la fiabilité et de l ’ordonnancement des messages zAmélioration de la performance grâce à la réplication des données yeffet de la perte de message ou de leur ordonnancement inconsistant dépend xde la méthode de duplication xet de l ’importance que les duplicatas soient totalement à jour yexemple xpas de conséquence dans le cas de la duplication des newsgroups

Effets de la fiabilité et de l ’ordonnancement des messages zPropagation de la notification d ’événements yJini : le service de publication utilise le IP multicasting pour informer les parties intéressées à intervalles fréquents de l ’arrivée de nouveaux services disponibles

Variation sur le multicast zMulticast fiable ytout message transmis est reçu par tous ou par personne zMulticast totalement ordonné ytous les messages transmis à un groupe rejoignent les membres dans le même ordre zvoir Chapitre 11 de Coulouris et al.

API Java pour IP multicast zpublic class MulticastSocket zextends DatagramSocketDatagramSocket