La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

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

Présentations similaires


Présentation au sujet: "Communication entre processus - TCP From Coulouris, Dollimore and Kindberg Distributed Systems: Concepts and Design Edition 3, © Addison-Wesley 2001 Chapitre."— Transcription de la présentation:

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

2 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

3 Communication par flots (streams) zAPI pour TCP zabstraction d un flot d octets dans lequel les processus peuvent écrire ou lire

4 Abstraction du niveau TCP zabstraction de yla taille des messages ximplémentation de TCP décide de la taille des paquets xl application peut forcer le transfert yla perte de messages xle protocole TCP utilise des accusés de réception yle flot de contrôle xle protocole TCP essaie d apparier la vitesse de traitement des processus qui lisent et écrivent si l émetteur est trop rapide, il est bloqué pour permettre au destinataire de consommer les données yla duplication et l ordonnancement des messages xdes identificateurs de messages sont associés à chaque paquet IP yles destinations des messages xétablissement d une connexion entre les processus requête connect du client au serveur requête accept du serveur au client xoverhead considérable dans le cas d une seule requête

5 //TCP client makes connection to server, sends request and receives reply import java.net.*; import java.io.*; public class TCPClient { public static void main (String args[]) { // arguments supply message and hostname of destination Socket s = null; try{ int serverPort = 7896; s = new Socket(args[1], serverPort); DataInputStream in = new DataInputStream( s.getInputStream()); DataOutputStream out = new DataOutputStream( s.getOutputStream()); out.writeUTF(args[0]); // UTF is a string encoding String data = in.readUTF(); System.out.println("Received: "+ data) ; }catch (UnknownHostException e) { System.out.println("Sock:"+e.getMessage()); }catch (EOFException e){System.out.println("EOF:"+e.getMessage()); }catch (IOException e){System.out.println("IO:"+e.getMessage());} }finally {if(s!=null) try {s.close();} catch (IOException e) {System.out.println("close:"+e.getMessage());}} }

6 //TCP server makes a connection for each client and then echoes the clients request import java.net.*; import java.io.*; public class TCPServer { public static void main (String args[]) { try{ int serverPort = 7896; // port convenu à lavance ServerSocket listenSocket = new ServerSocket(serverPort); while(true) { Socket clientSocket = listenSocket.accept(); Connection c = new Connection(clientSocket); } } catch(IOException e) {System.out.println("Listen :"+e.getMessage());} } // this figure continues on the next slide

7 //TCP server makes a connection for each client and then echoes the clients request class Connection extends Thread { DataInputStream in; DataOutputStream out; Socket clientSocket; public Connection (Socket aClientSocket) { try { clientSocket = aClientSocket; in = new DataInputStream( clientSocket.getInputStream()); out =new DataOutputStream( clientSocket.getOutputStream()); this.start(); } catch(IOException e){System.out.println("C:"+e.getMessage());} } public void run(){ try {String data = in.readUTF(); // an echo server out.writeUTF(data); } catch(EOFException e){System.out.println("EOF:"+e.getMessage()); } catch(IOException e) {System.out.println("IO:"+e.getMessage());} } finally{ try {clientSocket.close();} catch (IOException e){/*close failed*/}} }

8 Etablir la connexion zLe temps de l établissement de la connexion yUn processus joue le rôle de client yUn processus joue le rôle de serveur ypar la suite, les processus peuvent agir comme des pairs zClient yCréation d un stream socket lié à un port quelconque yrequête connect au port serveur de l autre processus zServeur ycréation d un socket associé à un port serveur pour recevoir les requêtes de connexion des clients ylorsque le serveur accepte une requête de connextion, création d un nouveau stream socket chez le serveur pour communiquer avec le client

9 Echange de données zLe socket du client et celui du serveur sont connectés par une paire de streams ychaque socket possède xun stream de lecture xun stream d écriture.

10 Fermeture de la connexion zLorsqu une application ferme un socket, yil n y aura plus d écriture dans son stream d écriture ytransmission des données restantes du tampon de sortie yindication que le stream est rompu zLorsqu un processus se termine ou faillit, tous les sockets sont fermés

11 Problèmes liés à l utilisation de streams zAppariement des données yles processus doivent s entendre sur le format et le contenu des données transmises zBlocage yla lecture dans un stream est bloquante yl écriture dans un stream peut être bloquée par le mécanisme de flot de contrôle TCP zThreads ylorsqu un serveur accepte une connexion, il crée en général un nouveau thread en charge de la communication avec le client yil existe des environnements où les threads ne nont pas disponibles (e.g. Unix)

12 Modélisation des fautes zPropriété d intégrité yTCP utilise xdes checksums pour rejeter les paquets corrompus xdes numéros de séquence pour détecter et rejeter les paquets dédoublés zPropriété de validité yTCP utilise xtimeouts et retransmissions pour gérer les paquets perdus zConclusion : garantie de livraison

13 Modélisation des fautes zTCP ne fournit pas des communications fiables car il ne garantit pas la livraison des messages peu importe les circonstances zSi la perte de paquets dépasse une certaine limite ou si le réseau est endommagé ou congestionné, yTCP ne recevra pas d accusé de réception yaprès un certain temps, la connexion sera déclaré rompue. yLe processus utilisant la connexion ne peut distinguer entre une défaillance du réseau ou une défaillance du processus à l autre bout de la connexion yles processus ne peuvent pas savoir si les derniers messages transmis ont été reçus

14 Services utilisant TCP zHTTP yhypertext transfer protocol ycommunication entre browsers et serveurs web zFTP yfile transfer protocol yparcours de répertoire et transfert de fichiers zTelnet ysession de type terminal sur un ordinateur remote zSMTP ysimple mail transfer protocol ytransmission de courriers entre ordinateurs

15 API Java pour les streams TCP java.net.ServerSocket ycréation d un socket pour l écoute des requêtes de connexion ypublic Socket accept()throws IOExceptionSocket ypublic static void setSocketFactory(SocketImplFactory fac)SocketImplFactory throws IOExceptionIOException zjava.net.Socket ycréation d un socket + connection ypublic Socket(InetAddress address, int port) throws IOExceptionInetAddress IOException ypublic InputStream getInputStream() throws IOExceptionInputStreamIOException public OutputStream getOutputStream() throws IOExceptionOutputStreamIOException


Télécharger ppt "Communication entre processus - TCP From Coulouris, Dollimore and Kindberg Distributed Systems: Concepts and Design Edition 3, © Addison-Wesley 2001 Chapitre."

Présentations similaires


Annonces Google