Cours complet, format pdf compact 3x3
Transcription
Cours complet, format pdf compact 3x3
Format denseignement Objectifs du cours Objectifs Réseaux 13 semaines pour : Architectures et Protocoles Acquérir des notions sur : les supports matériels des réseaux le fonctionnement des matériels le rôle et la réalisation des logiciels de base 1h30 de cours par semaine 1h30 de TD & TP par semaine Gilles Grimaud USTL www.lifl.fr/~grimaud port du cours Réseau Support du cours Réseau Tour dhorizon Support du cours Réseau Introduction aux Réseaux � Définir et classifier les réseaux numériques � Les supports matériels de la communication Un réseau numérique est constitué dun ensemble dordinateurs connectés entre eux par des liaisons physiques. � La notion de réseau Un réseau numérique permet léchange entre machines distantes de données qui sont si nécessaire relayées de liaison en liaison par les machines intermédiaires. � La notion dassemblage, de connexion � Les bases de lexploitation applicative port du cours Réseau Support du cours Réseau Classification des réseaux selon leur topologie Connexion série Simplex Gilles Grimaud par Gilles Grimaud Réseaux Locaux LAN Deux modes de fonctionnement dun réseau : avec connexion une machine établit une connexion avec une autre ; ensuite elles échangent des données ; finalement elles terminent la connexion. ⇒ communication sur le modèle du téléphone. sans connexion ⇒ communication sur le modèle du courrier postal. Classification des réseaux selon leur taille Structure dinterconnections Echanger des informations numériques une machine envoie un message (appelé datagramme) ; le réseau achemine le datagramme jusquau destinataire ; Le datagramme est stocké dans une « boite au lettre »; Support du cours Réseau Le destinataire récupère le message lorsquil le souhaite. � Conclusion : le modèle OSI bus Maîtriser la programmation : des logiciels de base dun réseau de clients et de serveurs TCP/UDP Réseaux métropolitains MAN Réseaux étendus WAN Connexion parallèle Simplex 1 par Gilles Grimaud Connexion série Half-duplex Classification des réseaux selon leur topologie étoile 2 Boucle simple Boucle double Connexion parallèle Half-duplex Connexion série Full-duplex 1m 10 m 100 m 1 km 10 km maillage complet 100 km Connexion en mode point à point maillage irrégulier Réseaux en mode point à point Classification des réseaux selon leurs topologies anneau Transmission de la valeur 1010 1 bus 1 0 Les supports matériels de la communication entre ordinateurs t 0,001 0,002 0,0005 0,0015 = Sur une liaison série 1 seul bits transmit à chaque Top dhorloge. 1 Bauds = 1 bit/s. 0 0V t 0,001 0,002 0,0005 0,0015 avec T = 0,0005 t = g(t) 0,001 0,002 0,0005 0,0015 avec T = 0,0005 avec T = 0,0005 avec T = 0,0005 (e.g. téléphone) Les supports matériels de la communication entre ordinateurs 1/2 + 2/π sin (2000 πt) + 2/3π sin (6000 πt) + 2/5π sin (10000 πt) + 1/2 + 2/π sin (2000 πt) + = 2/3π sin (6000 πt) + 2/5π sin (10000 πt) + Avec Support du cours Réseau ∞ = g(t) = T 0 bn = 2/T g(t)dt ∑ an sin(2πnƒt) + n=1 ∞ ∑ n=1 bn cos(2πnƒt) T 0 0 g(t)sin(2πnƒt)dt T g(t)cos(2πnƒt)dt Dont la somme infinie constitue une série de Fourier. Notion de liaison Convenir dun codage détecteur derreur pour les données transmises. 10 par Gilles Grimaud Lexemple du bit de parité : c/2 + ƒ = 1/Τ (fréquence fondamentale) c = 2/T Chaque harmonique correspond à un signal sinusoïdal donné. Notion de liaison La liaison entre deux ordinateurs nécessite des procédures détablissement, de par Gilles Grimaud maintient et de libération des transmissions de données sur le support physique. Ces procédures détectent et corrigent, si possible, les erreurs dues au support physique de communication. t 0,001 0,002 0,0005 0,0015 Support du cours Réseau Transporter un signal carré sur un support analogique Support du cours Réseau un signal analogique est une somme (limitée) dharmoniques. 0V avec T = 0,0005 an = 2/T port du cours Réseau = t Temps 5V 0V 5V 0,001 0,002 0,0005 0,0015 Les supports matériels de la communication entre ordinateurs 5V 0V 1 Transformer la valeur en un signal carré Réseaux en mode de diffusion 5V Quantité dinformation transmise = 1/T Bauds. (T temps entre deux tops dhorloge) 1T 2T 3T 4T Top dhorloge Support du cours Réseau hertzien 2 Les supports matériels de la communication entre ordinateurs Sur une liaison parallèle à n bits 1 Bauds = n bits/s. T port du cours Réseau Gilles Grimaud Les supports matériels de la communication entre ordinateurs Notion de liaison Dialogue de liaison de type send and wait 11 Data 1 ACK 0 01000001 0..0..1..0..0..0..0..0..1 0 01000001 Data 2 1 01110000 1..0..1..1..1..0..0..0..0 1 01110000 NACK 1 01100001 1..0..1..1..0..0..0..0..1 1 01100001 1 01000110 1..0..1..0..0..0..0..1..0 1 01000010 erreur Data 2bis ACK émetteur récepteur Notion de réseau Un réseau est constitué de différentes liaisons entre ordinateurs. La gestion dun réseau nécessite lexistence de mécanismes dadressage des différentes machines, de routage et de contrôle de flux des paquets de données transportés sur chaque liaison. port du cours Réseau @4 @1 LA LD LB @5 LA LD LB @5 @2 Table @5 Liaison @ des Liaison @ 1-2;4-5 LC @1 LA @ 6-10 LE @2 LB LC @3 @7 @ 3;6-10 LC @4 LD LE @ 9 @8 LBus @ 10 Table @3 LA LD LB @5 @4 LC Table @8 @ des Liaison @ 1-4 LE @ 6-7;9-10 LBus @3 @ des Liaison @ 1-5 LC @1 LA @2 @2 LB @3 LC @4 LD Support du cours Réseau Gestion via un routage centralisé : Contrôle de flux Table @3 @ 1-4 @1 Table @5 - Fixe : pas de mise à jour. Tables @ des Liaison @ des Liaison fixées une fois pour toute en fct de la @ 1-2;4-5 LC @ 1 LA topologie du réseau. - Synchrone : Tables mises à jour au @ 6-10 LE @2 LB même moment par un centre de @ 3;6-10 LC contrôle. (à partir dinformations reçues dynamiquement). @4 LD - Asynchrone : tables mises à jour indépendamment les unes des autres dans certaines parties du réseau (avec Table @8 émission dun compte-rendu de son @ des Liaison état au centre de contrôle). LE @4 ACK=N+1 SYN séq=P 19 Echange de données SYN séq=P+1 Data n°X LE @ 9 @7 @6 @8 @ 10 LBus Support du cours Réseau Techniques : Contrôle par crédits & crédits dédiés. Contrôle par fenêtre. Connexion TCP Gestion dune fenêtre démission : Dernières données écrites par lapplication. Ouverture passive par Gilles Grimaud 0 Echange de données ACK=N+1 FIN séq=P ACK=P+1 1 20 2 3 Dernier paquet émis acquitté. 4 5 6 7 6 7 Dernier paquet émis non acquitté. Gestion dune fenêtre de réception : FIN séq=N Client minimiser le temps de transfert des paquets ; éviter la congestion du réseau ; @3 LF Data n°X+1 ACK=X+1 Fin de connexion @2 LC Mode connecté (e.g. TCP) Ouverture active Le contrôle de flux a pour objectif : LA LD LB @5 @ 6-7;9-10 LBus inondation, hot potatoes, routage adaptatif. SYN séq=N Les applications séchangent en règle générale des données de taille et de contenu variés. Une connexion assure aux par Gilles Grimaud applications la capacité de transférer des séquences de données. Pour cela elle fragmente (défragmente) ces données en paquets autonomes qui sont émis sur (reçus depuis) le réseau. Elle assure la fiabilité des données en gérant la perte de paquets ou leur corruption. Liaison @3 Support du cours Réseau Routage décentralisé Notion de connexion Table @5 @ des LC Routage Table @3 @ des @6 @2 Support du cours Réseau @1 @4 Routage @1 Routage port du cours Réseau Gilles Grimaud Adressage Dernières données lues par lapplication. Fin de connexion 0 1 2 Dernier paquet reçu et acquitté. Serveur 3 4 5 Bases dexploitation logicielle Pour une application, le réseau apparaît comme un support sur lequel il est possible dinitier lémission ou dattendre la réception de données à destination, ou en provenance de nimporte quelle autre application. port du cours Réseau Base dexploitation logicielle Coté Client : Coté Serveur : Socket s; InputStream iS; int t; s = new socket("134.206.11.6",765); iS = s.GetInputStream(); t=iS.read(); // t == 43 s.close(); ServerSocket serv; Socket s; OutputStream oS; serv = new Serversocket(765); s = serv.accept(); oS = s.getOutputStream(); oS.write(43); s.close(); Support du cours Réseau Conclusion : Le modèle OSI Support du cours Réseau Support physique de communication Couche 7 : Application Couche 7 : Application Couche 6 : Présentation Couche 6 : Présentation Couche 5 : Session Couche 5 : Session Couche 4 : Transport Couche 4 : Transport Couche 3 : Réseau Couche 3 : Réseau Couche 2 : Liaison Couche 2 : Liaison Couche 1 : Physique Couche 1 : Physique Récepteur Emetteur Support de transmission Le câble coaxial : Connexion série Half-duplex Couche 1 : Physique Connexion parallèle Simplex Cur de cuivre Connexion en mode point à point Gaine isolante Gaine isolante Transport physique de linformation Connexion en mode diffusion Support du cours Réseau Support de transmission La paire torsadée : Support de transmission La fibre optique : Gaine Isolante Cur de cuivre par Gilles Grimaud Gilles Grimaud Jusquà 150MHz en large bande (fiabilité 1/107). Support encombrant. Télévision et téléphone. Version 10 Base 2 (10MHz sur 200m) Support du cours Réseau Version 100 Base 5 (100MHz sur 500m) Connecté au poste avec un BNC (Ethernet fin) e.g. Ethernet 802.11 e.g. Ethernet port du cours Réseau Tresse de cuivre Origine : téléphone (prise RJ45). 56kbit/s avec les modems récents (fiabilité 1/105). 10 (voir 100) Mbits/s (sur quelques mètres). Utilisée dans les réseaux 10 Base T (étoile en mode diffusion ou point à point). Evolution vers 100 Base T voir « Gigabit ». 28 Gaine de silice (quelques µm) Fibre optique par Gilles Grimaud Support de transmission récent. Supporte le transport de plusieurs GBits/s sur de très longues distances (fiabilité 1/1012). Faible sensibilité électromagnétique & difficultés découte. Emetteur diode Electroluminescente (LED) ou diode Laser. Récepteur photosensible. Support de transmission Sans fil : 29 Différents types : infrarouge, hertzien (2.4GHz) Débit : 11 MBits/s Portée moyenne : 10m à 150m Forte sensibilité aux perturbations électromagnétiques. Pas de sécurité physique. Amplification du signal & Interconnexion de réseau @1 @2 @3 @4 @5 Signaux échangés entre ordinateurs @6 Transmission de la valeur 1010 1 Répéteur 1 @1 Sur une liaison parallèle à n bits 1 Bauds = n bits/s. T @2 Commutateur port du cours Réseau 0 @4 @4 @2 Quantité dinformation transmise = 1/T Bauds. (T temps entre deux tops dhorloge) Sur une liaison série 1 seul bit transmis à chaque Top dhorloge. 1 Bauds = 1 bit/s. @1 Hub 2 Codages en bande de base Tension @3 @3 1 0 0 1 pas de transmission tension positive 1 tension négative 0 1 1 0 0 1 0 0 Gilles Grimaud Codages en bande de base par Gilles Grimaud 0 1 Code biphasé (ou Manchester) Front montant sur lintervalle : 0 Front descendant sur lintervalle : 1 (détecter les fronts) 0 0 1 0 Transmission modulée Problème de la transmission en bande de base : dégradation du signal. 37 par Gilles Grimaud Temps 0 1 Code RZ (Return to Zero) Tension 1 1 Code bipolaire Tension 1 Temps Circuit ouvert : 0 Front descendant : 1 Support du cours Réseau Support du cours Réseau Circuit fermé alternativement positive et négative : 1 Sinon : 0 (Eviter de maintenir un signal continu) (détecter un front descendant) Codages en bande de base 0 0 Tension Code NRZ (Non Return to Zero). Circuit ouvert : port du cours Réseau Circuit fermé : 1 Temps 0 0 0 Codages en bande de base Tension 1 0 1 0 Circuit fermé : Temps 0 1 Code tout ou rien. Codages en bande de base Tension 1 Circuit ouvert : Support du cours Réseau Transformer la valeur en un signal carré Codages en bande de base 0 Temps 1T 2T 3T 4T Top dhorloge Support du cours Réseau Temps 0 Temps 0 1 1 0 0 1 0 Code Miller Front sur lintervalle : 1 Pas de front sur lintervalle : 0 (détecter des fronts et minimiser le nombre doscillations) 38 Usage limité au réseau local. ⇒Utilisation dun modem (modulateur - démodulateur) Convertisseur bande de base en : ⇒ Modulation damplitude ⇒ Modulation de fréquence ⇒ Modulation de phase et réciproquement Transmission modulée Liaison courte Modulation de lamplitude dun signal sinusoïdal. Pour t t Transporter un signal alternatif est moins coûteux (moins de perte). Sensible à la perturbation du signal (orage, lignes électriques ). Support du cours Réseau Modulation de fréquence Modulation de la fréquence dun signal sinusoïdal. Support du cours Réseau Modem Liaison longue Modem Modulation de phase Liaison courte Modulation de la phase dun signal sinusoïdal. Contre Pour Système de démodulation moins trivial à concevoir. (la FM a vue le jour après la AM). t Système de démodulation non trivial. La modulation de phase est Modulation de phase Voies Basse Vitesse par Gilles Grimaud 47 5 Voie Haute Vitesse vb v Multiplexage 46 Multiplexage fréquentiel Démultiplexage par Gilles Grimaud (damplitude). Multiplexage Les transmissions modulées peuvent combiner plusieurs formes de modulations simultanées. Exemple : 1 niveau de modulation damplitude + 1 niveau de modulation de fréquence Permet de coder [0|1] en AM et [0|1] en FM. Donc un temps dhorloge permet de coder 4 valeurs (00, 01, 10, 11) sur 2 bits : Support du cours Réseau résistante aux perturbations 4 Support du cours Réseau Transmission modulée Dans ce cas 1 Baud = 2 bits/s . t Contre Les dispositifs de (dé)modulation de phase permettent de coder facilement plus de deux états. vb v La modulation de fréquence est résistante aux perturbations port du cours Réseau (damplitude). Liaison courte Modulation de fréquence 3 Transporter un signal alternatif est moins coûteux (moins de perte). Modem t vb v Pour Liaison longue t Transmission modulée Liaison courte Modem Contre La modulation damplitude est un circuit électrique simple (premier utilisé). Modulation damplitude Liaison courte 2 port du cours Réseau Gilles Grimaud Modem vb v Liaison longue 1 Modem Transmission modulée vb v Liaison courte Modulation damplitude Voies Basse Vitesse Multiplexage fréquentiel ; Multiplexage temporel ; Multiplexage statistique. Fréquences de la Voie Haute Vitesse N kHz Les supports matériels de la communication entre ordinateurs Les supports matériels de la communication entre ordinateurs 5V 0 t 0,001 0,002 0,0005 0,0015 0,001 0,002 0,0005 0,0015 avec T = 0,0005 Gilles Grimaud 2 1 vb v vb v vb v 4 2 vb v t 0,001 0,002 0,0005 0,0015 t vb v 0V 0V vb v = 3 5V 1 1 5V avec T = 0,0005 + avec T = 0,0005 = 0V t 0,001 0,002 0,0005 0,0015 5V Utilisation de la Voie Haute Vitesse avec T = 0,0005 0V port du cours Réseau Transporter un signal carré sur un support analogique Support du cours Réseau (e.g. téléphone) N sec. Support du cours Réseau t 0,001 0,002 0,0005 0,0015 avec T = 0,0005 Exemple : le modem ADSL Exemple : le modem ADSL 2 ADSL : Asymetric bit rate Digital Subscriber Line. Division des signaux en 256 sous-canaux de fréquences (de 0 à 1100kHz) (technologie DMT : Discrete MultiTone). vb v 1 vb v 3 vb v 1 vb v 2 vb v vb v 1 Multiplexage statistique Modulation dAmplitude Quadratique (QAM) sur 4 niveaux damplitude pour chaque canal de 4,3kHz. 1 Utilisation de la Voie Haute Vitesse N sec. Canal RTC port du cours Réseau Multiplexage temporel 5 32 Modem ADSL Support du cours Réseau Téléphone Rôle et fonctionnement de la couche 2 du modèle OSI. Routeur voix filtre Internet RTC filtre 200kHz Débit théorique descendant 8,2MBits/s montant 640kBits/s sur < 5km. Débit pratique en France : 512kb/s, 128kb/s. Support du cours Réseau Canal descendant 1,1MHz Détection et correction derreur Gestion de la liaisonpar Gilles Grimaud Modem ADSL 218 Canal montant 4kHz 25kHz µOrdinateur Aucun support physique de communication nest absolument fiable. Une liaison conventionnelle a une probabilité derreur entre : 55 par Gilles Grimaud 10-5 et 10-7 Cette probabilité croit avec la distance parcourue par linformation. Elle peut exploser dans des conditions exotiques. Le logiciel doit prévoir ces risques de défaillance, donc savoir les reconnaître (détecter) et décider dune mesure appropriée pour y remédier (corriger) ou pas (erreur de moindre importance). Bit de parité Convenir du nombre de bit avant le bit de parité et de la parité souhaitée (paire/impaire). Par exemple 8 + pair. 0 01000001 56 0..0..1..0..0..0..0..0..1 0 01000001 1 01110000 1..0..1..1..1..0..0..0..0 1 01110000 1 01100001 1..0..1..1..0..0..0..0..1 1 01100001 1 01000110 1..0..1..0..0..0..0..1..0 1 01000010 Autre exemple de code ASCI 7 bits + 1 parité. Code à Redondance Cyclique Les valeurs transmises sont vues comme des polynômes manipulés avec une arithmétique modulo 2 : 101101 = x5 + x3 + x2 + x0 + 1011 = x3 + x + x0 100110 = x5 + x2 + x 101101 = - 1011 = - port du cours Réseau 100110 = 010 000 011 101 001 CRC-12 = x12 + x11 + x3 + x2 + x1 + 1 CRC-16 = x16 + x15 + x2 + 1 CRC-CCITT = x16 + x12 + x5 + 1 Le reste de M x3 + x2 + x0 On transmet une séquence binaire M construite à partir du = 1110 3 0 x x - x G(x) message binaire M concaténé avec un CRC de d bits Support du cours Réseau Support du cours Réseau x5 + x2 + x construit de tel sorte que M(x)/G(x) = 0. M = 1101011011 1110 111 100 Avec un message M = 1101011011 Et une fonction génératrice G(x) = x4 + x + 1 On construit un message M = 1101011011 0000 (4 zéro car G de degré 4). x5 + Distance de hamming : port du cours Réseau Gilles Grimaud Exemple : 11010110110000 10011 10011 10011 00001 00000 00010 00000 00101 00000 01011 00000 10110 10011 01010 00000 10100 10011 01110 00000 1110 Comment construire le CRC ? Les deux interlocuteurs (lémetteur et le récepteur du signal) conviennent dun : « polynôme générateur » noté G(x) Exemple : Code de Hamming 1_correcteur pour 4 symboles Code de Hamming 110 Code à Redondance Cyclique Code à Redondance Cyclique dH(000,010) = dH(000,001) = = 1 dH(000,110) = dH(110,101) = = 2 dH(000,111) = dH(100,011) = = 3 Le code (0 = 000,1 = 111) est : 2_detecteur car il détecte jusquà 2 erreurs dans le symbole transmis ; 1_correcteur car il permet de corriger une erreur par symbole Selon les types de niveau de perfectionnement du processus de Gilles Grimaud connexions physiques, le matériel par pourra : donner la valeur instantanée de la ligne ; donner le dernier octet décodé ; stocker les octets reçus et non encore lus dans un tampon ; ou directement écrire les valeurs reçues en mémoire centrale (DMA). distance de Hamming Soit S un alphabet de 4 symboles avec S = { 00000, 00111, 11100 , 11011 } Min dH(x,y) = 3 1 10 00 (x,y)∈S², x≠y ⇒ Code 2_detecteur et 1_correcteur. 0 10 00 0 10 01 1 11 00 dH(00101,00000) = 2 donc 00101 nest pas le premier symbole. dH(00101,00111) = 1 donc 00101 est le second symbole Corriger 00101 : 0 11 00 (avec 1 erreur) 0 11 01 S nous permet de coder 4 valeurs binaires différentes soit 2 bits : Un code de hamming est t_detecteur si : dHmin(Symboles) > t Support du cours Réseau Un code de hamming est t_correcteur si : dHmin(Symboles) ≥ 2t+1 Du matériel aux couches basses du logiciel. 10011 1100001010 Valeur Code 00 01 10 11 00000 00111 11100 11011 1 01 00 Erreurs possibles 00001 00110 11101 11010 00010 00101 11110 11001 00100 00011 11000 11111 01000 01111 10100 10011 0 01 00 10000 10111 Support du cours Réseau 01100 01011 Échantillonnage dun code de base 0 01 01 1 00 00 0 00 00 0 00 01 1 10 01 1 10 11 0 10 11 1 11 01 0 10 10 1 11 11 0 11 11 1 01 01 1 11 10 0 11 10 1 01 11 0 01 11 1 00 01 1 10 10 1 01 10 0 01 10 1 00 11 0 00 11 1 00 10 0 00 10 Registre de (dé)sérialisation (UART) Contrôle du bit de démarrage IT.Com. Bit de parité de loctet reçu IT.Timer IT.Timer IT.Timer IT.Timer IT.Timer IT.Timer IT.Timer IT.Timer IT.Timer 52µs 64 par Gilles Grimaud 104µs 104µs 104µs 0 1 1 0 1 0 10 0 0 65 0 1 0 1 - - - - - 0 0 0 1 0 1 0 0 1 Lien série Interruption réception de données. 104µs Ecoute de la ligne pour un bit de données Bit de parité Codage tout ou rien à 9600 Bauds : + bit de parité + Start bit (transmission asynchrone) Vérification de la Parité (0: Erreur; 1: OK) Valeur précédente décodée par le registre de dé-serialisation Tampon de com. en FIFO Protocoles de liaison Mémoire centrale - - 30 13 F2 5C 56 12 � Prochaine valeur lue par le processeur - - - Deux approches différentes selon : 4 octets � Prochaine valeur reçue � Prochaine valeur reçue depuis le lien physique depuis le lien physique Matériel de com. - - - - - Tampon Communication point à point : @ réception Envoyer et attendre , Fenêtre de réception ; Processeur central � Prochaine valeur écrite par le processeur Communication en mode diffusion : @ Base émission Signaux dinterruption pour : tampon de réception plein ; port du cours Réseau erreur dans la réception dun octet ; Taille du paquet à émettre (14) Support du cours Réseau Support du cours Réseau ALHOA , Ethernet (ISO 802.3). tampon démission plein. Protocoles du modèle point à point - Type « envoyer et attendre » - Protocoles du modèle point à point - Protocoles à fenêtre glissante - NACK Data 2bis émetteur SYN ENQ SOH STX ETB ETX ACK NACK DLE EOT Emetteur erreur ACK 1 2 3 4 5 2 Réseau Protocole BSC Protocole SlIP Octets de synchronisation des horloges. Invite une station à émettre ou à recevoir. Start Of Heading Début den-tête. Start of TeXt Fin den-tête et début de texte. End of Transmission Block Fin de block de donné. End of TeXt Fin du texte et début des caractères de ctrl. ACKnowledgement Accusé de réception positif. par Gilles Grimaud Negative ACKnowledgement Accusé de réception négatif. Data Link Escape End Of Transmission Caractère déchappement de transmission. Fin dun transfert de données. Séquence de transmission de la forme : Récepteur « SYN SYN SYN SYN SOH en-tête STX texte ETX BCC EOT » BCC obtenu avec le polynôme CRC-CCITT : x16 + x12 + x5 +1 6 Paquet (SlIP) vraiment transmis. C0 Support du cours Réseau vide nack nack C0 � � ac k� � � � Na ck � entrée vide vide vide vide Taille maximale du tampon Protocole PPP @dr. Contrôle 01111110 11111111 00000011 73 � k� � 7 fanion Paquet (IP) de donner à transmettre. � ac � k� � Index du dernier Dernier paquet paquet acquitté émis Index écriture Lémetteur transfère le paquet n°x au récepteur. Le récepteur acquitte le paquet n°x à lémetteur. Enquiry � Récepteur récepteur SYNchronous idle 8 ac 7 k� 2 ac 6 k� 5 � 4 ac while(true) { rdt = receiveData(); if(check(rdt)==OK) { sendData(ACK); putNextData(rdt); } else sendData(NACK); Support du cours } 3 Na ck Data 2 2 k� while(true) { sendData(sdt); rdt = receiveData(); if(rdt==ACK) sdt = getNextData(); // else if NACK // envoyer sdt a // nouveau. } 1 Coté Récepteur ACK ac Coté émetteur Protocoles du modèle point à point - Protocoles de fenêtre glissante - Emetteur Data 1 port du cours Réseau Gilles Grimaud Emission et réception en DMA 1 octet DB 1 octet par Gilles Grimaud 1 octet 74 fanion Protocole Information Bourrage 01111110 2 octets 1 octet < MRU octets (par défaut MRU = 1500) Automate de base pour une connexion PPP DB DC Octet de début de transmission DB DD Masquage dun C0 Octet de masquage Exemple de Message SlIP. C0 Octet de Fin de transmission Ouverture de la ligne Dead Etablissement Ouverture Authentification échec échec Authentification validée Config. Masquage dun DB Octet de masquage Fermeture de la ligne Fin Fermeture Connexion Réseau configuré Protocole PPP - établissement - RFC 1661 Nom direction Requête de configuration A2R (Ack) positif de configuration A2R (Ack) négatif de configuration Configuration rejetée Requête de terminaison A2R (Ack) de terminaison Code rejeté port du cours Réseau I→R I←R I←R I←R Description Protocoles du modèle en diffusion - ALOHA Les stations A, B, C, D, E et F sont connectées via un support physique commun. Propose une configuration spécifique des paquets transportés. Accusé de réception positif pour une demande de configuration des paquets. Accusé de réception négatif pour une demande de configuration des paquets. Une demande de négociation sur une option non négociable à été formulée. I→R Demande de fermeture de la ligne. I←R Demande de fermeture acceptée. I←R Identifiant de requête inconnue. Protocole rejeté I←R Requête de protocole inconnu. Requête décho I→R Demande décho (pour test) Réponse décho I←R Retour décho Requête à jeter I→R Requête à ne pas traiter. (pour test). A B C Dans ce cas les émetteurs potentiels ne parlent que pendant des Slots de temps si personne ne parle déjà. Et avec une probabilité p (p=0,01 par exemple). A B C D D E F E F Support du cours Réseau Support du cours Réseau Émettre et, en cas de collision, attendre une durée aléatoire avant de ré-émettre. RFC 1661 : « http://www.ietf.org/rfc.html » Trame Ethernet utilisation dun codage de base type Manchester pour pouvoir détecter les collisions (en bande de base 0+0=0 ). Au mieux : 37% de succès, 37% de slots vides, 26% de collisions. Adresses physiques : unicast, broadcast, multicast. Trame Ethernet Nombre doctets A A peut détecter la collision τ B 1 7 τ Préambule Collision avec paquet de B 2-6 2-6 @ Dest. @ Source 0-1500 Données 0-46 4 Pad Contrôle CRC Paquet transmis par A Remplissage Format dune trame IEEE 802.3 Les cartes réseaux de type Ethernet disposent dun code identifiant (théoriquement) unique à chaque carte. Cet identifiant est codé sur 6 octets. Une trame peut avoir pour destinataire le code identifiant dune autre carte. Il sagit dun message unicast (un vers un). Une trame peut avoir pour destinataires toutes les machines présentes sur le lien physique. Il sagit dun message broadcast (un vers tous). Une trame peut avoir pour destinataire une adresse virtuelle qui concerne un groupe de récepteur sur le lien physique. Il sagit dun message multicast (un vers plusieurs). octet de préambule: 10101010 Support du cours Réseau octet délimiteur de trame : 10101011 @source : identifiant unique intégré à la carte sur 6 octets. @dest. : 6 octets intégrés à la carte réseau (broadcast : ff:ff:ff:ff:ff:ff) Répéteur, pont et commutateur Répéteur : recevoir et amplifier et retransmettre un signal depuis un port vers un(des) autre(s). Un Hub est un répéteur 10BaseT multi port. Pont : un pont relie des liaisons disjointesparenGilles Grimaud filtrant les paquets selon ladresse physique de leur destinataire. Commutateur : un commutateur est un pont multi port qui est capable de faire de la conversion de protocole entre différentes liaisons. Il ne sintéresse donc pas aux adresses physique des paquets transmis mais aux adresses globales (indépendantes du matériel). Type du champ données Début du délimiteur de trame La distance max entre deux stations ethernet est de 2500m. à 200 000 km/s = 12,5µs + 3,5µs par repeteur et 4 repeteurs pour 2500 m. Soit 52µs pour lA/R. Or 10MBps : 1 bit = 0,1 µs. Avec : port du cours Réseau Donc la longueur minimale dun message et de 500bits (~ 64octets) Support du cours Réseau Gilles Grimaud Protocoles du modèle en diffusion - p-persistent CSMA / CD - Ethernet et ARP Ethernet et ARP Rechercher la présence dune machine associée à une adresse globale (@ IP) sur un réseau local. 6 6 2 2 2 1 1 2 6 4 6 Couche réseau 4 @ @ Type Type de Type de Taille @ Taille @ @ mat. @ prot. @ mat. @ prot. Op. dest. Source de trame matériel protocolematérielle protocole cible Source Source cible 82 En-tête Ethernet Couche réseau Couche réseau Couche réseau Couche réseau Couche Liaison Couche Liaison Couche Liaison Couche Liaison Couche Liaison par Gilles Grimaud 83 Requête / Reponse ARP : 28 octets @ dest. : @ source : Trame ARP : Type de materiel : (ethernet) Type de couche réseau : (IP) Taille de l@ matérielle : Taille de ladresse globale : Opération : (requête ARP) @ physique émétteur : @ globale émétteur : @ physique cible : @ globale cible : FF FF FF FF FF FF 08 00 20 02 45 9E 08 06 00 01 08 00 06 04 01 ou 02 (réponse ARP) 08 00 20 02 45 9E 81 68 FE 05 00 00 00 00 00 00 81 68 FE 04 Diffusion requête ARP Couche réseau Couche réseau Couche réseau Couche réseau Couche réseau Couche Liaison Couche Liaison Couche Liaison Couche Liaison Couche Liaison Collecte réponse ARP Adressage des machines - exemple de lOSI (NSAP) - La couche réseau La couche réseau a pour objectif de AFI IDI DSP permettre à une machine X de dialoguer GDP avec une machine Y par lintermédiaire Réseaux et routage G.D.P. : Global Domain Part dun chemin. Ce chemin est constitué dun (Définit la forme des adresses présentent dans D.S.P ) A.F.I. : Authority and Format Identifier ensemble de supports physiques de I.D.I. : Initial Domain Identifier Rôle et fonctionnement des D.S.P. : Domain Specific Part communications hétérogènes, de (Ladresse selon le mécanisme dadressage du réseau visé ) logiciels associables à la couche 3 machines nuds du réseau supportant Analogie avec le téléphone : du modèle OSI. des protocoles de liaison et relayant les (X)Y ZZ ZZ ZZ ZZ Support du cours Réseau messages échangés de liaison enSupport du cours Réseau liaison. Région dappel Identifiant de numéro à lintérieur de la région port du cours Réseau Identifiant de fournisseur de réseau global Structure dun réseau Couche réseau Machine nud du réseau Utilisateur X A Concevoir une couche réseau Mécanisme de relais dinformation Définir le modèle déchange de linformation transportée : en mode connecté ; en mode non connecté. Utilisateur B E H I D G Protocole de Liaison 1 : SLIP Y Protocole de Liaison 2 : Ethernet 1 Protocole de Liaison 3 : Ethernet 2 Défenseurs du mode non connecté : ARPA (Internet) Le temps moyen T de traversée dune file dattente est donné par : Défenseurs de mode connecté : T = 1/(µC- λ), Les machines utilisateurs et les machines nuds du réseau peuvent être confondues. port du cours Réseau Support du cours Réseau Support du cours Réseau « les transporteurs » avec µ la taille moyenne dun paquet (en bits) , C débit de la ligne en Kbits/s) Gilles Grimaud Couche Physique : Couche Physique : Couche Physique : Lien série Lien série Lien série Chemin F C moy moy et λ quantité moyenne de paquets entrant chaque seconde. Propriétés souhaitables pour un algorithme de routage : Argumentaires Service avec connexion Sujet Service sans connexion Initialisation : Nécessaire. par Gilles Grimaud Impossible. @ du destinataire : Nécessaire uniquement à linstallation. Nécessaire dans chaque paquet. Séquencement des Garanti. paquets: Contrôle derreur : À la charge du réseau. Non Garanti. À la charge des utilisateurs. Contrôle de flux : À la charge du réseau. A la charge des utilisateurs. Possibilité de négociations : Oui Non Exactitude ; Simplicité ; Robustesse (aux MaJ & Défaillances des Machines)par ; Gilles Grimaud 91 Stabilité (garantie de convergence) ; Justice (vis-à-vis des usagers) ; Optimisation (minimiser le temps de traversée, mais aussi, maximiser le flux de transmission) . Algorithme du plus court chemin B 921 X 1 H A 5 2 3 3 2 D 3 I 1 G Y 3 1 2 C (Propriétés parfois contradictoires) 4 3 Chemin retenu : X→Y = XABDIGY E F A partir du graphe du réseau, déterminer une valeur pour chaque liaison/arc (1 fois pour toutes ou périodiquement avec des messages de contrôle de la couche liaison par exemple), dans lunité de mesure choisie (distance, temps de transmission, charge supportée, ). Arbre collecteur 1 2 D 3 2 5 3 3 3 H A X E 4 1 1 I G Y 3 1 2 C Stratégie : Dans les tables de routage de chaque machine nud indiquer n liaisons possibles pour atteindre la machine cible. Chaque liaison pourra être pondérée avec un poids qui permet alors de définir la probabilité que les paquets soient routés par chacune des liaison possibles pour sa destination. F Arbre collecteur ayant G pour destination. port du cours Réseau Support du cours Réseau Algorithmes de routage local Couche Liaison -1- Couche Liaison -3- Couche Réseau Couche Liaison -2- Couche Liaison -4- Les algorithmes de routage hiérarchiques 5A 5B 5H 5I 5C 5D Région 5 1C 5F 5E 3D 1B 1A 5G 1D 3C 1E Région 1 3B 4H 3E 3A 4G 2A 2B 2C 4F 4A 2D 4E 4D Région 2 4B 4C Région 3 Région 4 Exemple : Table de @dest. : @dest. : @dest. : @dest. : routage de A liaisons B liaisons C liaisons * liaisons A : : : : Maintenir létat des tables de routages : Qui, Quand et Comment ? � manuel, automatique centralisé, automatique décentralisé ; � sur décision humaine, périodique, apériodique ; � Décision humaine, algorithmes centralisés, algorithmes distribués. B 1 X Algorithmes de routage par inondation 3 H A Id de liaison : Probabilité dusage {(-,1)} {(→B;0,95), (→C;0,05)} Support du cours Réseau {(→C;0,95), (→C;0,05)} {(→B;0,77), (→C;0,23)} 1 5 2 Table de routage de 2C : 2A 2B Grimaud par→ Gilles 2B → 2B 2C → 2D → 2D 1* → 2B 3* → 2D 4* → 2D 5* → 2B 3 3 2 D 3 I 1 G Y 3 1 2 C F Machine de gestion du réseau Algorithme de routage distribué Algorithmes de gestion de la diffusion Certains paquets sont destinés à plusieurs interlocuteurs présents sur le réseau global (multicast). Les techniques de routage de ces paquets peuvent être : 1 paquet 100 par dest. : rendement médiocre du réseau ;par Gilles Grimaud Inondation de ces paquets : largement sous optimal ; Routage multi destination : Chaque paquet contient une liste d@ destination. Le paquet et réémis sur les liaisons associées à au moins 1 adresse de la liste. Routage selon le chemin inverse : Lorsquun paquet est reçu en mode multi destinataire, la machine de routage regarde ladresse de lémetteur. Si le paquet vient de la liaison qui aurait été utilisée pour retransmettre un paquet vers la source il le retransmet sur toutes les autres liaisons. Sinon il ne retransmet pas le paquet reçu... E 4 B Local simple : Tout paquet reçu est réémis sur toutes les liaisons. exemple : choisir la file de ⇒ Génération dun nombre infini de duplication de paquets! 3 1 sortie la moins chargée. Limiter le processus en utilisant par exemple un compteur de durée de vie 1 Local / statique : du paquet. Cet algorithme ne nécessite aucune connaissance minimale du réseau. H en cas de surcharge, (la distance max entre deux nud). A X abandonner la liaison prévue statiquement. 3 Paquet initial Pack1 2 Savoir différé : (transmit sur les 4 liaisons de S) 5 Local+marquage des paquets avec infos Source+Distance. Paquets générés à létape 1 C (1ere retransmission du Pack1) A chaque réception de paquet S via une liaison on note que via Paquets générés à létape 2 Table initiale de A : Table initiale de B : cette liaison la source est à (2ere retransmission du Pack1) cette distance, on incrémente B→A : (A) 1 A→A : la distance parcourue par le Paquets générés à létape 3 B→H : (H) 1 A→B : (B) 1 (3ere retransmission du Pack1) paquet et on le réémet sur B→D : (D) 3 A→C : (C) 5 Support du cours Réseau Support du cours Réseau B→E : (E) 4 une autre liaison (appropriée). D port du cours Réseau Gilles Grimaud Objectif : disposer de chemins de substitution, en cas de perturbation de certaines liaisons ; en cas de panne de certaines machines nuds. E 4 3 3 2 D I 1 G Y 3 1 2 F Table initiale de C : Table de A après réception de B et C : C→A : (A) 5 A→A : A→B : (B) 1 C→H : (H) 2 A→C : (C) 5 A→H : (B) 2 C→D : (D) 3 A→D : (B) 4 A→E : (B) 5 C→F : (E) 2 A→F : (C) 6 Congestion du réseau Capacité de transport maximale du réseau Idéale Nombre de paquets reçus B Algorithmes centralisés Algorithme de routage multi-chemin 101 Acceptable Congestion Nombre de paquets transmis Gérer la congestion : Proposer des mécanismes visant à garantir le bon fonctionnement du réseau lorsque le nombre de paquets entrant excède les capacités du réseau. Gestion de la congestion - Pré allocation des tampons - Gestion de la congestion - Destruction des paquets - Lexcès de paquet se manifeste par une saturation des tampons démission des machines qui forment les nuds du réseau. ⇒ Si une liaison monopolise lensemble des tampons disponibles, les paquets à destination dautres liaisons sont perdus. Les étreintes fatales (DeadLock) e.g. Liaison en « fenêtre glissante » La couche réseau est bloquée, le réseau se congestionne. B Première idée : Pré réserver les tampons pour chaque chemin initié dans le réseau. ⇒ Connaître les chemins utilisés A Il faut conserver un nombre minimum de tampons libres pour dautres liaisons. ⇐ Tampons libres ⇒ Réseau en mode connecté ⇒ En cas de protocole « à fenêtre glissante » entre la source et la Selon les résultats dIrland (78), un maximum simple est : destination, il faut autant de tampons que le prévoit la fenêtre glissante dans chaque intermédiaire. m = k / √s port du cours Réseau Support du cours Réseau Support du cours Réseau avec m le nombre max. de tampon pour une file, k le nombre de tampon dispos,et s le nombre de liaisons de sortie. - Contrôle de congestion isarythmique Objectif : interdire lémission de paquets lorsque le réseau a atteint sa charge de travail maximale. Proposition : Chaque paquet représente un jeton. Chaque machine nud du réseau dispose initialement dun certain nombre de jetons. Lorsquune machine émet un paquet elle perd un jeton. Lorsquelle reçoit un paquet elle gagne un jeton. Le contrôle de flux Réduire la quantité de paquets échangés entre les machines nuds chaque seconde lorsque le réseau se congestionne pour éviter la congestion. Solution correcte pour éviter la surcharge : des liaisons physiques ; des capacités de traitement des machines nuds ; gérer (pas de garantie de flux). Ligne proche de la saturation Lien physique n°1 Lien Physique n°2 par Gilles Grimaud Pont Couche 1 Couche 1 Lien physique n°1 Interconnexion par répéteur Nécessite lhomogénéité du support de communication physique. Gilles Grimaud P P P PE PE PE P P P : Paquet émis par la Source (et réémis par les intermédiaires) ; : Paquet émis par la Source avec un tag de saturations ; : Paquet dengorgement à destination de la source. (pour que la source réduise son débit vers la Dest.) Interconnexion par pont 802.3 par Gilles Grimaud 110 802.5 Pont Préambule Couche Réseau Couche 2 Couche 2 Couche 1 Couche 1 Lien physique n°1 Dest. 802.4 109 Lien Physique n°2 Passerelle C Source PE Répéteur B Calculer un taux doccupation (u) maximum et décider dun seuil doccupation acceptable. On peut calculer u avec : unouveau = a.uancien + (1-a)f Ou f est 0 ou 1 selon que la ligne est occupée lors de léchantillonnage. a est la « faculté doublier » les enchantions anciens. Solution médiocre pour répondre à une congestion. ⇒ Problème de perte de performance du réseau lorsque des paquets ⇒ Inadaptée à un trafic irrégulier ; sont perdus entre leur émission et leur réception. P ⇒ nempêche pas un nud de recevoir plus de paquet quil ne peut en ⇒ Sous-exploite la capacité de transport du réseau. P port du cours Réseau Support du cours Réseau Support du cours Réseau Répéteur D Paquets dengorgement Limite de la solution : Interconnecter des réseaux A Lien Physique n°2 Contrôle daccès Délimiteur 2 début de trame Sur lexemple dune liaison de type Ethernet (802.3) les répéteurs entraînent + démetteurs potentiels sur le même support, donc plus de collisions et un risque deffondrement des performance au-delà dun certain seul. @ Source Données CRC Etat 2 @ Dest. Trame Bourrage Contrôle 2 Délimiteur 2 Longueur trame fin de trame Suppose une certaine « équivalence » entre le contenu des trames ci-dessus des trames IEEE. Interconnexion par pont Une passerelle est une « machine nud » exclusivement dédiée à laiguillage de paquet. Dans un réseau conventionnel une passerelle est le premier objet à pouvoir faire un routage « intelligent » parce que reposant sur la couche 3. Exemples des traitements informatiques à réaliser pour chaque type de conversion. 802.3 « Ethernet » 802.3 802.4 1,5,8,9,10 802.4 « Token bus » 1,4 802.5 « Token ring » 1,2,4,8 9 1,2,3,8,9,10 Passerelle 3c 3b 3a 802.5 1,2,5,6,7,10 1,2,3,6,7 6,7 3b Actions : 3a 1. Reformater la trame et recalculer le CRC 2. Inverser lordre des bits Annexes : 2 2 3. Copier la priorité quelle ait ou non un sens 802.3 1518 octets 10Mbits/s 4. Générer une priorité fictive 802.4 8191 octets 10Mbits/s 5. Annuler la priorité 802.5 5000 octets 4Mbits/s 1 1 6. Vider lanneau 7. Positionner les bits A et C port du cours Réseau Support du cours Réseau 8. Problème de congestion Lien rapide vers Lien Lent Réseau sur lien physique type 1 9. Problème du jeton de transfert, ACK reporté ou annulé 10. Panique lorsque la trame est trop longue! Sous-réseau n°1 Paquet 3c 3b 3a 3c 3b 3a 2 2 1 1 Paquet Support du cours Réseau De 0.0.0.0 à 127.255.255.255 Paquet Destination Sous-réseau n°2 Pass. 1 Pass. 2 Pass. 3 Pass. 4 Matériel hétérogène : Performance du réseau Transfert dinformation sur le lien -1- Nb. De machines A <127 (27) < 16 millions (224) B (214) Transfert dinformation sur le lien -2- Support du cours Réseau Liaison série, parallèle ; Modems ; Liaison par bus (Ethernet 802.3, Tokenbus 802.4 ) ; Liaison en anneau (Tokenring 802.5) ; Liaison hertzienne (802.11). < 65536 B De 128.0.0.0 à 191.255.255.255 C De 192.0.0.0 à 223.255.255.255 <2millons (221) D De 224.0.0.0 à 239.255.255.255 MultiCast E De 240.0.0.0 à 247.255.255.255 R.F.U. 0 1 IDR IDM 7 bits 24 bits 0 (216) < 256 (28) C 1 1 IDR IDM 14 bits 16 bits 0 IDR IDM 21 bits D 1 1 1 0 1 1 1 1 8 bits MultiCast 0 R.F.U. Modèle non connecté ; Adresses sur 32bits ; Adressage / Routage hiérarchique ; Administration du routage / outils de mise à jour distribuée. Adresses particulières Représentation interne dune @ codée sur 32 bits, décomposée en deux parties : Identifiant de réseau (IDR) ; 118 de machine dans le réseau (IDM). par Gilles Grimaud Identifiant Nb de Réseaux <16384 Pass. 4 Structure dun réseau IP Réception dun paquet depuis le réseau Adressage IP (IPv4) 1 machine = 1 Code sur 32Bits = 4 octets Exemple : « 134.206.11.2 » représentation @IP standard : 1 nombre par octet séparé par un point. par Gilles Grimaud @IP décomposée en 2 parties : (id. réseau, id. machine). A Pass. 3 Support réseau : Adressage IP (IPv4) Plage dadresses Paquet Réseau sur lien physique type 2 Noyau IP Support du cours Réseau Classe Pass. 2 Sous-réseau n°1 Internet Protocol La couche IP du réseau Internet Destination Pass. 1 Source Emission dun paquet sur le réseau Configuration IP par ladministrateur Sous-réseau n°2 Source Rôle de la couche IP port du cours Réseau Gilles Grimaud Interconnexion par passerelle - fragmentation - Interconnexion par passerelle Adresses réservées à des usages particuliers : « 0.0.0.0 » « idr nul, ∀idm », machine sur le réseau local ; 119 «∀idr , idm nul », désigne le réseau lui-même ; « 127.X.Y.Z », autre possibilité pour désigner la machine locale. «∀idr , 11..1(2) », broadcast sur le réseau ; « 11..1 , 11..1(2) », broadcast sur le réseau de lémetteur ; « 10.0.0.0 à 10.255.255.255 ou 172.16.0.0 à 172.31.255.255 ou 192.168.0.0 à 192.168.255.255 », réservé pour des intranets. Adressage symbolique Structure dun datagramme IP Modèle réseau non connecté. Unité de transport : le datagramme DNS : Domain Name Server com org fr de 4 bits 4 bits version Taille en-tête 8 bits www Type de Service Protocole Déplacement de fragment Total de contrôle den-tête @ IP source Lien TokenRing MTU 4500 Octets @ IP Destination www Options IP éventuelles port du cours Réseau Support du cours Réseau « www.impots.gouv.fr » www Fragmentation dun datagramme IP Bourrage Support du cours Réseau données Structure dun réseau IP Datagrammes particuliers : ICMP 1500 octets réseau Datagramme IP Message ICMP 0 0 0 Next frag base Dont frag 0 Next frag Dont frag 0A3F - Next frag identifiant En-tête IP Dont frag 3000 octets identifiant - base 20 octets Structure dun réseau IP « 134.206.X.Y » Les machines A,B,C sont des machines A S1 R2 B C R1 classiques « Hosts » du réseau : « 134.206.X.X » Gilles Grimaud Les passerelles R1 et par R2 sont des machines « Gateway ». Visibles dans 2 réseaux ⇒ 2 adresses. « 134.207.X.Y » « 134.206.X.Y » type code checksum 1 1 2 octets Ordinateur (Host) Passerelle(Gateway) EG/BG (Border GateWay) Sous réseau Contenu variable f(type) Taille variable Type = 8 code = 0 : demande décho Type = 0 code = 0 : réponse décho 0A3F 0 1 0 0 Type = 3 compte rendu de réseau inaccessible code 0 : Rsx HS code 5 : Echec de route code 10 : Host interdite code 1 : Machine HS code 6 : Rsx inconnu code 11 : Rsx service code 2 : Protocole HS code 7 : Host inconnue code 12 : Host service code 3 : Port HS code 8 : obsolète code 13 : Filtrage code 4 : Fragmentation refusée code 9 : Rsx Interdit Internet Type = 4 demande de limitation de production (contrôle de flux) identifiant base Support du cours Réseau Support du cours Réseau Type = 5 correction de routage (route non optimal détectée) code 0 : Rsx 1 : Machine. Type = 11 TTL détecté = à 0. 0A3F 0 0 0 700 Type = port du cours Réseau Gilles Grimaud Liaison 802.3 MTU 1500 Octets Internet Longueur totale drapeaux free chimay bruyere impots 16 bits 3 bits Identification Durée de vie (TTL) gouv univ-lille Fragmentation dun datagramme IP S1 est une machine passerelle de sous réseau dans le réseau « 134.206.X.Y ». ⇒ Définition dun masque de sous réseau. Protocoles de type IGP1 : exemple RIP2 Routage IP Mise à jour des tables selon lalgorithme de routage distribué. Table de routage « administrative » : @ réseau127 masque réseau @ passerelle @ interface métriques par Gilles Grimaud 128 En-tête IP En-tête UDP 0.0.0.0 0.0.0.0 134.206.3.1 134.206.11.2 1 127.0.0.0 255.0.0.0 127.0.0.1 127.0.0.1 1 Commande (1=Q;2=R) 134.206.0.0 255.255.0.0 134.206.11.2 134.206.11.2 1 Id. de famille dadresse (=2) 134.206.11.2 255.255.255.255 127.0.0.1 127.0.0.1 1 @ IP 134.206.255.255 255.255.255.255 134.206.11.2 134.206.11.2 1 v1 = 0 | v2 = masque de sous réseau 224.0.0.0 224.0.0.0 134.206.11.2 134.206.11.2 1 =0 255.255.255.255 255.255.255.255 134.206.11.2 134.206.11.2 1 Version (v1 ou v2) =0 =0 Max 24 autres routes 1 2 IGP : Interior Gateway Protocol RIP : Routing Information Protocol Une route connue, avec le masque réseau et la métrique. Les outils systèmes pour IP /etc/hosts 127.0.0.1 134.206.11.7 localhost bruyere.lifl.fr bruyere Commande suivie de larchitecture réseau : > tracert -d -h 20 www.impots.gouv.fr > traceroute m 20 www.impots.gouv.fr >ping -f -n 4 i 5 -l 248 bruyere >ping -c 4 t 5 s 248 bruyere # The following lines are desirable for IPv6 capable hosts # (added automatically by netbase upgrade) ::1 fe00::0 ff00::0 ff02::1 ff02::2 ff02::3 Les outils systèmes pour IP Commande de test de la couche réseau : Fichier des machines présentes sur le réseau : Détermination de l'itinéraire vers www.impots.gouv.fr [195.101.154.66] avec un maximum de 20 sauts : Envoi d'une requête 'ping' sur 134.206.11.2 avec 248 octets de données: Réponse Réponse Réponse Réponse ip6-localhost ip6-loopback ip6-localnet ip6-mcastprefix ip6-allnodes ip6-allrouters ip6-allhosts de de de de 134.206.11.2 134.206.11.2 134.206.11.2 134.206.11.2 : : : : octets=248 octets=248 octets=248 octets=248 temps<10 temps<10 temps<10 temps<10 ms ms ms ms TTL=128 TTL=128 TTL=128 TTL=128 Statistiques Ping pour 134.206.11.2: Paquets : envoyés = 4, reçus = 10, perdus = 0 (perte 0%), Durée approximative des boucles en milli-secondes : minimum = 0ms, maximum = 0ms, moyenne = 0ms Fichier de résolution symbolique : /etc/resolv.conf lifl.fr lifl.fr univ-lille1.fr Nameserver 134.206.10.18 Nameserver 134.206.1.15 domain port du cours Réseau search Support du cours Réseau Les outils systèmes pour IP Support du cours 1 10 ms 2 <10 ms 3 10 ms 4 20 ms 5 10 ms 6 10 ms 7 10 ms 8 10 ms 9 10 ms 10 10 ms 11 20 ms 12 10 ms Réseau 13 10 ms 14 160 ms 15 * Les outils systèmes pour IP <10 <10 10 <10 10 20 10 20 20 20 10 10 20 150 ms ms ms ms ms ms ms ms ms ms ms ms ms ms 10 10 <10 10 10 10 20 10 30 10 10 40 10 170 ms ms ms ms ms ms ms ms ms ms ms ms ms ms 134.206.3.2 193.49.253.113 193.54.138.117 194.214.110.29 194.214.110.5 193.51.206.14 193.51.206.42 193.251.241.158 193.251.241.97 193.251.126.25 193.251.126.37 194.51.159.206 194.51.159.226 194.51.195.6 Les outils systèmes pour IP Commande de teste de la couche réseau : Commande daccès à la couche liaison : > arp -s 157.55.85.212 00-aa-00-62-c6-09 > arp -a Interface : 134.206.11.2 on Interface 0x2 Adresse Internet Adresse physique 134.206.3.2 00-90-bf-5a-9c-8c 157.55.85.212 00-aa-00-62-c6-09 Type dynamique statique > arp -d 157.55.85.212 port du cours Réseau Support du cours >route PRINT >route -ee =========================================================================== Liste d'Interfaces 0x1 ........................... MS TCP Loopback interface 0x2 ...00 a0 24 50 0e 66 ...... 3Com EtherLink PCI =========================================================================== Itinéraires actifs : Destination réseau Masque réseau Adr. passerelle Adr. interface Métrique 0.0.0.0 0.0.0.0 134.206.3.1 134.206.11.6 1 0.0.0.0 0.0.0.0 134.206.3.2 134.206.11.6 1 127.0.0.0 255.0.0.0 127.0.0.1 127.0.0.1 1 134.206.0.0 255.255.0.0 134.206.11.6 134.206.11.6 1 134.206.11.6 255.255.255.255 127.0.0.1 127.0.0.1 1 134.206.255.255 255.255.255.255 134.206.11.6 134.206.11.6 1 224.0.0.0 224.0.0.0 134.206.11.6 134.206.11.6 1 255.255.255.255 255.255.255.255 134.206.11.6 134.206.11.6 Réseau Support du1 cours Passerelle par défaut : 134.206.3.2 =========================================================================== Itinéraires persistants : Aucun Les outils systèmes pour IP Outil de mesure de lactivité dune passerelle : > netstat 0 bruyere.lif:netbios-ssn kwak:1035 ESTABLISHED Couche OSI 136 4 Démon RIP Démon SMTP UDP Couche OSI 3 ICMP Couche OSI 2 Couche OSI 1 Démon Telnet TCP > route ADD 157.0.0.0 MASK 255.0.0.0 157.55.80.1 IF 2 METRIC 3 > Route add net 157.0.0.0 netmask 255.0.0.0 dev eth0 > route DELETE 157.0.0.0 > Route del 157.0.0.0 > route CHANGE 157.0.0.0 MASK 255.0.0.0 157.55.80.1 IF 3 METRIC 3 Réseau IP par Gilles Grimaud IGP Ethernet PPP-OE Port Série Carte réseau Modem ADSL Matériels 0 State ESTABLISHED CLOSE ESTABLISHED TIME_WAIT TIME_WAIT ESTABLISHED ESTABLISHED ESTABLISHED ESTABLISHED Appli. -User- Drivers tcp par Gilles Grimaud Foreign Address zobe.linuxfr.org:www zobe.linuxfr.org:www zobe.linuxfr.org:www lifl:32771 lifl:32771 barbar:1071 regal:2278 barbar:1030 regal:2263 Couche OSI 5,6,7 SLIP Active Internet connections (w/o servers) Proto Recv-Q Send-Q Local Address tcp 0 0 bruyere.lifl.fr:4810 tcp 0 0 bruyere.lifl.fr:4809 tcp 0 0 bruyere.lifl.fr:4806 tcp 0 0 bruyere.lifl.fr:888 tcp 0 0 bruyere.lifl.fr:823 tcp 0 0 bruyere.lifl.fr:www tcp 0 0 bruyere.lifl.fr:ftp tcp 0 0 bruyere.lif:netbios-ssn tcp 0 574 bruyere.lifl.fr:telnet Commande de configuration du réseau : Architecture des logiciels réseau IP Application Transport Réseau Gilles Grimaud Les outils systèmes pour IP 137 Problématique de transport Communications entre applications via TCP/IP. port du cours Réseau La couche transport (couche 4) du modèle OSI a pour objectif de compléter lactivité de la couche réseau en réalisant des opérations de fragmentation, de dé fragmentation et de contrôle derreur ; afin doffrir une interface de programmation exploitable par les applications présentent sur la machine. La couche transport dInternet gère deux protocoles : Support du cours Réseau void sendPacket(IPPacket p); void receivePacket(IPPacket p); Appli. A1 Machine C Appli. A2 Appli. A3 Appli. 1 : serveur de discussion IP 1 Support du cours Réseau Mécanisme de de transport Fonctionnement UDP1 client serveur 1 1 A A 2 3 2 4 5 par Gilles Grimaud 3 1 3 6 6 B B Port UDP source longueur Port UDP destination checksum données Paquet UDP 1 UDP : User Datagramm Protocol 3 PPP / CSMA 2 1 Une liaison identifiée par 2 @IP + 2 ports : ⇒ port du client / port du serveur. 0 Socket 3 : 3 Support du cours Réseau ftp - data 20 ftp 21 telnet 23 smtp 25 web 80 Appli. dédiée recievePacket() I.P. Un port identifie un service : IP support physique & liaisons constituant le réseau 4 ⇒ Port réservé / ports alloués dynamiquement. Socket 2 : 2 TCP / UDP Port de connexion @Src/@Dst @Src/@Dst @Src/@Dst portSrc/portDst portSrc/portDst portSrc/portDst 1 Gilles Grimaud Modèle de transmission avec connexion ; Gestion de la séquence ; Gestion du flux ; Restitution sous la forme dun flot ( ⇔ accès séquentiel dun Réseaufichier). Appli. 2 : Navigateur Socket 1 : @Src/@Dst portSrc/portDst port du cours Réseau - Appli. A4 Socket 1 : Application Modèle de transmission sans connexion ; Pas de contrôle de séquence ; Pas de contrôle de flux ; Transport sous la forme dun paquet IP ( ⇔ tableau doctet limité). Modèle TCP : Transmission Control Protocol « routage virtuel » entre les différentes applications présentes sur la machine. Machine B IP - Principe du transport dinformations au dessus dIP Support IP Machine A Support du cours connecté Non-connecté Modèle UDP : User Datagram Protocol sendPacket() émission dun paquet UDP avec Java DatagramPacket p; DatagramSocket s; InetAddress dst = InetAddress.getByName("brigant"); int port145 = 1024 ; par Gilles Grimaud p = new DatagramPacket p(new byte[100],100, dst, port); s = new DatagramSocket(/*ou port local spécifié*/); s.send(p); 1345 Port réservés Machine B Plage de port - Protocoles UDP & TCP - Interfaces avec les applications 1024 Port de connexion X Port dynamique 3435 Machine A Machine C 65536 Réception dun paquet UDP avec Java import java.net.*; import java.io.*; DatagramSocket s; DatagramPacket p; 146 s = DatagramSocket(/*port*/ 1024); p = DatagramPacket(/*buffer*/ new byte[512],512); sock.recieve(p); System.out.println("paquet reçu de :"+ p.getAddress()+ "port "+ p.getPort()+ "taille" + p.getLength()); s.close(); Exploitation UDP émission en C Exploitation UDP réception en C Fonctionnement TCP1 client Struct sockaddr_in adrSrv; // structure pour adresseIP Librairies nécessaires : int sock ; // identifiant de socket Établissement int s; // identifiant de socket <sys/socket.h> sockaddr_in name ; // @ socket internet connexion client <netinet/in.h> hostent *hp ; // identifiant IP adrSrv.sin_familly = AF_INET; // initialisation de ladresse <netdb.h> 1 adrSrv.sin_adr.s_addr = INADDR_ANY; 2 adrS=erv.sin_port = htons(/* numero de port*/); 1 2 3 4 sock=socket( AF_INET, SOCK_DGRAM,0); // sock négatif ⇒ erreur 3 4 If(s = socket(AF_INET,SOCK_DGRAM,0)) <0) // création de la socket hp = gethostbyname("brigant.lifl.fr"); //convertir @alphanu ⇒ @IP // erreur de création de socket. ACK 3 // liaison entre la socket et le système memcopy((char *)hp->h_addr,(char *)&name.sin_addr,hp->h_length); 5 5 6 7 4 if(bind(s,(struct sockaddr *)&adrSrv, sizeof(struct sockaddr_in))<0) name.sin_family = AF_INET; // erreur de liaison de socket. 4 name.sin_port = htons(5432); 6 // émission et réception de paquets 7 gethostname(buf,max_buf); // obtenir le nom de la machine locale. Struct sockaddr_in addressClient; Recvfrom(/*socket*/s, /*buffer de réception*/tampon, /*taille tampon*/ MAX_T, Terminaison /*offset*/0, /*adresse client*/ &addressClient, &taille); sendto(sock, buf, sizeof_buf, offset,(struct sockaddr*)&name, port du cours Réseau Support du cours Réseau Support du cours Réseau connexion client sizeof(name) ; // envoie du paquet buf vers name. 1 TCP : Transport Control Protocol close(sock); // fermeture de la liaison. Automate de connexion de transport Demande de connexion sortante 2 ou 3 2 ou 3 5 État connecté 7 ou 8 5. Connexion confirmé : en provenance du fournisseur. 6. Réponse à la connexion : en provenance de lutilisateur 7. Requête de donnée : en provenance de lutilisateur Support du cours 8. Entrée de donnée : en provenance du fournisseur. 32 SY ouverture 16 8 Port source Port destination Numéro de séquence Numéro daccusé de réception Longueur den-tête Demande de connexion entrante 6 port du cours Réseau Gilles Grimaud 4 2 ou 3 4 R.F.U. checksum pointeur durgence Options (facultatives) Réseau Exploitation TCP coté client avec Java socket s; // déclaration de la liaison s. inputStream iS; // déclaration du flux dacquisition. outputStream oS; // déclaration du flux démission. bufferedReader bF; // déclaration du support texte. Grimaud par Gilles int v; String str; s = new socket("134.206.11.6",765); // établissement de la liaison s. iS = s.GetInputStream(); // obtention dun flux dacquisition. oS = s.GetInputStream(); // obtention dun flux démission. bF = new BufferedReader(new InputStreamReader(is)); // saisie texte. v=iS.read(); // lecture dun octet. Os.write(v); // écriture dun octet. str = bF.readLine(); // lecture dune ligne de texte. s.close(); // fermeture de la liaison. Taille fenêtre Données bourrage Support du cours transfert 1 0 1. Requête de connexion : en provenance de lutilisateur 2. Indication déconnexion : reçu par le fournisseur de service 3. Demande de déconnexion : en provenance de lutilisateur 4. Indication de connexion : envoyer du fournisseur de service. 1 MS N séq:10 0 024 0 001 2 séq:1 K C 2 A : 307 WIN 3 SY N A CK 4PSH 100 1-2 5PSH 202 025 5-30 49 S:1 import java.io.*; import java.net.*; ServerSocket sose; // serveur de socket. par Gilles Grimaud Socket 154 sock; // socket une fois la liaison établie. sose = new ServerSocket(7654); // création dun serveur sur 7654. sock = sose.accept(); // attente de connexion. // ici on dispose dune socket identique à celle du client. InputStream in = sock.getInputStream(); OutputStream out = sock.getOutputStream(); idx = in.read(); 2 3 1 3 1 2 3 5 6 7 4 5 4 6 7 Terminaison connexion client 9 :304 ACK : 4096 WIN 7PSH 202 5-30 49 1001 20242025 30483049 40724073 50965097 6120 6121 Fenêtre annoncée par 2 Émis par 4 Émis par 5 Acquitté par 6 6 Fenêtre annoncée par 6 Émis par 7 Acquitté par 8 9 8 :304 ACK : 3072 IN W PS H 9 Réseau 2025-3 049 7 10 :509 ACK : 4096 WIN Exploitation TCP coté serveur avec Java Établissement connexion serveur Fenêtre glissante de TCP Paquet TCP URG ACK PSH RST SYN FIN Veille serveur Fenêtre annoncée par 7 Émis par 9 Acquitté par 10 Fenêtre annoncée par10 Applications TCP/IP en C Schéma de principe 155 1.socket 1.socket 1 2 3 2.bind 3.listen 1 2 3 2.connect 4.accept 5.Read 5.write Serveur 3.Read 3. write Serveur port du cours Exploitation TCP coté client en C Exploitation TCP coté serveur en C Struct sockaddr_in sadr,adr; int s,s2,taille; s = socket(PF_INET, SOCK_STREAM, 0); // Initialiser sadr sadr.sin_familly = AF_INET; sadr.sin_addr = getByName("brigant.lifl.fr"); sadr.sin_port = htons(7654); if(connect(s,(struct sockaddr *)&sadr,sizeof(sadr))<0) // erreur à la connexion ; taille = read(s2,tampon,MAX_TAMPON) ; // valeur négative ⇒ erreur taille = write(s2,tampon,tailleA) ; // taille != tailleA ⇒ erreur. Réseau Support du Struct sockaddr_in sadr,adr; int s,s2,taille; s = socket(PF_INET, SOCK_STREAM, 0); // Initialiser sadr bind(df,(struct sockaddr *)&sadr,sizeof(sadr)); listen(df,MAX_CONNEXIONS); // initialisation de lécoute. s2 = accept(df,(struct sockaddr *)&cadr,&taille); // attente de connexion extérieure (S2 négatif ⇒ erreur). taille = read(s2,tampon,MAX_TAMPON) ; // valeur négative ⇒ erreur Réseau Support du taille = write(s2,tampon,tailleA) ; // taille != tailleA ⇒ erreur. Gérer des connexions multiples. tâche servante tâche daccueil réée e st c par : Machine serveur Liaison ouverte cours Réseau Attente de liaison Outil socket générique >telnet <nom-machine>[:port] >telnet <nom-machine> [port] clavier Serveur TCP écran Machine serveur Client telnet /etc/services nom port/type ftp-data 21 / TCP port du cours Réseau www 80 / TCP Gilles Grimaud cours Architecture dun serveur réseau protocole # commentaire http # World Wide Web protocol Support du cours Réseau Support du cours Réseau Le rôle des couches hautes Les couches hautes du par Gilles Grimaud modèle OSI Session Présentation Application Le modèle OSI définit 3 couches qui nont pas déquivalents « normalisé » dans le modèle TCP/IP. Pourtant les couche 5,6 et 7 assurent des fonctions qui répondent à des besoins applicatifs essentiels : (couche 1635) gestion des échanges applicatifs ; par Gilles Grimaud (couche 6) homogénéisation des données ; (couche 7) normalisation des applications de base. Applications Présentation Session Transport Notion de session La couche de session fournit les moyens de synchroniser les échanges de données entre les applications. 164 La couche session a pour tâche de rendre cohérentes les dialogues et les changes de données au sein de lapplication. Couche 7 Couche 6 Couche 5 La couche session permet de définir le cadre dun échange de donnée, avec un début , une fin, et un ordre de transmission pour chaque interlocuteur. Illustrer la notion de session Connexion à un serveur web. Session sur un service de résa. Illustrer la notion de session Session sur un service de résa. Point de reprise Connexion dun internaute Résa agent 1 couche session couche transport Acquisition page 1 « accueil » Acquisition page 2 « formulaire » requête page 2 « formulaire complété » Résa agent 2 Résa agent 3 Résa agent 2 Session 1 3 Exemple de présentation Format universel de données : « perte involontaire de la connexion » Notion de présentation La couche présentation définit la syntaxe et la sémantique des informations transportées. La couche présentation assure le transport de données dans un format homogène entre applications et ordinateurs hétérogènes. Encodage « Little endian » 0 1 2 3 Encodage « Big endian » 0 1 2 3 @ 0 0x11 0x22 0x33 0x44 @ 0 0x44 0x33 0x22 0x11 @ 8 0x00 0x00 0x00 0x01 @ 8 0x01 0x00 0x00 0x00 Exemple de présentation Format de documents : ⇒ entiers 32 bits, codage des caractères, e.g. Little endian, Unicode, ⇒ définition syntaxique et sémantique. par Donnée Gillesinterne Grimaud Algorithme de présentation Donnée transportée 0x00000001 ≠ 0x01000000 1 ≠ 16777216 ⇒ Compression de données (sans perte, avec perte) e.g. Gif, png, Jpg, mp3, mpg 5 Support du cours Réseau Notion de présentation Définir différentes manipulation de données. Donnée manipulée par la machine A Transport réseau <?xml version="1.0"?> <scpd xmlns="urn:schemas-upnp-org:service-1-0"> <specVersion> <major>1</major> <minor>0</minor> </specVersion> 172 par Gilles Grimaud <actionList> <action> <name>RequestConnection</name> </action> <action> <name>ForceTermination</name> </action> </actionList> <serviceStateTable> <stateVariable sendEvents="no"> <name>LastConnectionError</name> <dataType>string</dataType> <defaultValue>ERROR_NONE</defaultValue> <allowedValueList> <allowedValue>ERROR_NONE</allowedValue> <allowedValue>ERROR_ISP_TIME_OUT</allowedValue> <allowedValue>ERROR_COMMAND_ABORTED</allowedValue> </stateVariable> </serviceStateTable> </scpd> Donnée manipulée par la machine B Mise en forme de la donnée selon la représentation « externe » acquisition de la donnée depuis sa représentation « externe » Donnée transportée sur le réseau Donnée transportée sur le réseau Elle permet lintroduction de mécanismes de pré et post conditionnement de linformation en vue de Support du cours Réseau son transport. Support du cours Réseau port du cours Réseau 4 couche session couche transport « perte involontaire de la connexion » Objectif : garantir la fiabilité de lapplication en cas de problème dans la communication ou à cause de la machine distante. Exemple : Progression séquentielle des résultats ⇒ mémoriser la dernière étape pour pouvoir reprendre à partir de ce point ; Données obtenues/manipulées via un SGBD ⇒ Transaction ("begin", "commit", "rollback"). 3 Connexion entre lagence et le central de résa Support du cours Réseau Implanter des points de reprise 2 couche session couche transport requête page 3 « confirmation » port du cours Réseau Gilles Grimaud Illustrer la notion de session Exemple de présentation Format de documents : ⇒ définition syntaxique et sémantique. <html> <head> <title>Cours</title> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> </head> <body bgcolor="#FFFFFF" text="#000000"> <div align="center"> <table width="600" border="0"> <tr bgcolor="#000099"> <td colspan="3"> <div align="center"><font size="5"><b><font size="6 color="#FFFFFF">Enseignements</font></b></font></div> </td> </tr><tr> <td colspan="3"> <p>Vous trouverez ci-dessous des documents relatifs au cours de :</p> <ul> <li><a href="#Rsx">Réseaux</a> -RSX- (Licence, Maitrise, IUP);</li> <li><a href="#JC2">JavaCard</a> 2.1.1 (Seconds et troisiemes cycles).</li> </ul> </td> </tr> </table> </div> </body> 173 Exemple de présentation Mise en forme de la donnée selon la représentation « externe » acquisition de la donnée depuis sa représentation « externe » Donnée transportée sur le réseau Donnée transportée sur le réseau - Exemple : RSA M : message en clair C : message crypté p,q,d : nombres premier n = p x q . z = (p-1) x (q-1) port du cours Réseau ∃ d , e x d = 1 mod z chiffrement : C = χ(C) = Md mod n e déchiffrement : M = ψ(M) = C mod n BigInteger un = new BigInteger("1"); BigInteger m,c,d,e,p,q,z,n; // générer les clefs p = new BigInteger(512,10,new Random()); q = new BigInteger(512,10,new Random()); z = p.subtract(un).multiply(q.subtract(un)); n = p.multiply(q); d = new BigInteger(512,10,new Random()); e = d.modInverse(z); Donnée claire Algorithme de cryptographie (e.g. : DES, RSA, ) Donnée cryptée Support du cours import java.util.Random; // déchiffrer avec d et n // byte[] bb message crypté m = new BigInteger(bb); Support du cours Réseau m = c.modPow(d,n); bb = m.toByteArray(); // byte[] ba message clair // chiffrer avec e et n // byte[] ba message clair m = new BigInteger(ba); Réseau c = m.modPow(e,n); bb = c.toByteArray(); // byte[] bb message crypté Exemple dapplication Exemple dapplication Exemple dapplication Systèmes de fichiers virtuels : Service de courrier électronique Serveur n°3 Serveur n°2 root Objectifs : administration centralisé ; accès simultanés ; répartition de charge ; duplicata de sécurité ; Gilles Grimaud LIFL/RD2P Bât. M3 Cité Scientifique 59655 Villeneuve d'Ascq Cédex France Gemplus S/W Research Labs Avenue Pic de Bertagne Parc d'Activités de Gémenos 13881 Gémenos Cedex France Objet : weekly report about Cigal project Support du cours Réseau Serveur n°1 Le modèle OSI Processus démission Couche 7 Application Couche 6 Présentation Couche 5 Session Couche 4 Transport Le routage applicatif Donnée Processus de réception A(Donnée) Couche 7 Application P(Donnée) par Couche Gilles6 Grimaud Présentation S(P(Donnée)) Couche 5 Session T(S(P(Donnée))) Couche 4 Transport Couche 3 Réseau R(T(S(P(Donnée)))) Couche 3 Réseau Couche 2 Liaison L(R(T(S(P(Donnée))))) Couche 2 Liaison Bits Couche 1 Physique Couche 1 Physique Translation de message dans des réseaux hétérogènes. Internet Appli. WEB GSM 181 Application Session Répéteur e.g. Hub Pont e.g. Ethernet / TokenRing Réseau WEB SMS Application Application Liaison Physique Phy. Phy. Présentation carte SIM par Gilles Grimaud Application Passerelle réseau GSM Présentation Session Session Session Transport Transport Transport Réseau Réseau Liai. Liai. Liaison Liaison Liai. Liai. Liaison Phy. Phy. Physique Physique Phy. Phy. Physique Réseau Liaison Physique serveur Passerelle e.g. IP Présentation Présentation Transport serveur Lien Physique Lien Physique Lien Physique Lien Physique Réseau Lien Physique Réseau Lien Physique 182 nom : Gilles.grimaud adresse : lifl.fr priorité : normal cryptage : non De : jeanjac adresse : gemplus.com date : 10 mars 2002 Objet : weekly report about Cigal project Message à Gémenos, le 10 mars 2002 Enveloppe Terminaux virtuels, deux catégories : 1. Texte ; 2. Graphique. Difficulté à normaliser les code déchappement pour le contrôle du terminal texte. Différentes normes pour le graphisme : port du cours Réseau Support du cours Réseau exemple X-window 11 (X11). Gilles Grimaud La couche application donne au processus dapplication le moyen daccéder à lenvironnement OSI et fournit tous les services directement utilisables par lapplication, à savoir : Le transfert dinformations ; Lallocation de ressources ; Lintégrité et la cohérence des données accédées ; La synchronisation des applications coopérantes. Enveloppe Transport réseau Donnée manipulée par la machine B Corps Donnée manipulée par la machine A // Bibliothèques nécéssaires : import java.math.BigInteger; RSA avec Java : ⇒ Chiffrement et déchiffrement des donnés sensibles. Notion dapplication En-tête Exemple de présentation Format de documents : --------------------------------------------------------------------------------------------------------------------------------------------------------------------------- File Transfert Protocol Rapide Historique : ⇒ Définition dun client et dun serveur Le client FTP est la machine de lutilisateur. Le serveur est la machine sur laquelle est placée le système de fichier. ⇒ Prévu pour être exploité par lintermédiaire de clients dédiés, mais disponible à une exploitation directe (via un client telnet). 1973 : Première documentation officielle du protocole FTP. 1975 : Evolution de FTP pour pouvoir fonctionner au dessus de TCP (jusqualors FTP utilisé NCP). Deux applications fondamentales pour le réseau Internet. 1982 : Finalisation de la définition du rôle de FTP : « Le File Transfert Protocol est désormais définit comme un protocole de transfert de fichier entre des hôtes dun Support du cours Réseau ARPANET, afin de profiter de lutilisation Support dune du cours Réseau capacité de stockage de données distante » Principe général de FTP User Interface Server-PI (Protocol Interpret) Système de fichier local Un protocole déchange de fichier « au dessus » de TCP : 1971 : Première version du protocole définit par le M.I.T. FTP & SMTP port du cours Réseau User-PI (Protocol Interpret) commande réponse Server DTP (Data Transfert Protocol connexion Data User DTP (Data Transfert Protocol Système de fichier local Support du cours Machine serveur Client « localhost » Machine client yyy xxx canal de données 20 canal de contrôle 21 Cas par défaut : Paramétrage du canal de donnée : PORT 134,206,10,153,20,0 200 Port command successful. 20 xxx Canal de contrôle > telnet pater.lifl.fr 21 220 G6 FTP Server ready ... USER toto 331 Password required for toto. PASS otot 230 User toto logged in. HELP 214-Supported Commands : 214-PORT STOR APPE RETR CWD 214-PWD XPWD USER PASS LIST 214-NLST TYPE SYST QUIT DELE Réseau 214-SIZE REST RNFR RNTO XMKD 214-MKD RMD ABOR PASV NOOP 214-CDUP SITE HELP STAT STOU* 214-MDTM STRU SMNT XCUP ACCT Etablissement du canal de données Client « localhost » Le canal de contrôle Etablissement du canal de contrôle Utilisateur port du cours Réseau Gilles Grimaud File Transfert Protocol Serveur FTP « pater.lifl.fr » par Gilles Grimaud 21 Serveur FTP « pater.lifl.fr » Client « localhost » yyy xxx canal de données zzz canal de contrôle 21 REIN Réinitialiser la session en cours, sans perdre la connexion. Réseau par Gilles Grimaud Mode passif : Paramétrage du canal de donnée (demande de mode passif) : PASV 227 Entering Passive Mode (127,0,0,1,55,12). Ouverture du canal de donnée : Lorsque le canal de donné doit être ouvert, il lest sous linitiative du serveur. Dans ce cas le serveur ouvre le port et lIP indiqué par le client via la commande PORT. Ouverture du canal de donnée : Le canal de donné est ouvert sur linitiative du client. Le port que le client doit ouvrir est indiqué dans la réponse à la commande PASV. Une fois le canal ouvert, le serveur peut transférer les données associées à la commande suivante (si cette commande déclanche des données sortantes ). Fermeture : Sur linitiative du serveur, lorsque les transferts associées à la commande en cours sont terminés. Fermeture : Sur linitiative du serveur, lorsque les transferts associés à la commande en cours sont terminés. Serveur FTP « pater.lifl.fr » PASS <password> Envoyer le mot de passe associé à lutilisateur. Serveur FTP « pater.lifl.fr » 190 21 USER <username> Définir lutilisateur de la session en cours. Etablissement du canal de données Client « localhost » Canal de contrôle Commandes de gestion du canal de contrôle : 214-ALLO REIN MODE XRMD XDEL 214 [End of Help]. Fonctionnement du canal de contrôle : ⇒ connexion de type telnet ; ⇒ le serveur FTP attends des connexions clients ; ⇒ les échanges respectent un ordre établit : 1. le serveur attend des commandes : format ASCII, 4 caractères + arguments. 2. le serveur retourne une réponse : 3 chars formant un nombre : code retour du cours 1 char ou -format Support fin de la réponse ou pas x chars commentaires « lisibles ». ⇒ le client termine les échanges en clôturant la socket, ou avec une commande LOUGOUT. 20 xxx QUIT Termine la connexion en cours. Le serveur rompt la Socket. Le canal de contrôle Client « localhost » 191 yyy xxx canal de données zzz canal de contrôle 21 Serveur FTP « pater.lifl.fr » Commandes du paramétrage des transferts : PORT <IP1>,<IP2>,<IP3>,<IP4>,<PORT1>,<PORT2> Configurer la cible démission pour le canal de contrôle avec : IP, les 4 octets de ladresse IP de la cible ; Port, deux nombres entre 0 et 255 qui donne le port sur 16bits. PASV Positionne le serveur en mode passif. Il retourne ladresse et le port sur lequel il attend une connexion du client. TYPE <param> Définit le type déchange réalisé via la socket de donnée : <param> = A ASCII, E EBCDIC, I Image. MODE <param> Détermine le monde dencodage des données. <param> = S Flux, B Block, C Compressé. Exploitation dun serveur FTP Client « localhost » yyy canal de données zzz xxx canal de contrôle 21 Commandes de transfert FTP : RETR <filename> Déclanche la transmission par le serveur du fichier <filename> sur le canal de données. STOR <filename> Déclanche la réception dun fichier qui sera enregistré sur le disque sous le nom <filename>. Si un fichier avec le même nom existe déjà il est remplacé par un nouveau avec les données transmisses. APPE <filename> Déclanche la réception dun fichier qui sera enregistré sur le disque sous le nom <filename>. Si un fichier avec le même nom existe déjà, les nouvelles données lui sont concaténée. Support REST <offset> Redémarrage en cas déchec dun transfert précédent. Loffset précise le numéro du dernier octet reçu. ABOR : abandon dun transfert en cours. port du cours Réseau Client « localhost » du cours Réseau USER monNom 331 User name ok need password 150 Opening data connection for filename (357 bytes). 226 Transfer complete. QUIT Client Serveur Rapide Historique : 1971 : FTP utilisé en temps que support déchange de mail. par Gilles Grimaud 1982 : Première documentation officielle du protocole SMTP : RFC 821 & RFC 822. 1986 : Normalisation de X400/CCITT devenu MOTIS/ISO canal de contrôle 21 Commandes de gestion du système de fichier distant et du serveur FTP : PWD : impression du répertoire courant. LIST : catalogue du répertoire courant (canal donnée). NLST : catalogue succint (canal donnée). CWD <repname> : changement de répertoire courant pour <repname>. MKD <repname> : création du nouveau répertoire <repname>. RMD <repname> : suppression du répertoire <repname>. DELE <filename> : suppression du fichier <filename>. RNFR <filename1> : définit le nom actuel dun fichier à renommer. RNTO <filename2> : définit le nouveau nom dun fichier à renommer. STAT : status courant de la session FTP. STAT <repname> : équivalent à LIST mais réponse sur le canal de contrôle. Support HELP : affiche laide sur les opérations du site. NOOP : no operation. Les codes de retour : 1yz : réponse positive prélimiaire 2yz : réponse positive définitive 3yz : réponse positive intermédiaire 4yz : réponse négative transitoire 5yz : réponse négative définitive x0z : erreur de syntaxe x1z : réponse contenant des informations x2z : réponse vis à vis de la connexion x3z : identification et authentification x4z : non spécifié x5z : système de fichier La troisième digit raffine la description derreur, exemple : 501 Erreur de syntaxe, commande non connue. 502 Erreur de syntaxe dans les paramètres/arguments. 503 Erreur de syntaxe, commande non implémentée. 504 Erreur de syntaxe, mauvaise séquence de commandes. 505 Erreur de syntaxe, commande non implémentée pour ce param. du cours Réseau Fonctionnement alternatif Utilisateur USER monNom 331 User name ok need password PASS monPass Commandes TYPE I 200 Type set to I. PORT 134,206,10,153,20,0 Client FTP «C» Commandes 200 PORT command successful STOR filename QUIT Support du cours Réseau Simple Mail Transfert Protocol xxx Serveur FTP « pater.lifl.fr » 230 User logged in config. donnée 200 PORT command successful RETR filename zzz réception PORT 134,206,10,153,20,0 canal de données logout logout Config. réception donnée PASS monPass 230 User logged in yyy Code de retour Scénario 2 : émission dun fichier login login Scénario 1 : réception dun fichier port du cours Réseau Gilles Grimaud Serveur FTP « pater.lifl.fr » Exploitation dun serveur FTP Serveur FTP «A» 150 Opening data connection for filename. 226 Transfer complete(43bytes). Client Serveur Support du cours Réseau Simple Mail Transfert Protocol Protocole déchange de messages électroniques indépendant du protocole de 199 par Gilles Grimaud transport sou jacent. N.B. : Pour les réseaux IP, SMTP est implanté au dessus de TCP, port 25. ⇒ Un serveur SMTP est une machine « cible » qui ce présente comme un « bureau de poste » vis à vis de clients SMTP. ⇒ Protocole directement accessible vis telnet. Canal de données Serveur FTP «B» Système de fichier Système de fichier SMTP : principes fondateurs Utilisateur 200 Emetteur SMTP Système de Fichier Système client Récepteur SMTP : ⇒ bureau de poste ; ⇒ centre de tri. Transport de Commandes Réponses & Courriers SMTP Récepteur SMTP Système de Fichier Système serveur Scénario 1 : validation dune adresse mail SMTP : les commandes de base HELO MAIL RCPT DATA RSET SEND SOML SAML VRFY EXPN HELP NOOP QUIT TURN <domaine> : Initialisation de la session SMTP FROM:<route-inverse> : déclaration de lémetteur du mail TO:<route-directe> : déclaration du destinataire du mail : initialisation de la séquence de saisie des données : initialisation de la séquence de saisie des données FROM:<route-inverse> : message direct plutôt que postage. FROM:<route-inverse> : message direct OU postage. FROM:<route-inverse> : message direct ET postage. <chaîne> : vérification de lexistence dun destinataire <chaîne> : extraction des destinataires inscrits dans une liste de diffusion [ <chaîne> ] : demande daide (éventuellement sur une commande) : aucune opération : clôture de la session SMTP : demande dinversion des rôles démetteur et de récepteur 220 lifl.lifl.fr ESMTP Sendmail 8.9.3/jtpda-5.3.3 ready at Mon 22 Apr 2002 11:36:22 +0200<EOL> HELO pater.lifl.fr<EOL> 250 lifl.lifl.fr Hello pater [134.206.10.153], pleased to meet you<EOL> VRFY gigrimaud<EOL> 550 gigrimaud... User unknown<EOL> VRFY grimaud<EOL> 250 Gilles.Grimaud <[email protected]><EOL> QUIT<EOL> 221 lifl.lifl.fr closing Support du cours connection<EOL> Client 1ème Partie 1ère Partie Décl. corps Chemin entête SMTP Corps dun message SMTP Serveur HELO pater.lifl.fr<EOL> 250 lifl.lifl.fr Hello pater [134.206.10.153], pleased to meet you <EOL> MAIL FROM:[email protected]<EOL> 250 [email protected]... Sender ok <EOL> RCPT TO: [email protected]<EOL> 250 [email protected]... Recipient ok <EOL> RCPT TO:[email protected]<EOL> 250 [email protected]... Recipient ok <EOL> DATA<EOL> 354 Enter mail, end with "." on a line by itself <EOL> Bla bla bla bla<EOL> Bla bla bla bla<EOL> .<EOL> Réseau 250 LAA21250 Message accepted for delivery <EOL> QUIT<EOL> 221 lifl.lifl.fr closing connection <EOL> Supports de références sur les protocoles de lInternet : RFC1 Disponibles sur le Web : http://www.ietf.org/rfc Tr. français http://abcdrfc.free.fr RFC relatifs à FTP : RFC 765, dernière version : RFC 959 RFC relatifs à SMTP : RFC 772, RFC 780, RFC 788, Support du cours Réseau dernière version : RFC 821 & RFC 822Support du cours Réseau port du cours Réseau Gilles Grimaud 220 lifl.lifl.fr ESMTP Sendmail 8.9.3/jtpda-5.3.3 ready at Mon 22 Apr 2002 11:36:22 +0200 <EOL> >telnet monserveursmtp 25 port du cours Réseau Support du cours Réseau Les réponses respectent un format comparable à celui de FTP. Return-Path: <[email protected]> Received: from malonne.lifl.fr by lifl.lifl.fr for <[email protected]>; Received: from netlx010.civ.uttente.nl by malonne.lifl.fr for <[email protected]>; Received: from utiw32.cc.uttente.nl by netlx010.civ.uttente.nl; <[email protected]>; Message-ID: <00bd01c1b621$7d2b99f0$830f5982@utiw32> From: "Pieter Hartel" <[email protected]> To: "Gilles Grimaud" <[email protected]>, Subject: Re: Strategic Roadmap for Smart Card Research Date: Fri, 15 Feb 2002 14:05:48 +0100 MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="----=_NextPart_000_0344_01C1D021.24302E00" Status: This is a multi-part message in MIME format. ------=_NextPart_000_0344_01C1D021.24302E00 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: 7bit Dear RESET partner, Can I please have your comments on the table, no later than monday morning? Please don't forget to send your A3 to ERCIM. I attach the latest draft of the proposal for your information. --pieter ------=_NextPart_000_0344_01C1D021.24302E00 Content-Type: application/msword; name="RESET Part B-v0.4.doc" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="RESET Part B-v0.4.doc" 0M8R4KGxGuEAAAAAAAAAAAAAAAAAAAAAPgADAP7/CQAGAAAAAAAAAAAAAAAEAAAAhgEAAAAAAAAA EAAAiAEAAAEAAAD+////AAAAAH4BAAB/AQAAjAEAAIcBAAD///////////////////////////// AAAJBBYAnFYBAK1YAACtWAAAkpMAAGAFAADJAAAAAAAAAAAAAAAAAAAAbwAAAAAAAAD//w8AAAAA Scénario 2 : envoi dun message 1 - RFC : Request For Comments Le web Rapide historique : Le Web par Gilles Grimaud % de flux web sur linternet 1996 1994 1993 1991 1989 : première note relative au web « hypertexte et ke Cern » qui jette les par Gilles Grimaud base du208 World Wide Web. 50 1990 : disparition du réseau ARPAnet et apparition de lInternet. 20 1991 : premier serveur web sur lInternet, 10 0,1 celui du CERN. 1993 : première version « libre » dun navigateur web (celui utilisé par le CERN). 1994 : création du WWW Consortium par le CERN, le MIT et lINRIA. 1995 : Java sintègre au Web (et au navigateur Netscape). 1996 : début de lexploitation commerciale du Web. 1989 Présentation du langage HTML et du protocole HTTP. Objectif initial du web Pourquoi le Web et inventé au CERN ? (Centre Européen de Recherche Nucléaire) 209 nombre duniversités et de ⇒ un grand laboratoires européen. ⇒ des documents produits sur une grande variété de site, dans une grande variété de formats. ⇒ volonté de constituer une base unique, et globale composée de lensemble de ces documents qui sont néanmoins éparpillés sur le réseau. http:// Base de données Serveur Web Client Web Serveur Web Serveur Web Serveur Web Support du cours Réseau Client Web Serveur de forum Serveur de forum nntp Gopher Objectif : Présentation dun texte « formaté » qui contient différents supports de média dont : Principe du langage : Section de textes à afficher structurés à laide de tag HTML notés <tagName> </tagName>. Le premier tag (<tagName>) définit le début de la zone de texte sur laquelle il porte, le second (</tagName>) définit la fin de la zone de texte concernée. Les tags HTML peuvent être encapsulés les uns dans les autres. Exemple : <p> texte affiché à lintérieur dun paragraphe.</p> Support du cours Réseau Tags clefs du langage HTML <h1> titre du document </h1> <h2> sous-titre </h2> <h3> titre de section </h3> (jusquà <h6> </h6>) Tags clefs du langage HTML puces et de points :</p> par Gilles Grimaud <p>Liste de217 <i> texte en italique </i> <b> texte en gras </b> <font color="#FF0000" face= "Courier New, Courier, mono"> texte avec une couleur et une fonte particulière</font> <a href="http://www.lifl.fr"> texte associé à un hyperlien vers www.lifl.fr .<a> <ul> <li> puce numero 1 ;</li> <li> puce numero 2 ;</li> <li> puce numero 3 dont deux points principaux : <ol> <li> point 3.1 ;</li> <li> point 3.2 .</li> </ol> </li> <li> puce numero 4.</li> </ul> Adresse du serveur : Adresse symbolique convertible en adresse IP via un DNS. Chemin du document : Chemin symbolique a partir du répertoire racine de la connexion. <html> <head> <title>toto</title> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> <meta name="keywords" content="motclef1 motclef2"> <meta name="description" content="Résumé de la page..."> <meta http-equiv="refresh" content="13;URL=http://www.lifl.fr"> </head> <body bgcolor="#FFFFFF" text="#000000"> bla bla bla... bla bla bla... bla bla bla... bla bla bla... </body> </html> Tags clefs du langage HTML Tableaux est tables HTML Exemple de code : <p> Corps dun paragraphe, paragraphe qui peut contenir plusieur lignes, comme tout texte entre deux tags. </p> <br> pour passer à la ligne à lintérieur dun paragraphe. Utilisateur et mot de passe local : [<nomUtilsateur>[:<motDePasse>]@] Exemple : ftp://toto:[email protected]/img1.jpg Structure générale dune page HTML Support du cours Réseau Liste de puces et listes de points : Format du texte : arguments Arguments : Chaîne de texte passée en argument par le client au serveur pour quil retourne un document paramétrable. Documents hypertexte et Langage HTML Du texte, des tables, des listes, Des images, des sons, des vidéos, Des fichiers binaires ; Des références vers des hyperliens. : news:// : nntp:// : gopher:// Chemin du document Support du cours Réseau Documents hypertexte et Langage HTML port du cours Réseau Protocoles permettant de transférer des données sur le réseau : Serveur Web distant : http:// Serveur FTP distant : ftp:// Système de fichier local : file:// Adresse Mail : mailto:// Session interactives : telnet:// port Entête du document Serveur Web Client Web www.unsite.com:80/unRep/unDoc.cgi?arguments protocole utilisateur Adresse du serveur Document HTML Serveurs locaux Frontière Géographique port du cours Réseau Gilles Grimaud Notion dhyperlien et Uniform Ressource Locator Larchitecture du Web Corps du document Notion de document Hypertexte par Gilles Grimaud Rendu par le navigateur : Exemple de code : <p>Exemple de table :</p> <table width="400" height="92" border="1"> 218 <tr> <td>T(1,1)</td> <td>T(2,1)</td> <td>T(3,1)</td> </tr> <tr> <td rowspan="2">T(1,2) et T(1,3)</td> <td>T(2,2)</td> <td>T(3,2)</td> Rendu par le navigateur : </tr> <tr> <td colspan="2" height=50%"> T(2,3) et T(3,3)</td> </tr> </table> Placer une image dans un texte : <img src="http://www.lifl.fr/img/img1.jpg" width="158" height="197"> Pourquoi définir un nouveau protocole : Initialement, permettre que nimporte quel serveur connecté au réseau IP puisse délivrer des documents textes de la manière la plus simple possible aux clients qui les réclament. ⇒ HTTP 0.9 Aujourdhui HTTP est pensé comme un support pour la transmission de documents distribués et multimédia à travers un système dinformation multi-utilisateurs. Placer un programme java (« applet ») dans le document : <applet code="testFTP2.class" codebase = "http://www.lifl.fr/applets" width="320" height="200"> <param name="arg1" value="13"> HTTP : HyperText <param name="arg2" value="texte dans une String"> port du cours Réseau Support du cours Réseau dhypertextes </applet> Transfert Protocol : Protocle de transfert Ouvertu re TCP su dune connexio r le p n (ou un a ort réservé 80 utre si s pécifié) requête cl ient HTTP plète ple ou com Réponse sim la connexion Fermeture de rveur hée par le se TCP déclanc Support du cours Réseau Client Cas de fonctionnement dun service Web les requêtes du client HTTP Img. 2 GIF Img. 1 GIF Doc. HTML // utilisateur / mot de passe // adresse de lutilisateur // notification 2 changement ? // source du lien. // nom du client (navigateur) HEAD <SP> <URL> <SP> [HTTP/1.0 <CRLF> ("Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==" | "From:" adress_mail | "Refered:" URL | "User-Agent:" id de client Web) ] // utilisateur / mot de passe // adresse de lutilisateur // source du lien. // nom du client (navigateur) POST <SP> <URL> <SP> [HTTP/1.0 <CRLF> {"Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==" | "From:" adress_mail | "If-modified-since:" date | "Refered:" URL | "User-Agent:" id de client Web | "Content-Type:" TypeDeMedia | "Content-Length:" TailleDuContenu | "Content-Encoding:" typeDeCodage } <CRLF> {OCTET} // utilisateur / mot de passe // adresse de lutilisateur // notification 2 changement ? // source du lien. // nom du client (navigateur) // type des données transmisses // taille des données // exemple x-gzip // corps des données transmisses Pour les serveurs « HTTP 0.9 » : Document HTML par Gilles Grimaud "HTTP/" une DIGIT "." <SP> trois chiffres <SP> raison <CRLF> en-tête générale <CRLF> en-tête réponse <CRLF> en-tête entité <CRLF> corps entité Les trois chiffres désignent un code derreur. En-tête entité pour un document HTML : Content-Type:text/html Le corps est alors un document HTML. Support du cours Réseau Serveur Web Format des réponses du serveur Web Depuis « HTTP 1.0 » : Requêtes génériques : Méthode <SP> URL <SP> HTTP/1.0 <CRLF> en-têtes et document MIME Codes derreur HTTP Listes des erreurs prédéfinis : Code ; Raison "200" ; OK "201" ; Created "202" ; Accepted "204" ; No Content 226 "301" ; Moved Permanently "302" ; Moved temporarily "304" ; Not modified "400" ; Bad request "401" ; Unauthorized "403" ; Forbidden "404" ; Not Found "500" ; Internal server error "501" ; Not implemented "502" ; Bad Gateway "503" ; Service Unavailable description OK Créé Accepté pas de contenu Changement définitif Changement temporaire non modifié requête incorrecte non autorisé Interdit Non trouvé Erreur interne du serveur Non implanté Erreur de routeur Indisponible Ou autres code 3 digits + texte retour derreur par Gilles Grimaud Entête de réponse dun serveur HTTP Entête HTTP Client Web Autres commandes parfois implantées : PUT <SP> URL <CRLF> document au format MIME DELETE <SP> URL <CRLF> HTTP/1.0 <CRLF> en-têtes corps Doc. HTML Img. 1 GIF Img. 2 GIF Serveur Web les requêtes du client HTTP Format des requêtes : GET <SP> <URL> <SP> [HTTP/1.0 <CRLF> {"Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==" | "From:" adress_mail | "If-modified-since:" date | "Refered:" URL | "User-Agent:" id de client Web} ] Support du cours Réseau Client Web Serveur Web Format des requêtes : Trois requêtes de base : port du cours Réseau Gilles Grimaud HTTP sur TCP/IP : architecture des serveurs Web Connexion TCP serveur Un protocole pour transporter des documents Hypertextes Activité connexion TCP client HTML est les zones dimages HTTP/1.0 <SP> 200 <SP> OK <CRLF> Server: <SP> Apache/1.3.22 (Unix) PHP/4.0.6 <CRLF> Date: <SP> Sun, 28 Apr 2002 20:57:46 GMT <CRLF> Expires: <SP> Tue, 08 May 2000 13:41:16 GMT <CRLF> 227 Last-Modified: <SP> Sun, 02 Feb 2002 20:57:46 GMT <CRLF> Content-Type: <SP> text/html <CRLF> Content-Length: <SP> 2717 <CRLF> <html> <head> <title>toto</title> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> <meta name="keywords" content="motclef1 motclef2"> ... Le corps est une suite doctets. Si on à dans len-tête la ligne content-Type: image/gif Le corps du document sera la suite des octets qui constitue limage au format GIF. Tunnel (ou Proxy) HTTP Documentation relative au web Requête HT TP Protocole HTTP 1.0 et HTTP 1.1 RFC 1945 et RFC 2616 TP grammaire des URL, URI et URN : HT Réponse RFC 1738 Requête HT TP Le Web et le Langage HTML : TP Réponse HT http://www.w3c.org Proxy Client Serveur Validateur de code en ligne : Les requêtes HTTP ne sont plus envoyer au serveur, mais à une machine proxy qui relaie les messages HTTP. http://validator.w3.org/ port du cours Réseau Support du cours Réseau Support du cours Réseau Requête HT TP TP Réponse HT Intérêt : Tunnel daccès à lInternet (pour contrôle) : Protection ; Cache des documents les plus consultés : Performance. Introduction à la notion de documents actifs Distribution dapplications via le WEB Objectif : permettre à lutilisateur denvoyer des informations vers le serveur. Objectif : Exemple : Chaîne de caractère, nombres, choix parmi une liste, cases à cocher, fichiers, choix dun point sur une image Déclaration dun formulaire en HTML Transfert des informations saisies via le bouton « soumettre ». documents construit en fonction des paramètres dune requête ; documents construit en fonction dune base de données ; 2 méthodes de transfert : documents construit en fonction dun outil de mesure externe ; Support du cours Réseau GET & POST documents construit en fonction de résultats externes au système. Formatage des requêtes HTTP : via la commande GET Le formulaire en HTML : Déclaration du formulaire : <form name="form2" method="get" action="http://anURL"> Corps du formulaire par </form> <form name="form1" method="post" action="http://anURL" enctype="multipart/form-data"> Corps du formulaire </form> personnaliser les documents en fonction des utilisateurs ; présenter des données extraites dune requête dans une base de donnée ; Déclancher des opérations à distance et obtenir des résultats ; Afficher des comptes rendues de calculs, de mesure en temps réel. Source de données : Support du cours Réseau port du cours Réseau Gilles Grimaud Produire des documents en fonction de différentes données. Documents actifs, applets & Scripts cotés serveur, Servlet Formulaires HTML Gilles Grimaud <form name="f1" method="get" action="http://monsite.com/monprog.cgi"> <p> nom <input type="text" name="lenom" value="un nom"> prenom <input type="text" name="leprenom" value="un prenom"> </p> <p> 235 par Gilles <input type="submit" name="Submit" value="DoIt"> <input type="submit" name="Cancel" value="Cancel"> <input type="reset" name="Reset" value="Remise à Zero"> </p> </form> Les arguments du formulaire commencent après le "?" Chaque argument est identifié par un couple : nomDArgument=ValueDeLArgument Le caractère "&" est utilisé pour séparer les arguments. Grimaud Method="get": Les arguments fournis par lutilisateur sont passer directement dans lURL qui suit la commande GET (la taille des arguments doit rester modeste) Method="post": Les arguments fournis par lutilisateur sont passer dans le corps de la requête, en utilisant par exemple le format MIME (cf. contenu dun courrier électronique). Requête envoyée au serveur sur click de soumettre : GET /d?leprenom=gilles&lenom=grimaud&Submit=DoIt HTTP/1.1 Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg,*/* Accept-Encoding: gzip, deflate User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1) Règle de formatage dune requête « GET » Pour les champs de saisie de texte : 236 Code HTML : <input type="text" name="arg1" value="unNom"> Format dans la requête HTTP : ...?arg1=unNom&... Pour les listes de valeur : Code HTML : <select name="arg2"> <option value="OUI">oui OK!</option> <option value="NON">Non Merci...</option> <option value="BLANC">Blanc</option> </select> Format dans la requête HTTP : ...&arg2=OUI&... Pour les cases à cocher : Code HTML : <input type="checkbox" name="Arg3" value="C1"> Format dans la requête HTTP : ...&ChoixA=C1&... Règle de formatage dune requête « GET » port du cours Formatage des requêtes HTTP : via la commande POST POST /bidon.cgi HTTP/1.1 Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, */* Content-Type: multipart/form-data; boundary=--------------------------7d29cf5045a Accept-Encoding: gzip, deflate User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1) Content-Length: 1073 ⇒ Limitation de la comande GET (doit pouvoir être contenu dans une URL) inadapté aux requêtes volumineuses (exemple : transfert dun fichier) Déclarer un formulaire selon la méthode «post» : Pour les champs de saisie de texte : Code HTML : <input type="radio" name="Arg4" value="C1"> Format dans la requête HTTP : ...?arg4=C1&... Pour un point sur une image : Code HTML : <input type="image" border="0" name="arg5" width="200" height="184" src="monImage.gif"> Format dans la requête HTTP : ...&arg5.x=110&arg5.y=13&... port du cours Réseau Règle de formatage dune requête « POST » -----------------------------7d29cf5045a Content-Disposition: form-data; name="arg1" <form name="f1" method="POST" action="http://monsite.com/monprog.cgi" enctype="multipart/form-data"> Nom de l'utilisateur -----------------------------7d29cf5045a Content-Disposition: form-data; name="arg2" Contenu du formulaire équivalent à celui dun formulaire GET sauf quil accepte les fichiers : OUI -----------------------------7d29cf5045a Content-Disposition: form-data; name="arg3" Pour les boutons (autre que reset) : C2 <input type="file" name="unFichier" maxlength="60"> Code HTML : -----------------------------7d29cf5045a Support du cours Réseau Support du cours Réseau <input type="submit" name="arg6" value="DoIt"> Content-Disposition: form-data; name="arg4" Format dans la requête HTTP : ...&arg6=DoIt 3 Formatage des requêtes HTTP : via la commande POST -----------------------------7d29cf5045a Content-Disposition: form-data; name="arg5"; filename="C:\Demos\fr019_party\file _id.diz" Content-Type: text/plain .farbrausch consumer consulting fr-019: poem to a horse - party version .64k demo production .mekkasymposium 2002 .code chaos .graphics fiver2 .music rp .synth kb .packer ryg .wait for the final - www.farb-rausch.com Traitement de la requête sur le Serveur Machine distante Déclancher une action, un calcul, Exécuter un programme CGI, ISAPI ; Servlets ; Documents contenant des scripts exécuter par le serveur. Fichier indiqué Retourner un document, produit par lexécution de la requête. -----------------------------7d29cf5045a Content-Disposition: form-data; name="imageField.x" 108 -----------------------------7d29cf5045a Content-Disposition: form-data; name="imageField.y" Réseau Support du cours Réseau Une page HTML ; Une image ; Un renvoi vers une autre page Support du cours 135 -----------------------------7d29cf5045a-- Intégrer les applications cotés serveur dans un cadre de travail par Gilles Grimaud Pour améliorer les performances du serveur : Par exemple « DLL ISAPI sous IIS » Pour faciliter le déploiement / administration et la maintenance dapplications WEB : Exemple : JSP & Servlets sous TomCat Apache. Serveur WEB Intégrer les applications cotés serveur dans le Serveur Web lui-même : Application Fidélisation Application partenaire location Service Web Application Paiement Programme associé à lURL Documents actifs CGI #include <stdio.h> int getNextCount(); int main(int argc, char **argv) { printf("<html>\r\n"); printf(" <head> <title> mon titre </titre> </head>\n\r"); printf(" <body> <h1> Hello World </h1> \n\r"); Réseau printf(" <p> - %d</p> </body>\n\r",getNextCount()); printf("</html>\n\r"); return 1;} Production de documents via des Servlets Déclaration dune Servlet dans le fichier de mapping web.xml : Dépasser le schéma applicatif : Un serveur Web pour une application Gilles Grimaud Production de documents <web-app> <servlet> <servlet-name>MaServlet1</servlet-name> <servlet-class>coreservlets.entryClass</servlet-class> 244 par Gilles Grimaud <init-param> <param-name>Message</param-name> <param-value>Bienvenu en ce mois de Mai</param-value> </init-param> <init-param> <param-name>compteur</param-name> <param-value>134</param-value> </init-param> </servlet> </web-app> Production de documents via des Servlets Public class EntryClass extends HttpServlet { private String message = "pas de message"; private int compteur = 1; public void init() throws ServletException { ServletConfig cfg = this.getServletConfig(); String s245 = cfg.getInitParameter("message"); if(s!=null) message = s; s = cfg.getInitParameter("compteur"); try { compteur = Integer.parseInt(s); } catch (NumberFormatException e) {} } public void doGet(HttpServletRequest req,HttpServletResponse res) { response.setContentType("text/html"); PrintWriter pw = res.getWriter(); pw.println("<html> <head> <title> EntryClass document </title> </head>"); pw.println("<body> <h1> The EntryClass message </h1> <p>"); for(i=0;i<compteur;i++) pw.println(message); pw.println("</p> </body>"); } } Cycle de vie dune Servlet Plus simple et plus facile à produire : PHP, ASP, JSP Machine distante Init Exécuter une fois lorsque le serveur web charge la servlet dans son espace de travail. Elle devrait être redéfinit par la sous-classe de servlethttp pour initialiser lapplication. Service Web Service Cette méthode est appelée (dans une nouvelle thread) pour chaque réception dune requête HTTP. Elle décode les requêtes et redistribue les messages vers les méthodes « doGet », « doPost », (ne pas surcharger cette méthode sauf pour décoder des requêtes très particulières.) doGet, doPost, Interprète PHP (ou ASP) Problème liés aux génération de documents coté serveur : Surcharge de calcul : création de processus CGI ; traitement de la requête Système De fichier Surcharge de la bande passante : Extrait de code PHP <html> <head> <title> MonTitre </title> </head> <body> <h1> Hello World <h1> Destroy (Ou <? echo getNextCount(); ?>) ⇒ port du cours Réseau Appelé lorsque le serveur « retire » la servlet de son environnement Support du cours Réseau <p> - <?= getNextCount() ?> Support du cours Réseau </body> dexécution. Il faut surcharger cette méthode pour « libérer » les ressources </html> monopolisées par la servlet Réception de requêtes invalides ; Transfert de données non compactes Il faut surcharger ces méthodes pour définir les réponse du document actif aux requêtes http transmisses par le client. Quand le serveur devient un info centre Serveur Accueil Serveur 1 Tunnel Internet Serveur 2 Serveur 3 SGBD dup1 JavaScript est les documents réactifs sur le navigateur client Répartir la charge de travail Des millions de clients pour quelques serveurs : Bande passante Architecture dun Info Centre Répartir la charge de travail. ⇒ minimiser le nombre et la taille des requêtes ; ⇒ éviter la transmission de requêtes infondées ; ⇒ réduire le nombre de connexions simultanées au(x) serveur(s) ; ⇒ Transférer les données sous formes compactes plutôt que complètement formatées (exemple : des listes de valeurs plutôt que des images GIF ou JPG) SGBD dup2 SGBD dup3 Machine distante Navigateur Service Web ... <SCRIPT language=JavaScript> <!-window.onerror = new Function("return false;"); window.onload = init; Solution : var eActiveButton = null; function init(){ ⇒ Déployer des applications sur les clients. tblSiteToolbar.onselectstart Support du cours Réseau Support du cours Réseau } Problème dhétérogénéité des plateformes, des environnements, //--> </SCRIPT> Puissance des serveurs port du cours Réseau = new Function("return false;"); ... Java et les applets intégrées aux documents HTML Hériter de Java.applet.Applet qui est une sorte de java.awt.panel. Redéfinir la méthode void init() par Gilles Grimaud 253 par Gilles Grimaud appelé lorsque lapplet viens dêtre chargés. Redéfinir la méthode void start() appelé à chaque (re)démarrage de lapplet. Redéfinir la méthode void stop() appelé lorsque le document contenant lapplet est quitté. Redéfinir la méthode void destroy() appelé lorsque lapplet est retirée du navigateur. Redéfinir la méthode String [][] getParameterInfo() Machine distante Applet 1 Gilles Grimaud Navigateur Applet 2 ... <applet codebase="." code="Clock2.class" width=170 height=150 alt="alternative message" > <param name=bgcolor value="000000"> <param name=unusedp value="Un Texte"> </applet> ... Service Web Définir une applet Java Exemple dApplet public class Examples extends Applet implements Runnable { Thread timer; public void init() { try {setBackground(new Color(Integer.parseInt(getParameter("bgcolor"),16)));} catch (Exception E) { } } 254 public void paint(Graphics g) { ... } public void start() { timer = new Thread(this); timer.start(); } public void stop() { timer = null; } public void run() { Thread me = Thread.currentThread(); while (timer == me) { try { Thread.currentThread().sleep(100);} catch (InterruptedException e) {} repaint();} } public String getAppletInfo() { return "Title: An Applet \n By Me!"; } public String[][] getParameterInfo() { return = {{"bgcolor", "hexadecimal RGB number", "The background color. Default is the color of your browser."}}; } public void init() { AppletContext aC = this.getAppletContext(); ac.showDocument(new URL("une URL"),"target"); ac.showStatus("a status text"); IHM coté client Données coté serveur Problème de génie logiciel : ts en Ou est la place des Elles peuvent interagir entre elles via le navigateur : composants métiers Applet a = ac.getApplet("leNomDeLApplet"); port du cours Réseau Espace du client Support du cours Réseau IHM Navigateur ? réseau Nombre de connexions Espace du serveur Serveur Web Support du cours Réseau Accès aux SGBD données Du modèle client/serveur Appel de procédures distantes Application Client/Serveur : Déf. : Application qui fait appel à des services distants au travers dun échange de messages Le Client envoie une requête ; Le Serveur retourne une requête. Du modèle client/serveur Selon le modèle client/serveur, deux messages au moins sont échangés : Machine Cliente Vue du client Programme Serveur P1 Réponse Vue du serveur Service distant par Gilles Grimaud Gestion des requêtes (priorité) Exécution du service (séquentiel, concurrent) Mémorisation ou non de létat du client P1 Du modèle client/serveur Du modèle client/serveur Exemples dapplication client/serveur Serveur de fichiers (aufs, nfsd) 262 par Gilles Grimaud Serveur dimpressions (lpd) Serveur de calcul Serveur de base de données Serveur de noms (annuaire des services) 1 processus par requête 2 processus pour le service n processus pour le service Processus Processus de service veilleur 263 Processus veilleur Q1 Q2 Q3 T1 Q1 Q2 T2 T3 Q3 R1 R3 Requêtes Traitement P2 1 processus par service Requête Client Machine Serveur Couche Transport Les clients sont les programmes qui sollicitent des services disponibles sur une machine distante. Le serveur est le programme qui fournit un service à un ensemble de clients. Support du cours Réseau Support du cours Réseau Du modèle client/serveur Réseau Programme client Introduction aux systèmes à base dobjets distribués, Illustration sur RMI port du cours Réseau Gilles Grimaud Répartition réduite à : m it e tra s de nts ion lie at s c r ig e M rs l ve Couche Transport Les applets peuvent interagir (dans un cadre limité par les problèmes de sécurité) avec le navigateur sur lequel elles sont déployées : Bénéfice de la répartition des tâches Bande passante puissance de calcul Interaction Applet / Navigateur et Applet / Navigateur / Applet Réponses R1 R2 R2 R3 Processus de service Q1 L1 L2 T1 L3 L2 L3 Processus veilleur Q2 Q3 T2 R1 T3 R2 L3 R3 Processus de service L1 L2 T1 L3 L3 T2 T3 Du modèle client/serveur Service sans données persistantes : Situation idéale où le service sexécute uniquement en fonction des paramètres dentrée Modèle client/serveur optimal Pour la tolérance aux pannes Pour le contrôle de la concurrence le calcul scientifique Service avec données persistantes : Les exécutions successives manipulent des données persistantes Service en mode sans état : Les différentes requêtes peuvent être traitées sans lien entre elles. Modification du contexte dexécution sur le site distant Problème de contrôle de concurrence Difficultés en cas de panne en cours dexécution Exemple Support du cours Réseau Serveur de fichier réparti : accès aléatoire Support du cours Réseau au modèle dappel de procédure à distance. Service en mode avec état : Les différentes requêtes sont nécessairement traitées séquentiellement. Outil idéal pour les applications conçues selon le modèle client / serveur. Lopération à réaliser est présentée sous la forme dune procédure que le client peut appeler. Ce faisant il déclenche lexécution du traitement associé à cette procédure, mais sur la machine distante. Il peut y avoir modification de données globales ou pas mais lopération seffectue en liaison avec celles qui lont précédé. Retrouver la sémantique habituelle de lappel de procédure Sans se préoccuper de la localisation de la procédure Sans se préoccuper du traitement des défaillances Opération de base Objectifs très difficiles à atteindre 1. doOp(IN ServiceID s, IN Name opName, IN Msg *args, OUT Msg *result) Serveur 1. getRequest(OUT ServiceID s,OUT Msg *args) Support du cours Réseau 2. opName(IN Msg *args, OUT Msg *result) 3. sendReply(IN ServiceID s,IN Msg *result) Support du cours Réseau Les pièges des appels de procédure à distance : Appel de procédure à distance pannes du client et du serveur « indépendantes » pannes du réseau de communication ⇒ appel de procédure distante considéré comme non fiable temps dappel non négligeable ; concurrence des appels dans la majorité des cas. Principe de Birrel & Nelson (84) Machine Cliente Réseau Machine Serveur Service Appelant271 RPC P1 Service par Gilles Grimaud RPC A B Couche Transport par Gilles Appelant et appelé sont dans des Grimaud espaces virtuels différents : ⇒ Environnement dexécution de lappelant distinct de celui de lappelé. Principe de fonctionnement dun appel distant Couche Transport au modèle dappel de procédure à distance. même mode de pannes ; appel et retour de procédure considéré comme fiable ; temps dappel très faible ; concurrence des appels dans une minorité de cas. Objectifs Client Serveur de fichier réparti : accès séquentiel Appel de procédure au modèle dappel de procédure à distance. Simplicité (en labsence de panne) Sémantique identique à celle de lappel local Exemple Appelant et appelé sont dans le même espace de travail ⇒ Environnement dexécution de lappelant partagé avec lappelé. Il peut y avoir modification de données globales mais lopération seffectue sans lien avec celles qui lont précédé. Serveur de fichier réparti (lectures / écritures) Du modèle client/serveur port du cours Réseau Gilles Grimaud Du modèle client/serveur Exemple : Exemple : port du cours Réseau Du modèle client/serveur Appelé P2 P1 D C Réalisation peu conviviale Sémantique différente de lappel de procédure même en labsence de panne. Rôle des talons Le talon client - Stub 272 Cest la procédure dinterface du site client : qui reçoit lappel local ; le transforme en appel distant (encodage des arguments dans un message « réseau ») attend réception des résultats de lexécution distante décode et retourne la réponse à celui qui a appelé (localement) le Stub. Le talon serveur - Skeleton Cest la procédure sur le site serveur : Qui reçoit lappel sous forme de message (décode les arguments) Appelle « localement » la procédure serveur Encode la réponse fournie par la procédure serveur sous la forme dun message « réseau ». RPC Les problèmes RPC Passage de paramètres Traitement des défaillances Problèmes de sécurité congestion du réseau ou du serveur authentification du client authentification du serveur confidentialité des échanges la réponse ne parvient pas en temps utile panne du client pendant le traitement de la requête panne du serveur avant ou pendant le traitement de la requête erreur de communication Désignation et liaison Aspect pratiques Valeur Solution pour les refs. pas de problème particulier proposer une référence de lobjet indépendante de ladresse mémoire. Copie / restauration les valeurs des paramètres Lobjet devient lui-même une référence distante pour le sont recopiées Pas de difficultés majeures serveur qui pourra lutiliser via optimisation des solutions des appels de procédures distantes. pour RPC Solution insuffisante Les premières générations doutils dappel à distance Corba Support de lhétérogénéité des langages et des plateformes : 1 langage de description du service : IDL 1 consortium garant de la représentation du plus grand nombre : OMG RPC : langage C / Unix RPCGEN Interface.idl registry Prog_client →C Talon_client.c Interface.h Code_client.c →Java →Kobol → Talon_serveur.c Talon_client.xxx Talon_serveur.yyy xxx yyy Code_serveur.c CC CC RFC_lib.a port du cours Réseau Support du cours Réseau Prog_client Prog_serveur trin g.. 3 Namingpar Gilles Grimaud JVM Client 8 Remote Method Invocation sur TCP/IP Skeleton JVM Serveur Serveur fo o( ) Lo ok u p( Stub ) 7 d( ) 2 1 in fo o( 6 Activate Client Create 4 BUS Corba P Espace machine C 3 4 P 5 Prog_client 2 P 1 P Espace machine B Java et les applications distribuées Java-RMI Java possède un RPC orienté-objet intégré Interaction dobjets situés dans des espaces dadressage différents sur des machines distinctes. Un objet distribué est un objet Java « comme les autres ». Il possède Support du cours Réseau Un proxy : représentant de lobjet coté client Un skeleton : coté serveur Prog_serveur Prog_serveur Codage gi s ) Gilles Grimaud 1 Java RMI Mode opératoire eb R Naming Re rmiregistry 2 CorbaScript Java RMI Architecture .. up ok Lo 5 Espace machine A adaptation à des conditions multiples (protocoles, langages, pour représenter des références « Références matériels) Support du cours Réseau du cours Réseau non objet » (adresseSupport mémoire). gestion de lhétérogénéité Impossible dutiliser « ladresse ⇒ Seule alternative : mémoire mémoire » de lappelant ! distribuée port du cours Réseau Interface.x Système dobjets distribués Description de linterface du service Ecriture du code du serveur implantant linterface 280 du client qui utilise linterface par Gilles Grimaud Ecriture Compilation Compilation des sources (javac) Génération des stub et skeleton (rmic) Activation Lancement du serveur de noms (rmiregistry) Lancement du serveur Lancement du client Java RMI écriture de linterface Simple déclaration dune interface Java classique. Linterface doit être publique Linterface distante doit étendre linterface 281 java.rmi.Remote Chaque méthode doit déclarer au moins lexception java.rmi.RemoteException Les objets passés en paramètre des méthodes doivent : être une sorte dinterface java.rmi.Remote le paramètre est alors passé par référence ; Supporter linterface java.io.Serializable, dans ce cas lobjet est passé par valeur (sérialisation / desérialisation) Exemple Java RMI 1/ création de linterface Hello.java Exemple Java RMI 2/ création du serveur import java.rmi.*; import java.rmi.server.*; Exemple Java RMI 2/ création du serveur HelloServeur.java HelloClient.java import java.rmi.*; public class HelloServeur extends UnicastRemoteObject implements Hello{ private String msg; public class HelloClient { public static void main(String args[]) { public interface Hello extends public HelloServeur(String msg) throws java.rmi.RemoteException { try { super(); this.msg = msg; } java.rmi.Remote Hello obj = (Hello) Naming.lookup("//localhost:8080/mon_serveur"); public String sayHello() throws java.rmi.RemoteException { { System.out.println("Hello world: " + msg); String msg = obj.sayHello(); return "Hello world: " + msg; } System.out.println(msg); String sayHello() throws } catch (Exception e) { public static void main(String args[]) { e.printStackTrace(); try { java.rmi.RemoteException; HelloServeur obj = new HelloServeur("HelloServeur"); } Naming.rebind("//localhost:8080/mon_serveur",obj); port du cours Réseau Support du cours Réseau System.out.println("HelloServer bound in registry"); Support du cours Réseau } } Gilles Grimaud } } catch(Exception e) { e.printStackTrace(); } } } Exemple Java RMI 3/ génération du code Exemple Java RMI 4/ activation du système Définir une sous-classe de Socket et une sous-classe de ServerSocket adapté au support de transport visé. Trois processus à démarrer : Compilation des sources : RMIREGISTRY javac Hello.java HelloServeur.java HelloClient.java Génère les classes : > > RMIREGISTRY 8080 JAVA HelloServeur hello.class HelloServeur.class HelloClient.class > JAVA -Djava.rmi.server.codebase=ftp://localhost/JServ/ HelloServeur Production des talons associés au serveur : rmic HelloServeur HelloServer bound in registry Hello world: HelloServeur JAVA HelloClient Génère les classes : > > JAVA HelloClient HelloServeur_Stub.class HelloServeur_Skel.class Couche de transport alternative pour Java RMI Définir une classe implantant RMIClientSocketFactory et une autre pour RMIServerSocketFactory produisant des sortes de Socket et des ServerSocket qui seront utilisées par le stub et le skeleton. Le serveur qui étend UnicastRemoteObject et qui implante linterface RMI remote utilise Super(0, // choix dun port anonyme sinon numero du port new RMIClientSocketFactory(), new RMIServerSocketFactory()) Plutot que Super() N.B. : Flexibilité limitée pour la couche de transport utilisée. Hello world: HelloServeur > par Gilles Grimaud 289 par Gilles Grimaud 290
Documents pareils
TP 5 : Programmation réseau en Java
– Last-Modified : Certains serveurs renvoient la date de la dernière modification du document, cette information est utilisée pour gérer les caches sur les
navigateur en complément de la commande H...