II. Construction d applications réparties en mode message



Documents pareils
Protocole applicatif. Quel est le service de transport nécessaire à une application? Besoin en service de transport

Le modèle client-serveur

Couche application 1

Master Miage Réseau. La couche Application

Computer Networking: A Top Down Approach Featuring the Internet, 2 nd edition. Jim Kurose, Keith Ross Addison-Wesley, July ENPC.

Introduction. Adresses

Divers éléments. Protocoles d'applications. Un agent Utilisateur. MUA - Agents Utilisateurs de Courriel. Simple Mail Transfer Protocol

Pour plus de détails concernant le protocole TCP conférez vous à la présentation des protocoles Internet enseignée pendant.

Réseaux M2 CCI SIRR. Introduction / Généralités

Couche application. La couche application est la plus élevée du modèle de référence.

Introduction aux Technologies de l Internet

L3 informatique Réseaux : Configuration d une interface réseau

Réseaux Locaux. Objectif du module. Plan du Cours #3. Réseaux Informatiques. Acquérir un... Réseaux Informatiques. Savoir.

FTP & SMTP. File Transfert Protocol. Deux applications fondamentales pour le réseau Internet. Un protocole d échange de fichier «au dessus» de TCP :

Chapitre I. La couche réseau. 1. Couche réseau 1. Historique de l Internet

Outils de l Internet

Chapitre : Les Protocoles

Réseaux. 1 Généralités. E. Jeandel

Serveurs de noms Protocoles HTTP et FTP

Présentation du modèle OSI(Open Systems Interconnection)

18 TCP Les protocoles de domaines d applications

Services Réseaux - Couche Application. TODARO Cédric

Cours CCNA 1. Exercices

FTP & SMTP. Deux applications fondamentales pour le réseau Internet.

2. DIFFÉRENTS TYPES DE RÉSEAUX

Présentation Internet

Plan. Programmation Internet Cours 3. Organismes de standardisation

II/ Le modèle OSI II.1/ Présentation du modèle OSI(Open Systems Interconnection)

Programmation Réseau. ! UFR Informatique ! Jean-Baptiste.Yunes@univ-paris-diderot.fr

L3 informatique TP n o 2 : Les applications réseau

Algorithmique et langages du Web

SIP. Plan. Introduction Architecture SIP Messages SIP Exemples d établissement de session Enregistrement

Le modèle client-serveur

DHCP et NAT. Cyril Rabat Master 2 ASR - Info Architecture des réseaux d entreprise

Les clés d un réseau privé virtuel (VPN) fonctionnel

Chapitre 1: Introduction générale

M1 Informatique, Réseaux Cours 9 : Réseaux pour le multimédia

Ch2 La modélisation théorique du réseau : OSI Dernière maj : jeudi 12 juillet 2007

Réseaux et protocoles Damien Nouvel

2. MAQUETTAGE DES SOLUTIONS CONSTRUCTIVES. 2.2 Architecture fonctionnelle d un système communicant.

20/09/11. Réseaux et Protocoles. L3 Informatique UdS. L3 Réseaux et Protocoles. Objectifs du cours. Bibliographie

SSH, le shell sécurisé

Daniel POULIN DRT 3808 (version 2010) Faculté de droit, Université de Montréal

Plan du Travail. 2014/2015 Cours TIC - 1ère année MI 30

Chapitre VII : Principes des réseaux. Structure des réseaux Types de réseaux La communication Les protocoles de communication

Cisco Certified Network Associate

Devoir Surveillé de Sécurité des Réseaux

NOTIONS DE RESEAUX INFORMATIQUES

Gestion distribuée (par sockets) de banque en Java

Les Réseaux Informatiques

Programmation Internet en Java

Cours de sécurité. Pare-feux ( Firewalls ) Gérard Florin -CNAM - - Laboratoire CEDRIC -

Le protocole TCP. Services de TCP

CAS IT-Interceptor. Formation «Certificate of Advanced Studies»

Culture informatique. Cours n 9 : Les réseaux informatiques (suite)

1. Fonctionnement de l Internet 2. Protocoles applicatifs 3. Programmation réseau

Le réseau Internet.

Fonctionnement d Internet

Domain Name System. Schéma hiérarchique. Relation

LE RESEAU GLOBAL INTERNET

Communication inter-processus (IPC) : tubes & sockets. exemples en C et en Java. F. Butelle

Mr. B. Benaissa. Centre universitaire Nâama LOGO

Glossaire. ( themanualpage.org) soumises à la licence GNU FDL.

Internet et Programmation!

Club informatique Mont-Bruno Séances du 18 janvier et du 17 février 2012 Présentateur : Michel Gagné

Dis papa, c est quoi un bus logiciel réparti?

Tous les logiciels cités dans ce document sont des marques déposées de leurs propriétaires respectifs

Couche Transport TCP et UDP

Internets. Informatique de l Internet: le(s) Internet(s) Composantes de l internet R3LR RENATER

La couche transport. La couche Transport. La couche Transport et Internet. Cours Réseau Esial 2ème. 5. La couche transport TCP/UDP et les applications

1.Introduction - Modèle en couches - OSI TCP/IP

Quelques protocoles et outils réseaux

Protocoles IP (2/2) M. Berthet. Les illustrations sont tirées de l ouvrage de Guy Pujolle, Cours réseaux et Télécom Contributions : S Lohier

Administration réseau Résolution de noms et attribution d adresses IP

Plan. Le système de transfert de fichiers d'internet. Introduction aux systèmes de transfert de fichiers Le protocole FTP.

M1 MIAGE - Réseau TP1

Rappel: Le routage dans Internet. Contraintes. Environnement et contraintes. La décision dans IP du routage: - Table de routage:

Le filtrage de niveau IP

FTPS AVEC UNE APPLIANCE FAST360 EN COUPURE. Table des matières

GENERALITES. COURS TCP/IP Niveau 1

SYSTEME DE GESTION DES ENERGIES EWTS EMBEDDED WIRELESS TELEMETRY SYSTEM

Configurer le Serveur avec une adresse IP Statique (INTERFACE :FastEthernet) : et un masque

Programmation client-serveur sockets - RPC

TP3. Mail. Attention aux fausses manoeuvres lors de ce TP vous pouvez endommager votre mail sur ouindose.

Administration des ressources informatiques

Le service FTP. M.BOUABID, Page 1 sur 5

Domain Name System ot ol F. N 1

Réseaux grande distance

Rappels réseaux TCP/IP

L identité numérique. Risques, protection

Applications en réseau

Les services usuels de l Internet

Internet Protocol. «La couche IP du réseau Internet»

Capture, Filtrage et Analyse de trames ETHERNET avec le logiciel Wireshark. Etape 1 : Lancement des machines virtuelles VMWARE et de Wireshark

Systèmes et Réseaux (ASR 2) - Notes de cours Cours 14

Technologies de l Internet

Services OSI. if G.Beuchot. Services Application Services Présentation - Session Services Transport - Réseaux - Liaison de Données - Physique

Le service de nom : DNS

Domain Name System. F. Nolot

INTERNET & RESEAUX. Dino LOPEZ PACHECO lopezpac@i3s.unice.fr

Transcription:

II. Construction d applications réparties en mode message 1

Au sommaire Rappel sur le réseau Internet L infrastructure Notion de protocole Historique Mode C/S en mode message Interface de programmation TCP Interface de programmation UDP Les applis C/S Internet Conclusion 2

1. Rappel sur le réseau Une application répartie Coopération d un ensemble de logiciels s exécutant sur plusieurs sites reliés par des réseaux de communication Communication par message sur un réseau Un message : une structure d octets passés entre deux niveaux d un système Appli., Couche OSI, S.E. Entête permet l interprétation du corps du message Ensemble de messages + règles d échanges : protocoles 3

1. Rappel sur le réseau Application Le modèle OSI Application Présentation Présentation Session Transport Réseau Liaison Physique Medium Session Transport Réseau Liaison Physique Medium Réseau Réseau Liaison Physique Medium Liaison Physique Medium 4

1. Rappel sur le réseau Application Application Présentation Présentation Session Transport Réseau Liaison Physique Medium Session Transport Réseau Liaison Physique Medium API Réseau Liaison Physique Medium Réseau Liaison Physique Medium Le mode5de fonctionnement

1. Rappel sur le réseau Application Application Présentation Présentation Session Transport Réseau Liaison Physique Medium Session Transport Réseau Liaison Physique Medium Réseau Liaison Physique Medium Protocole Réseau Liaison Physique Medium Le 6mode de fonctionnement

1. Rappel sur le réseau Pourquoi une architecture en couche? 1 structure explicite permet l identification des relations des parties d un système complexe Le modèle en couche La modularisation facilite la maintenance et sa mise à jour Changement de réalisation des services d une couche est transparent au reste du système La structuration en couche est considérée comme puissante? 7

1.1 Le réseau Internet router Des millions de machines Stations de travail, serveurs, portable, PDA qui exécutent des app. réparties server workstation mobile local ISP Des liaisons filaire, radio, satellite Des routeurs : regional ISP transmettent les paquets (datagrammes) à travers le réseau 8 company network

1.1 Le réseau Internet Application : applis supportées par le réseau http, smtp, ftp Transport : transfert de bout en bout tcp, udp Réseau : routage des datagrammes de la source vers la destination ip, protocoles de routage Liaison : transfert de données entre éléments voisins ppp, ethernet Physique : bits sur le câble 9 Application Transport Réseau Liaison Physique

1.1 Le réseau Internet Le plus petit serveur Web au monde http://www-ccs.cs.umass.edu/~shri/ipic.html Un grille pain météo http://dancing-man.com/robin/toasty/ Un tas d applications! 10 Récepteur de photos sur IP http://www.ceiva.com/

1.2 Historique de l Internet 1961-1972 : principes de la commutation de paquets 1961 : Kleinrock la théorie des files d attente démontre l efficacité de la commutation de paquets 1970 : 1964 : Baran utilisation de la com. de paquets dans les réseaux militaires - NCP (Network Control Protocol) premier protocole hôte à hôte - Démonstration publique d ARPAnet 1967 : ARPAnet financé par Advanced - Premier programme d envoi de mails Research Project Agency -- ARPAnet est composé de 15 noeuds 1969 : premier nœud ARPAnet opérationnel 11

1.2 Historique de l Internet 1972-1980 : interconnexion & nouveaux réseaux propriétaires 1970 : réseau satellite ALOHA à Hawaii 1973 : PhD de Metcalfe s sur Ethernet 1974 : Cerf et Kahn architecture pour l interconnexion de réseau Les principes de l interconnexion de réseau selon Cerf et Kahn : - minimalisme, autonomie, pas d échanges requis pour interconnecter des réseaux Fin des années 70 : réseaux propriétaires - modèle de service «best effort» DECnet, SNA, XNA - routeurs sans état Fin des années 70 : commutation de -Contrôle décentralisé paquets de longueur fixe (précurseur d ATM) définissent l Internet d aujourd hui 12

1.2 Historique de l Internet 1980-1990 : nouveaux protocoles et prolifération de réseaux 1982 : définition du prot. SMTP - Nouveaux réseaux nationaux : Csnet, BITnet, NSFnet, Transpac (avec le minitel) 1983 : définition du DNS pour la traduction nom-adresse - 100 000 hôtes connectés dans une confédération de réseaux 1983 : déploiement de TCP/IP 1983 : 1ère connexion française à l Internet 1985 : définition du prot. FTP 1988 : contrôle de congestion dans TCP 13

1.2 Historique de l Internet Les années 1990 : commercialisation, le WWW Début années 90 : ARPAnet démantelé 1991 : NSF lève les restrictions sur l utilisation commerciale de NSFnet (démantelé en 1995) Fin des années 1990 : 50 million d ordinateurs sur l Internet +de 100 millions d utilisateurs Les liens du réseau dorsal à 1Gbps Début années 1990 : WWW hypertext (Bush 1945, Nelson 1960) HTML, HTTP : Berners-Lee 1994 : Mosaïc, Netscape 14

1.2 Historique de l Internet Internet : croissance en 20 ans Millions d ordinateurs Croissance de l Internet en nb d ordinateurs connectés - Croissance exponentielle - a doublé de taille tous les 9 à 12 mois de 1981 à 1998 15

1.3 L infrastructure routeur Protocoles envoi et réception de messages IP, TCP, UDP, HTTP; FTP, PPP station serveur mobile Réseau local Internet Réseau de réseaux Hiérarchique Privé/public Réseau métropolitain Standards RFC : Request for Comments Fournisseur D accès Internet 16

1.3 L infrastructure Une infrastructure de communication pour App. réparties. WWW,email, jeux, commerce électronique, vote, partage de fichiers (MP3) Des services de communication Connecté Non connecté cyberspace [Gibson]: a consensual hallucination experienced daily by billions of operators, in every nation,..." 17

1.4 Notion de protocole Des protocoles humains Des protocoles réseaux Quelle heure est-il? J ai une question Introductions Des machines plutôt que des humains Toutes les activités de communication dans l internet sont gouvernées par des protocoles Envois de messages Les protocoles definissent le spécifiques Actions spécifiques exécutées format, l ordre des messages lorsque des messages sont envoyés et reçus à travers des reçus, entités réseaux, et les actions à entreprendre lors de la réception des messages 18

1.4 Notion de protocole Bonjour Connexion TCP Req. Bonjour Connexion TCP Rep. As-tu l heure GET http://www.lifl.fr/index.html 14:00 «Fichier» Temps Autres protocoles humains? 19

1.4 Notion de protocole Différents modes Pour les extrémités du réseau Modèle Client/serveur WWW, email, Modèle peer-to-peer interaction symétrique e.g.: Gnutella, KaZaA Pour le coeur du réseau Commutation de circuits Téléphone Commutation de paquets Discrétisation - Internet 20

1.4 Notion de protocole Service orienté connexion Objectif : transférer des données de bout en bout Connexion (handshaking): initialisation et préparation du transfert de données à l avance Etat d initialisation pour les deux hôtes communicants TCP Transmission Control Protocol Service TCP (RFC 793) Transfert de données fiable, ordonné Perte : ack et retransmission Contrôle de flux L émetteur s adapte à la vitesse du récepteur Contrôle de congestion Service orienté connexion de l Internet 21 Les émetteurs ralentissent lorsque le réseau est congestionné

1.4 Notion de protocole Service orienté sans connexion Objectif : transférer des données de bout en bout UDP User Datagram Protocol (RFC 768) Service orienté sans connexion Transfert de données non fiable Pas de contrôle de flux Pas de contrôle de congestion Les Applis utilisant TCP HTTP(WWW), FTP (transfert de fichiers), Telnet (login à distance), SMTP (email) Les applis utilisant UDP téléconférence, téléphone sur Internet, SNMP, 22

2. Mode C/S en mode message application transport network data link physical Protocole de niveau applicatif Un élément du logiciel applicatif qui définit les messages echangés entre applications et les actions qui utilisent les services de communication fournis pas les protocoles de niveau bas (TCP, UDP) application transport network data link physical 23 application transport network data link physical

2. Mode C/S en mode message Client : Initie le contact avec le serveur Demande des services au serveur, Web: client intégré dans le navigateur, e-mail: dans le lecteur de mails application transport network data link physical request reply Server : Fournit les services demandés par le client Serveur Web envoie la page demandée, serveur mail délivre les e-mails 24 application transport network data link physical

2. Mode C/S en mode message Exemple de réalisation avec une communication par message ou communication asynchrone - Emission non bloquante - Réception bloquante - Communication par message typé - Communication sur les processus destinataires ou sur des ports sur des boîtes à lettres (portes) de communication Send(bals, serv, params) Msg=get(bals) Requête Msg=get(bals) exec(serv) Réponse Put(balc,res) Client Serveur 25

2. Mode C/S en mode message API : Application Programming Interface Définit l interface entre les couches application et transport Socket : API Internet Q: Comment un processus identifie un autre processus pour communiquer? deux processus communiquent par envoi et réception de données sur des sockets Par l adresse IP qui accueille l hôte distant Par le numéro de port qui permet de déterminer le processus participant à la communication 26

Adressage Internet Chaque hôte est un point d accès au réseau et possède une adresse physique Internet (@IP) unique une machine peut avoir plusieurs accès => plusieurs @IP @IP = un entier 32 bits pour IPv4 (128 pour IPv6) 4 classes d adressage A : 128 réseaux, 16 M de points d accès par réseau B : 16 K réseaux, 64 K de points d accès par réseau C : 2 M réseaux, 256 points d accès par réseau D : adresse multicast IP Adressage physique <---> adressage symbolique gérée par une fédération de Domain Naming System 134.206.10.18 <-> www.lifl.fr 127.0.0.1 <-> localhost 27

La classe java.net.inetaddress Représentation des adresses réseaux Internet 134.206.10.18, www.lifl.fr Création InetAddress host = InetAddress.getLocalHost(); InetAddress host = InetAddress.getByName("www.lifl.fr"); InetAddress host[] = InetAddress.getAllByName("www.lifl.fr"); Propriétés Adresse symbolique : String gethostname() Adresse IP : String gethostaddress() Adresse binaire : byte[] getaddress() boolean ismulticastaddress() Méthodes equals, tostring, hashcode 28

Obtenir un objet java.net.inetaddress import java.net.inetaddress; try { InetAddress adresselocale = InetAddress.getLocalHost(); } catch(java.net.unknownhostexception ex) {... } try { InetAddress adresse = InetAddress.getByName("www.lifl.fr"); } catch(java.net.unknownhostexception ex) {... } try { InetAddress[] adresses = InetAddress.getAllByName("www.lifl.fr"); } catch(java.net.unknownhostexception ex) {... } 29

Accès aux propriétés d un objet java.net.inetaddress public static void afficher(inetaddress adresse) { String chaine = adresse.tostring(); String nom = adresse.gethostname(); String ip = adresse.gethostaddress(); byte[] binaire = adresse.getaddress(); boolean multicast = adresse.ismulticastaddress()) } 30

Quel service de transport pour quelle app.? Perte de données Qques apps (e.g., audio) tolèrent des pertes de données D autres apps (e.g., transfert de fichiers, telnet) demandent un transfert de données fiable à 100% Largeur de bande Qques apps (e.g., multimedia) demandent une bande de transmission minimum pour être efficace D autres apps ( apps élastiques ) peuvent fonctionner avec la largeur qu ils ont! Délai de transmission Qques apps (e.g., téléphone sur Internet, jeux interactifs) demandent des délais courts pour être efficace 31

Besoins en services de transport des app. communes Application Perte données Larg. bande Transfert de fichiers e-mail Documents Web audio/video temps-réel Pas de perte Pas de perte Tolère perte Tolère perte audio/videostockage Jeux interactifs App. financières Tolère perte Tolère perte Pas de perte Sensible au temps non élastique non élastique non élastique audio: 5Kb-1Mboui, 100 s msec video:10kb-5mb Même chose oui, Qques secs Ques Kbps up oui, 100 s msec oui et non élastique 32

Les protocoles Transport des applications Internet Application e-mail Accès distant Web Transfert de fichier Flux multimedia SGF réparti Téléphone sur Internet Protocole Couche Application Protocole Couche transport smtp [RFC 821] telnet [RFC 854] http [RFC 2068] ftp [RFC 959] Propriétaire (e.g. RealNetworks) NFS Propriétaire (e.g., Vocaltec) TCP TCP TCP TCP TCP ou UDP 33 TCP ou UDP typiquement UDP

3. Interface de programmation TCP API Socket introduit en 1981 dans UNIX BSD4.1 Créées, utilisées et détruites explicitement par les apps. Réalisation du paradigme client/server deux types de service transport via l API socket : datagramme non fiable fiable, orienté flux d octet socket Une interface locale à la machine, créée par l app, contrôlée par l OS (une porte ) dans laquelle le processus d application peut envoyer et recevoir des messages vers/d un autre processus d application (distant ou local) 34

3. Interface de programmation TCP Socket : une porte entre le processus d application et le protocole de bout en bout (UDP ou TCP) Contrôlé par le développeur d application Contrôlé Par le Système d exploitation process process socket TCP avec Tampons TCP avec tampons socket internet Hôte ou serveur Hôte ou serveur 35 Contrôlé par le développeur d application Contrôlé Par le Système d exploitation

3. Interface de programmation TCP Le client doit contacter le serveur -> Le processus du serveur doit avoir été lancé Le serveur doit avoir créé une socket d accueil des clients Le client contacte le serveur Création d une socket-tcp locale En précisant l adresse IP et le no de port du serveur Quand le client TCP crée la socket : le client TCP établit la connexion vers le serveur TCP Quand le serveur TCP est contacté par le client, il crée une nouvelle socket pour que le processus serveur puisse communiquer avec le client 36 Permet au serveur de communiquer avec plusieurs clients

3. Interface de programmation TCP keyboard Exemple d app C/S: input stream Le client lit une ligne sur l entrée standard (infromuser stream), l envoie vers le serveur via une socket (outtoserver stream) Le serveur lit des lignes venant de la Processus socket Client Le serveur convertit la ligne en majuscule et la renvoie vers le client Le client lit et affiche la ligne Flux de sortie: modifiée venant de la socket Séquence d octets (infromserver stream) En sortie du processus 37 monitor infromuser Process output stream input stream outtoserverinfromserver clientsocket TCP socket to network from network Flux d entrée: Séquence d octets En entrée du processus client TCP socket

3. Interface de programmation TCP Serveur (fonctionne sur hostid) Client création socket, port=x, pour des requêtes entrantes welcomesocket = ServerSocket() Attente de requêtes Init. de connexion connectionsocket = welcomesocket.accept() TCP connexion Envoi de la requête sur clientsocket Lecturede la requête à partir de connectionsocket Ecriture de la réponse sur connectionsocket Lecture de la réponse sur clientsocket fermeture connectionsocket Création de socket hostid, port=x clientsocket = Socket() 38 fermeture clientsocket

3. Interface de programmation TCP Client Java import java.io.*; import java.net.*; class TCPClient { public static void main(string argv[]) throws Exception { String sentence; String modifiedsentence; Création Flux d entrée Création Socket client, Connexion au serveur Création Flux de sortie Attaché à la socket BufferedReader infromuser = new BufferedReader(new InputStreamReader(System.in)); Socket clientsocket = new Socket("hostname", 6789); DataOutputStream outtoserver = new DataOutputStream(clientSocket.getOutputStream()); 39

3. Interface de programmation TCP Client Java suite Création du flux d entrée Attaché à la socket BufferedReader infromserver = new BufferedReader(new InputStreamReader(clientSocket.getInputStream())); sentence = infromuser.readline(); Envoi d une ligne Vers le serveur outtoserver.writebytes(sentence + '\n'); modifiedsentence = infromserver.readline(); Lecture d une ligne Venant du serveur System.out.println("FROM SERVER: " + modifiedsentence); clientsocket.close(); } } 40

3. Interface de programmation TCP Serveur Java import java.io.*; import java.net.*; class TCPServer { Création d une socket de connexion Attente sur la socket De connexion de contact du client Création d un flux Entrant attaché à la socket public static void main(string argv[]) throws Exception { String clientsentence; String capitalizedsentence; ServerSocket welcomesocket = new ServerSocket(6789); while(true) { Socket connectionsocket = welcomesocket.accept(); BufferedReader infromclient = new BufferedReader(new InputStreamReader(connectionSocket.getInputStream())); 41

3. Interface de programmation TCP Serveur Java (suite) Création d un flux Attaché à la socket DataOutputStream outtoclient = new DataOutputStream(connectionSocket.getOutputStream()); Lecture d une ligne Sur la socket clientsentence = infromclient.readline(); capitalizedsentence = clientsentence.touppercase() + '\n'; Écriture d une Ligne sur la socket outtoclient.writebytes(capitalizedsentence); } } } Fin de la boucle while, retour et attente d une autre connexion cliente 42

La classe java.net.serversocket Pour les serveurs attendant des connexions clientes Différents constructeurs : ServerSocket s = new ServerSocket(8000); ServerSocket s = new ServerSocket(port,tailleFile); si port=0 alors le système choisit automatiquement le port Propriétés : adresse IP : InetAddress getinetaddress(); port : int getlocalport(); timeout : setsotimeout, getsotimeout Méthodes : attendre une connexion : Socket accept(); fermer la socket : void close(); affichage : String tostring() => ServerSocket[addr=,port=,localport=8000] 43

La classe java.net.socket Utiliser durant les communications TCP/IP Différents constructeurs pour établir la connexion : Socket s = new Socket("www.lifl.fr", 80); Socket s = new Socket(inetAddress, 8000); Propriétés : adresse IP : InetAddress getinetaddress(), getlocaladress() port : int getport(), getlocalport() flux in : InputStream getinputstream() flux out : OutputStream getoutputstream() options set/get : TcpNoDelay, SoLinger, SoTimeout Méthodes : fermeture de la socket : void close(); affichage : String tostring() => Socket[addr=www.lifl.fr/134.206.10.x,port=80,localport=50000] 44

La relation entre deux sockets connectées Socket A sur M1 Socket B sur M2 @IP=«M2» Distante port=5040 @IP=«M1» Distante port=6070 pipe réseau @IP=«M1» Locale port=6070 A.getInetAddress() A.getPort() A.getLocalInetAddress() A.getLocalPort() @IP=«M2» Locale port=5040 == == == == 45 B.getLocalInetAddress() B.getLocalPort() B.getInetAddress() B.getPort()

L application Telnet Telnet Ecran Serveur écrit lit Socket TCP écrit Clavier lit Telnet = terminal texte pour dialoguer avec tout serveur TCP utilisant un protocole ASCII 46

Quelques mots sur la classe java.lang.thread Permet de lancer des flots d exécution simultanés au sein d un même processus calcul parallèle, animation,... attente sur entrée/sortie bloquante Méthodes démarrage : void start(); arrêt : void interrupt(); attente fin : void join(); traitement : void run();... Doit être héritée ou instanciée sur 1 objet implantant l interface java.lang.runnable 47

Le thread de redirection de flux public class RedirigerFlux extends Thread { protected java.io.bufferedreader fluxlecture = null; protected java.io.printstream fluxecriture = null; public RedirigerFlux (java.io.inputstream fl, java.io.outputstream fe) { fluxlecture = new java.io.bufferedreader( new java.io.inputstreamreader(fl)); fluxecriture = new java.io.printstream(fe); super.start(); } public void run() { try { String s; while ( (s = fluxlecture.readline())!= null ) fluxecriture.println(s); } catch (java.io.ioexception err) {} } } 48

L application Telnet en Java public class Telnet { public static void main(string args[]) throws Exception { java.net.socket socket = new java.net.socket(machine, port); // Création du thread redirigeant la socket vers l'écran. RedirigerFlux socketversecran = new RedirigerFlux(socket.getInputStream(), System.out); // Création du thread redirigeant le clavier vers la socket. RedirigerFlux clavierverssocket = new RedirigerFlux(System.in, socket.getoutputstream()); // Attendre la fin de lecture sur la socket.. socketversecran.join(); // Arrêter de lire le clavier. clavierverssocket.interrupt(); } } 49

Un serveur TCP/IP multi - clients Serveur Connexion Client ServerSocket Client connecté Socket Client connecté Socket accept() read() read() Primitives accept() et read() bloquantes! => besoin de threads dans le serveur pour gérer simultanément plusieurs clients 50!

Un serveur TCP/IP multi-threadé import java.net.*; public class ServeurMultiThreade { public static void main(string args[]) throws Exception { ServerSocket serveur = new ServerSocket(#port); while (true) { System.out.println(serveur + " en attente!"); Socket client = serveur.accept(); new GestionnaireClient(client); } serveur.close(); } } 51

Le thread gestionnaire des clients public class GestionnaireClient extends Thread { protected java.net.socket client; public GestionnaireClient(java.net.Socket s) { client = s; super.start(); } public void run() { try { // Traiter les requêtes clientes... puis client.close(); } catch(exception exc) {... } } } 52

4. Interface de programmation UDP UDP: pas de connexion entre client et serveur Pas d acquittement L émetteur indique systématiquement l adresse IP et le no de port Le serveur doit extraire du message l adresse IP et le no port de l émetteur UDP: les données peuvent être reçues dans le désordre ou perdues Point de vue application UDP fournit un transfert non fiable de groupes d octets ( datagrammes ) entre client et serveur 53

4. Interface de programmation UDP Serveur (tournant sur hostid) Client création socket, port=x, pour Requête entrante: serversocket = DatagramSocket() création socket, clientsocket = DatagramSocket() Création datagramme avec adresse (hostid, port=x, envoi datagramme En utilisant clientsocket Lecture requête de serversocket Écriture réponse vers serversocket en spécifiant L adresse et le port Du client, Lecture réponse de clientsocket fermeture clientsocket 54

4. Interface de programmation UDP keyboard Client Java UDP input stream monitor infromuser Process Processus Client Output: envoi de UDP packet sendpacket UDP packet receivepacket UDP socket to network from network paquets (TCP envoyait un flux d octets ) Socket client UDP Input: réception de clientsocket 55 paquets (TCP recevait un flux d octets )

4. Interface de programmation UDP Client Java UDP import java.io.*; import java.net.*; Création Flux entrant Création socket client Traduction nom hôte en Adresse IP en utilisant le DNS class UDPClient { public static void main(string args[]) throws Exception { BufferedReader infromuser = new BufferedReader(new InputStreamReader(System.in)); DatagramSocket clientsocket = new DatagramSocket(); InetAddress IPAddress = InetAddress.getByName("hostname"); byte[] senddata = new byte[1024]; byte[] receivedata = new byte[1024]; String sentence = infromuser.readline(); senddata = sentence.getbytes(); 56

4. Interface de programmation UDP Création datagramme avec données, longueur, adr. IP, port Envoi datagramme vers serveur Client Java UDP(suite) DatagramPacket sendpacket = new DatagramPacket(sendData, senddata.length, IPAddress, 9876); clientsocket.send(sendpacket); DatagramPacket receivepacket = new DatagramPacket(receiveData, receivedata.length); Lecture datagramme Venant du serveur clientsocket.receive(receivepacket); String modifiedsentence = new String(receivePacket.getData()); System.out.println("FROM SERVER:" + modifiedsentence); clientsocket.close(); } } 57

4. Interface de programmation UDP Serveur Java UDP import java.io.*; import java.net.*; Création Socket datagramme Sur le port 9876 class UDPServer { public static void main(string args[]) throws Exception { DatagramSocket serversocket = new DatagramSocket(9876); byte[] receivedata = new byte[1024]; byte[] senddata = new byte[1024]; while(true) { Création espace pour recevoir datagramme Réception datagramme DatagramPacket receivepacket = new DatagramPacket(receiveData, receivedata.length); serversocket.receive(receivepacket); 58

4. Interface de programmation UDP String sentence = new String(receivePacket.getData()); Def. Adr IP Et no port de L émetteur InetAddress IPAddress = receivepacket.getaddress(); int port = receivepacket.getport(); String capitalizedsentence = sentence.touppercase(); senddata = capitalizedsentence.getbytes(); Création datagramme Pour envoi DatagramPacket sendpacket = Vers client new DatagramPacket(sendData, senddata.length, IPAddress, Ecriture Datagramme Sur socket } port); serversocket.send(sendpacket); } } Serveur Java UDP (suite) Fin du While, Retour et attente d un autre datagramme59

La classe java.net.datagrampacket(1/2) Représente un paquet UDP tampon de données, longueur, adresse IP, port Constructeurs new DatagramPacket(buffer, taille) new DatagramPacket(buffer, taille, inetaddress, port) Propriétés Buffer : byte[] getdata() Taille buffer : int getlength() Adresse IP : InetAddress getaddress() Port IP : int getport() Modification : setdata, setlength, setaddress, setport 60

La classe java.net.datagrampacket(2/2) Un émetteur crée un DatagramPacket avec les données, la longueur, l'adresse et le numéro de port du destinataire byte[] tampon = new byte[8096]; ia = InetAddress.getByName("www.lifl.fr"); DatagramPacket dp = new DatagramPacket(tampon, tampon.length, ia, 1000); Un récepteur alloue le tampon pour recevoir le paquet et le passe au constructeur de DatagramPacket byte[] tampon = new byte[8096]; dp = new DatagramPacket(tampon,tampon.length); A la réception, le DatagramPacket contient les données, l adresse et le port de l émetteur Le tampon peut être réutilisé pour plusieurs envois / réceptions 61

La classe java.net.datagramsocket Une prise pour pouvoir communiquer en UDP peut être connectée à une socket paire socket anonyme : new DatagramSocket() socket avec port : new DatagramSocket(1000) Constructeurs Propriétés new DatagramSocket(1000,inetAddress) l adresse locale : InetAddress getlocaladdress() l adresse distante : InetAddress getaddress() le port local : int getlocalport() le port distant : int getport() Méthodes connexion : void connect(inetaddress ia, int port) émission : void send(datagrampacket dp) réception : void receive(datagrampacket dp) fermeture : void close() 62

Références sockets Java-tutorials: All About Sockets (Sun tutorial), http://www.javaworld.com/javaworld/jw-12-1996/jw-12sockets.html Socket Programming in Java: a tutorial, http://www.javaworld.com/javaworld/jw-12-1996/jw-12sockets.html 63

Synthèse sur les sockets TCP/IP API simple et fiable peu de primitives orientées communication Programmation clients!= programmation serveurs! asymétrie des primitives de communication De nombreuses questions à se poser avant d utiliser les primitives! Voir cours problèmes et solutions Rien pour la structuration de l application! Seulement approprié pour des applications réparties simples (1 client vers 1 serveur) ou comme brique de base pour des couches middleware plus évoluées par ex. : WWW, FTP, email, news,... 64

5. Les applis C/S Internet FTP : File Transfer Protocol SMTP : Simple Mail Transfer Protocol DNS : Domain Name System et HTTP? dans le cours suivant 65

5.1 ftp : le protocole de tranfert de fichiers utilisateur Transfert de fichiers FTP FTP FTP Interface client serveur utilisateur Système de fichiers local Transfert de fichiers de/vers une machine hôte Modèle client/serveur client: côté qui initie le transfert server: hôte distant ftp: RFC 959 ftp serveur: port 21 66 Système de fichiers distant

5.1 ftp: contrôle et données sur des connections séparées Le client ftp contacte le serveur ftp sur le port 21, en indiquant qu il s agit d une connexion TCP Deux canaux en // sont ouverts: contrôle: échange de commandes, réponses entre client et server. Données : transfert de données de/ftp vers le serveur client Le serveur ftp maintient un état vis-àvis du répertoire courant du client, authentification 67 Connexion TCP pour contrôle port 21 Connexion TCP pour données port 20 FTP serveur

5.1 commandes & réponses ftp Les commandes: Les codes retour Emises sous forme ASCII sur le canal de contrôle USER username PASS password Code d état et texte 331 Username OK, password required 125 data connection already open; transfer starting 425 Can t open data connection 452 Error writing file LIST retourne la liste de fichiers du répertoire courant RETR filename demande (gets) de fichier STOR filename stocke (puts) un fichier sur la machine distante 68

5.2 Courrier électronique Agent utilisateur Trois composants majeurs: Agents utilisateurs Serveurs de messagerie Le protocole : SMTP L agent utilisateur Un lecteur de message Composition, lecture, édition de messages électroniques e.g., Eudora, Outlook, elm, Netscape Messenger Gère les messages entrants et sortants stockés sur le serveur Serveur mail SMTP SMTP SMTP Serveur mail Agent utilisateur Agent utilisateur 69 File de messages sortants BAL utilisateur Agent utilisateur Serveur mail Agent utilisateur Agent utilisateur

5.2 Courrier éléctronique : les serveur de messagerie Agent utilisateur Serveurs de messagerie BAL contient les messages entrants (à lire) pour l utilisateur File de messages (messages sortants) à envoyer Protocole smtp entre serveurs de messagerie pour envoi de messages Serveur mail SMTP SMTP SMTP Serveur mail Agent utilisateur Agent utilisateur 70 Agent utilisateur Serveur mail Agent utilisateur Agent utilisateur

5.2 Courrier électronique: SMTP [RFC 821] utilise tcp pour tranférer des messages entre serveurs de messagerie sur le port 25 Transfert direct: serveur émetteur vers serveur récepteur trois phases connexion transfert de messages déconnexion Interaction commande/réponse interaction commande: texte ASCII réponse: code état et phrase messages doivent être en 7-bit ASCII 71

5.2 Une simple interaction smtp S: C: S: C: S: C: S: C: S: C: C: C: S: C: S: 220 hamburger.edu HELO crepes.fr 250 Hello crepes.fr, pleased to meet you MAIL FROM: <alice@crepes.fr> 250 alice@crepes.fr... Sender ok RCPT TO: <bob@hamburger.edu> 250 bob@hamburger.edu... Recipient ok DATA 354 Enter mail, end with "." on a line by itself Do you like ketchup? How about pickles?. 250 Message accepted for delivery QUIT 221 hamburger.edu closing connection 72

5.2 Le format des messages SMTP (RFC 821): protocole pour l échange de messages + RFC 822: standard définissant le format des messages : entête, e.g., entête To: From: Subject: different des commandes smtp! corps corps le message, caractères ASCII seulement 73 Ligne blanche

5.2 format des messages : extensions multimedia MIME: extension multimedia, RFC 2045, 2056 Lignes supplémentaires dans l entête du message pour déclarer que le type du contenu est de type MIME Version MIME méthode utilisée Pour coder les données Type de données multimedia, soustype, Déclaration paramètres Données encodées From: alice@crepes.fr To: bob@hamburger.edu Subject: Picture of yummy crepe. MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Type: image/jpeg base64 encoded data.........base64 encoded data 74

5.2 types MIME Content-Type: paramètres type/subtype; Texte Exemples de sous-types plain, html Image Exemples de sous-types jpeg, gif Audio Exemples de sous-types : basic (8-bite mu-law encoded), 32kadpcm (32 kbps coding) Video Exemples de sous-types mpeg, quicktime Application Autres données qui doivent être traitées directement par un lecteur Exemples de sous-types msword, octet-stream 75

5.2 Exemple Multipart From: alice@crepes.fr To: bob@hamburger.edu Subject: Picture of yummy crepe. MIME-Version: 1.0 Content-Type: multipart/mixed; boundary=98766789 --98766789 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain Dear Bob, Please find a picture of a crepe. --98766789 Content-Transfer-Encoding: base64 Content-Type: image/jpeg base64 encoded data.........base64 encoded data --98766789-76

5.1 Protocoles d accès SMTP Agent utilisateur SMTP Serveur De l émetteur POP3 ou Agent IMAP utilisateur Serveur Du récepteur SMTP: envoie les messages vers le serveur du récepteur Protocole d accès : aller chercher les msgs sur le serveur POP: Post Office Protocol [RFC 1939] identification (agent <-->server) et chargement IMAP: Internet Mail Access Protocol [RFC 1730] Plus de caractéristiques manipulation des msgs stockés sur le serveur HTTP: Hotmail, Yahoo! Mail, etc. 77

5.2 Protocole POP3 Phase d authorisation Commandes client : user: nom pass: password Réponses serveur +OK -ERR Phase de transaction client: list: liste les no de messages retr: recherche message par no dele: efface quit 78 S: C: S: C: S: +OK POP3 server ready user alice +OK pass hungry +OK user successfully logged C: S: S: S: C: S: S: C: C: S: S: C: C: S: list 1 498 2 912. retr 1 <message 1 contents>. dele 1 retr 2 <message 1 contents>. dele 2 quit +OK POP3 server signing off on

5.3 DNS: Domain Name System Personne: Plusieurs identificateurs : no secu, nom, no passeport Hôtes, routeurs Internet: Adresse IP (32 bit) utilisée pour acheminer les datagrammes nom, e.g., chomolungma.lifl.fr utilisé par les humains Q: correspondance entre noms et ad. IP? Domain Name System: Base de données répartie réalisée par une hiérarchie de serveurs de noms Protocole de la couche application : hôte, routeurs, serveurs de noms doivent résoudre les noms (traduction nom/adresse) pour communiquer note: fonction coeur de l Internet 79

5.3 les serveurs de noms du DNS Pourquoi ne pas centraliser le DNS? point sensible (panne) volume du trafic base de données centralisée distante maintenance Pas de serveurs qui connaissent toutes les traductions nom/ip Serveur de noms local Serveur de noms faisant autorité: Pas de passage à l échelle! Chaque domaine a un serveur de noms local (dit par défaut) Une requête DNS est dirigée en premier vers le serveur local 80 Pour un hôte: celui qui stocke l adresse et le nom de l hôte Peut exécuter la traduction nom/ adresse pour ce nom d hôte

5.3 Les serveurs racines DNS contacté par le serveur de noms local qui ne peut pas résoudre un nom Serveur racine: Contacte le serveur de noms faisant autorité si la traduction n est pas connue Fait la traduction Renvoie la traduction au serveur de noms local a NSI Herndon, VA c PSInet Herndon, VA d U Maryland College Park, MD g DISA Vienna, VA h ARL Aberdeen, MD k RIPE London i NORDUnet Stockholm m WIDE Tokyo j NSI (TBD) Herndon, VA e NASA Mt View, CA f Internet Software C. Palo Alto, CA 13 serveurs racines dans le monde b USC-ISI Marina del Rey, CA l ICANN Marina del Rey, CA 81

5.3 un exemple simple DNS Serveur de noms racine chomolungma.lifl.fr veut l @ IP de gaia.cs.umass.edu 1. contacte son serveur DNS local dns.lifl.fr 2. dns.lifl.fr contacte le serveur racine, si nécessaire 3. Le serveur racine contacte le serveur faisant autorité, dns.umass.edu, si nécessaire 2 5 Serveur local dns.lifl.fr 1 chomolungma.lifl.fr Serveur faisant autorité dns.umass.edu 6 Machine demandeur 82 3 4 gaia.cs.umass.edu

5.3 un exemple DNS Serveur racine Serveur racine: Peut ne pas connaître le serveur de noms faisant autorité Peut connaître un serveur de noms intermédiaire: qu il contacte pour trouver le serveur de noms faisant autorité 6 2 7 Serveur local dns.lifl.fr 1 3 Serveur de noms intermédiaire dns.umass.edu 8 Hôte demandeur 4 5 Serveur faisant autorité dns.cs.umass.edu Chomolungma.lifl.fr 83 gaia.cs.umass.edu

5.3 DNS: requêtes itératives Serveur racine Requête récursive Déplace la résolution de nom vers le serveur contacté Charge? Etat? 2 iterated query 3 4 Requête itérative Le serveur contacté donne en réponse le serveur suivant à contacter je ne connais pas ce nom, mais essayez avec ce serveur 7 Serveur local dns.lifl.fr 1 8 Hôte demandeur Serveur intermédiaire dns.umass.edu 5 6 Serveur faisant autorité dns.cs.umass.edu Chomolungma.lifl.fr 84 gaia.cs.umass.edu

5.3 DNS : cache et mise à jour des données Dès qu un serveur de noms apprend une traduction @IP/nom, il la stocke dans son cache Les entrées du cache sont associées à un timer et disparaissent après un certain temps Les mécanismes de mises à jour/notification sont définies dans RFC 2136 http://www.ietf.org/html.charters/dnsind-charter.html 85

5.3 les enregistrements DNS DNS: BD répartie qui gère des ressources (RR) Format RR : (name, Type=A name est un nom d hôte value est une @ IP Type=NS name est un nom de domaine (e.g. foo.com) value est une @ IP du serveur faisant autorité pour ce domaine value, type, ttl) Type=CNAME name est le nom alias pour certains noms canoniques e.g. www.ibm.com est en réalité servereast.backup2.ibm.com value est le nom canonique Type=MX 86 value et le nom du serveur de messagerie associé à name

5.3 Le protocole DNS, les messages Le protocole DNS : les requêtes et les réponses ont le même format Entête msg identification: 16 bits # pour requête, les réponses aux requêtes utilisent le même # flags: requête ou réponse souhaite récursion recursion disponible réponse par serveur faisant autorité 87

5.3 Le protocole DNS les messages Champs type, nom pour une requête RRs en réponse à la requête Enregistrement pour serveurs faisant autorité Info add. 88

6. Conclusion Ce qu il faut retenir messages de contrôle vs données Échange requête /réponse Un client demande des infos ou un service Le serveur répond avec des données et un code d état dans ou hors bande centralisé vs. decentralisé Les formats de message: avec ou sans état entête: champs donnant des infos sur les données données: info devant être communiquée transfert de messages fiable ou non fiable 89 sécurité: authentification

Bibliographie Computer Networking, Kurose, Ross, Addison Wesley, 2001 Programmer en réseau avec Java, E.R. Harold, O Reilly, 2001 Nombreux RFC 90