ICMP ICMP encapsulé dans IP Exemple
Transcription
ICMP ICMP encapsulé dans IP Exemple
ICMP encapsulé dans IP en- type code tête (8 bits) (8 bits) ICMP checksum (16 bits) message (taille variable) type code message signification 8 0 demande ECHO utilisé par ping pour test réseau envoi data destinataire et demande réponse 3 0 dest. innaccessible réseau inaccessible 3 3 3 … 1 2 3 … dest. innaccessible dest. innaccessible dest. innaccessible machine inaccessible protocole inaccessible port inaccessible rfc 792 … 4 ICMP ✦ Internet Control Message Protocol ✦ ✦ ✦ ✦ gestion des informations d’erreurs des machines connectées peu de contrôle dans IP et ICMP signale les erreurs aux protocoles des couches voisines ICMP utilisé par routeurs pour signaler une erreur (un problème de dépôt delivery) si erreur dans un datagramme ICMP, pas de message d’erreur (éviter effet boule de neige) 3 Exemple mac dest 0000 0010 0020 0030 0040 0050 0060 mac src 00 15 56 3d ce 21 00 19 00 54 17 ee 00 00 40 01 01 01 08 00 76 23 df 0a 9d ca 08 09 0a 0b 0c 0d 16 17 18 19 1a 1b 1c 1d 26 27 28 29 2a 2b 2c 2d 36 37 IP v4 e3 d3 31 4d 08 00 45 00 df 5e c0 a8 01 0b c0 a8 00 00 4b 7e ce 78 00 0d 0e 0f 10 11 12 13 14 15 1e 1f 20 21 22 23 24 25 2e 2f 30 31 32 33 34 35 ttl icmp IP src checksum code type 5 ..V=.!.. ..1M..E. .T....@. .^...... ....v#.. ..K~.x.. ........ ........ ........ .. !"#$% &'()*+,- ./012345 67 Client-serveur Modèle clientserveur 134.59.9.54:34321 134.59.9.96:45321 ✦ Appli client-serveur utilise des sockets ✦ sockets fournissent interface d’utilisation aisée TCP ou UDP ✦ socket: moyen de désigner l’extrémité d’une connexion coté émetteur ou récepteur en l'associant à un port la cnx (bidirectionnelle) est établie via des sockets, client et serveur peuvent communiquer par de simples lectures/ écritures ✦ Quand 8 Le modèle client-serveur Association Le modèle client-serveur (asymétrique ) § § Serveur § Démarre en premier § Ouvre un canal de communication (port de transport) et attend § Sur réception d’une requête client, - serveur “itératif” traite la demande, retourne le réponse et re-attend un serveur “itératif” ne termine jamais de lui même - serveur “concurrent” crée un nouveau flot de contrôle dédié à ce client; ce nouveau flot de contrôle se termine quand le client se déconnecte Client § Ouvre un canal de communication et se connecte à un serveur distant § Boucle: transmission de requête – attente de réponse § Clôt la communication et termine § Association : quintuplet { protocole, @IPlocal, porttransportlocal, @IPdistant, porttransportdistant } § Identifie sans ambiguïté un couple d’applications sur 2 stations distantes § Protocoles principaux : § TCP: sockets en mode “stream” (orienté connexion) § UDP: socket en mode “datagram” (sans connexion) Où les trouver? Services de la couche transport ✦ ✦ ✦ système sockets fournissent une interface d’accès, à partir d’un hôte, aux interfaces de transport TCP et UDP TCP: liaison établie au préalable entre C et S avant échange flot UDP: pas de liaison établie; échanges de messages individuels ✦ interface sockets fournissent une communication logique entre les processus applicatifs distants fonctionnent en mode client serveur: ✦ sockets mode connecté sockets mode non connecté ✦ interface transport réseau ✦ Application TCP UDP ✦ interface réseau émetteur: segmente les messages et les passe à la couche réseau récepteur: ré-assemble les segments en messages fournis à la couche applicative Deux protocoles de transport: ✦ IP ✦ TCP: fiable (sans perte), livraison dans l’ordre des données UDP: sans garantie d’ordre dans la livraison 10 Transport vs Réseau ✦ ✦ Couche réseau: communication logique entre machines Couche transport: communication logique entre processus: ✦ s’appuie sur la couche réseau pour l’envoi effectif des données. TCP TCP Transfert de données ✦ ✦ ✦ ✦ Service connecté et fiable de transmission de données entre 2 machines Utilise IP (non fiable) pour la transmission réseau TCP transporte environ 90% des octets sur Internet ✦ ✦ transfert flux continu en le découpant en segments (à cause MTU; pour ethernet 1500 octets). Variable Max. Seg. Size qui doit passer par le lien décide en général de lui-même les endroits où le flux de données doit être coupé les utilisateurs ont parfois besoin de savoir que toutes les données soumises à TCP ont bien été émises ✦ ✦ ✦ ✦ une fonction «push» force TCP à envoyer les données immédiatement un flag signale des données comme urgentes et force TCP à les transmettre rapidement 14 16 Aperçu de TCP Gestion des erreurs transfert de données de base ✦ gestion des erreurs ✦ ✦ contrôle de flux ✦ multiplexage ✦ ✦ gestion de connexions ✦ priorité et sécurité ✦ 15 considérations et traitement du cas des données ✦ perdues/erronées/dupliquées/désordonnées utilisation de n° de séquence ✦ pour réordonner le flux original ✦ éliminer les segments dupliqués utilisation des acquittements (émis par le destinataire) ✦ retransmission segments perdus détection erreurs de transmission par CRC 17 Principes de TCP Contrôle de flux/congestion ✦ TCP fournit au destinataire un moyen de contrôler le débit des données envoyées par la source ✦ ✦ ✦ ✦ ✦ pour que l'émetteur n'émette pas trop vite par rapport au récepteur ou au canal une information (avec chaque acquittement) indique la capacité de réception instantanée sous la forme d’une fenêtre ✦ ✦ ✦ ✦ Etablissement de connexion préalable au transfert des données → ouverture de socket, réservation de buffer Récupération des pertes (perte ≠ erreur) avec acquittements (ACK) et lutte contre les déséquencements de segments. Pertes interprétées comme signal de congestion → diminution débit Contrôle de flux: pour que l'émetteur n'émette pas trop vite par rapport au récepteur 18 20 Multiplexage Gestion des connexions TCP permet à plusieurs processus d'une même machine de communiquer simultanément par sockets (point d'accès pour les services de transport) ✦ possède un type: quel protocole? quel mode? ✦ utilise un ensemble de primitives de service ✦ encapsule les données: descriptif, file d'attente des messages ✦ identifié par un couple unique (n° port, @IP) connexion requiert mise en place 2 sockets socket peut être utilisé par plusieurs connexions 19 ✦ ✦ ✦ ✦ Pour la fiabilité et le contrôle de flux : initialisation et infos à chaque communication Une connexion est la combinaison des infos : ✦ les sockets ✦ les fenêtres ✦ les n° de séquence Les processus TCP qui communiquent doivent d'abord négocier et établir une connexion de façon bilatérale Connexion fermée en fin de comm (libérer ressources) 21 Triple poignée de main Gestion des connexions ✦ ✦ 3 phases: Suite de segments TCP vides avec des drapeaux spéciaux dans l’en-tête: U,A,P,R,S,F ✦ ✦ établir connexion (SYN/SYN-ACK/ACK) ✦ transfert informations ✦ libération de la connexion ✦ ✦ ✦ ACK: pour les segments qui ne sont que des acquittements SYN, FIN: pour établir et clore la connexion RST (reset) URG (urgentes) PSH (push data now) Le signal ACK de l’étape 3 peut contenir des données 22 Etablir connexion ✦ ✦ ✦ ✦ n° séq. et (ack) pour réordonner les données n° séq. pour source n° ack pour destinataire tous segments reçus doivent être acquittés Gestion connexion Initial Sequence Number généré aléatoirement ✦ SYN (ISN =n° séq.=x) q.=y, ack=x+1) SYN ACK(n° sé 3 phases: ✦ établir connexion (SYN/SYN-ACK/ACK) ✦ transfert informations ✦ libération de la connexion ACK(n° séq.= x+1, ack=y+1) + infos taille fenêtre 2 n° présents=piggybacking 23 25 Transfert Les différents buffers buffer de 4Ko • Une socket contient un buffer pour l’émission des bloqué 2Ko|seq=0 =204 ACK=2048 WIN 2Ko|seq=20 48 8 =0 ACK=4096 WIN =2048 ACK=4096 WIN appli lit 2 kO 1Ko|seq=4096 données Application → TCP et un pour la réception TCP → Application • 2 autres buffers entre couche TCP et couche réseau: • Buffer émission : segments émis gardés en mémoire tant que l'émetteur n'a pas reçu d’acquittement • Buffer réception: si récepteur reçoit les segments 1,3 puis 2 : il donne 1 à l'application puis garde 3 en mémoire tant qu'il n'a pas reçu 2 car les données doivent être ordonnées 26 28 Les différents buffers Utilisation des ack • Circulation bidirectionnelle des données • TCP transporte des octets ; tous les numéros de séquence/ack sont en octets! • Pour un sens donné: • Le numéro de séquence correspond au premier octet porté par le segment • Le numéro d'ack au numéro du prochain octet attendu dans l'autre sens. 27 29 N° seq. et ack. Gestion connexion n° seq: ✦ ✦ ✦ Numéro, dans le flux d’octets, du premier octet transporté 3 phases: ✦ établir connexion (SYN/SYN-ACK/ACK) ✦ transfert informations ✦ libération de la connexion n° ack: ✦ ✦ ✦ Numéro de seq. du prochain octet attendu par émetteur ACK cumulatifs 32 Fiabilité transmission Déconnexion symétrique envoi DR+ démarrage timer ✦ ✦ ✦ Comment l’émetteur sait-il qu’il y a eu une perte? déconnexio TCP observe les numéros de séquence envoi ACK Principe: s’il y a des trous, il renvoie DR envoi DR+ démarrage timer DR ACK délai déconnexion après délai 31 34 Contrôle de flux Déconnexion asymétrique ✦ CR ✦ ACK DATA DATA fenêtre coulissante (sliding window) WIN=0, source ne peut émettre qu’un octet pour: ✦ stopper l’application distante ✦ demander au destinataire d’annoncer ✦ prochain octet attendu ✦ DR pas de données délivrées après requête de déconnexion 37 taille fenêtre réception transmis et transmis, non non non acquitté acquitté transmis tranmissible début Contrôle de flux 39 fin Contrôle de flux Application S1 ✦ ✦ ✦ Pour que l'émetteur n'émette pas trop vite par rapport au récepteur Pour éviter ce problème, on surveille le buffer TCP/ Application coté récepteur (au niveau socket) TCP envoie le nombre d’octets restants dans le buffer dans un champ fenêtre de réception de l’en-tête TCP S2 S3 S4 taille fenêtre émission W=3 Emetteur Récepteur Ack S4, adv. win=0 taille fenêtre émission W=min(3,0)=0 Emetteur 40 S1,...,S4 reçus; non consommés taille buffer socket = 4 récepteur envoie ack avec fenêtre réception 0 Algos de contrôle ✦ ✦ ✦ La congestion intervient lorsque trop de sources tentent d'envoyer trop de données trop vite pour que le réseau soit capable de les transmettre. entraîne perte de paquets (signe de congestion) ; augmente les délais. Les acquittements des données émises, ou l'absence d'acquittements, sont utilisés par les émetteurs pour interpréter de façon implicite l'état du réseau entre les systèmes. À l'aide de temporisations, émetteurs et récepteurs TCP peuvent modifier le comportement du flux de données. C'est le contrôle de congestion. Beaucoup d'algorithmes d'évitement de congestion pour TCP : autant de version de TCP. 41 43 Contrôle congestion Principe du contrôle de congestion nd cw débit=cwnd/RTT [octets/s] ✦ cwnd ajustée en fonction des pertes: ✦ si perte cwnd diminue ✦ sinon on augmente k( ✦ s) ts te 42 Se fait par le contrôle de la fenêtre d’émission (ou de congestion) de taille cwnd en octets oc ✦ ac ✦ Nagle: ✦ pour applis interactives (telnet, X); travail par caractère ✦ envoi 1° car. puis buffering jusqu’à ack (sauf si remplissage segment entre temps) Silly window syndrome ✦ minimise ack ✦ attente possibilité réception MSS (buffer plein à moitié) ✦ complémentaire du précédent RTT ✦ Congestion 44 Fenêtres émetteur ✦ ✦ ✦ Buffer émission: données appli de taille cwnd= ✦ sous-fenêtre mobile fenêtre émission ✦ nb max paquets émetteur peut envoyer sans ACK ✦ débit = cwnd/RTT en bps Buffer réception: espace stockage des données (reçues ou pas) de taille rwnd: nb max de paquets que récepteur peut accepter à un instant (espace libre récepteur) ssthresh: estimation bande passante dispo (taille max fenêtre émission) Timers Sender ✦ ✦ Receiver ✦ ✦ ✦ gestion congestion seulement par émetteur ✦ réparer congestion soit par: ✦ déconnexion: 2*TTL 47 Accusés de réception diminution débit ✦ réduction fenêtre à 1 segment ✦ ✦ ✦ ✦ ✦ réduction fenêtre congestion de moitié et doubler temporisation de retransmission 46 persistance: pour débloquer situation après fenêtre émission=0 inactivité: vérifie présence correspondant système de fenêtrage pour congestion nb octets transmissibles= moyenne 2 fenêtres détection congestion par pertes retransmission: démarré à chaque envoi paquet en attente ack et fonction RTT (eg. RTO=2*RTT): C’est le RTO (retransmission timeout) ✦ 45 ✦ RTT= temps entre envoi paquet et réception ACK ✦ récepteur -> émetteur: n° 1er octet attendu par récepteur TCP classique: ACK cumulatifs DupACK: ACK identique au précédent ✦ cas où paquet N arrive avant N-1; son ACK est identique ACK N-2 Delayed ACK: retarde AR ✦ après min{2è paquet reçu, tps fixe -500ms-} 48 Algos de base ✦ ✦ TCP : Tahoe géré par timer “slow start” cwnd<ssthresh ✦ après congestion ne pas remonter trop vite: ✦ init. fenêtre à 1 segment ✦ augmentation de 1 à chaque ack ✦ cwnd double à chaque RTT (exponentiel) ✦ atteinte ssthresh-> congestion avoidance ✦ perte: ssthresh=cwnd/2; cwnd=1->slow start “congestion avoidance” quand cwnd≥ssthresh ✦ pour stopper augmentation trop rapide ✦ à partir d’un seuil (+1 segment par RTT) ✦ perte: ssthresh=cwnd/2; cwnd=1 ->slow start seuil initial nouveau seuil Slow start + congestion avoidance + fast retransmit 49 51 Algos de base ✦ ✦ Machine à états finis “fast retransmit” (détecte perte et retransmet) ✦ si 3 dupACK ou pas ACK au timeout on retransmet paquet->slow start “fast recovery” ✦ si plusieurs dupACK, 1 seule perte ✦ cwnd=ssthresh+3 (car 3 paquets acquittés) ✦ pour chaque dupACK, cwnd++ ✦ réception non dupACK: dégonflement cwnd ✦ cwnd=ssthresh ✦ -> congestion avoidance 50 52 Modèle de base En-tête TCP ✦ ✦ ✦ ✦ protocole orienté octet (ne préserve pas frontières de message) pas de contrôle sur les émissions (données envoyées immédiatement ou bufferisées) ✦ N° port: entier sur 16 bits ✦ ports réservés 0..1023 ✦ ports connexion 1024..49151 ✦ ports dynamiques 49152..65535 http://www.iana.org/assignments/port-numbers récupération de données urgentes 53 Segments TCP ✦ ✦ ✦ entités TCP échangent des segments: ✦ en-tête 20 octets (+options) = IP ✦ Nb octets de données de taille variable taille segments décidée par TCP ✦ Tmax=max {65535o avec en-tête TCP, MTU} segment doit tenir dans MTU ✦ IPv4 MTUmin = 556 octets 54 55 ✦ ✦ N° séquence associé à chaque octet ✦ sur 32 bits; correspond au n° 1er octet transmis ✦ permet de réordonner les paquets dans un flux pointeur urgence ✦ décalage en octets à partir du n° séq. permettant de signaler les données urgentes 56 ✦ ✦ acquittement: n° d’AR d’un segment TCP est celui du prochain octet de données attendu SEQ=x N octets délivrés, ACK=x+N taille de fenêtre: nb d’octets qu’on peut envoyer à la suite de l’octet acquitté ✦ 57 ✦ ✦ ✦ ✦ ✦ ✦ URG: pointeur de données urgentes significatif ACK: AR significatif PSH: fonction push RST: réinitialise cnx SYN: synchronisation n° séq. FIN: fin de transmission 58 checksum sur: en-tête, données et pseudo en-tête: ✦ mise à 0 du champ checksum ✦ ajout éventuel octet nul ✦ complément à 1 de la somme des compléments à 1 des mots de 16 bits 59 ✦ Options ajoutent des possibilités non offertes dans en-tête ✦ spécifier + grande charge utile TCP ✦ modifie échelle fenêtre avec valeur sur 30 bits ✦ autorise réémission sélective avec notion NAK ✦ dernier mot sert pour bourrage (= 0 mod 32) 60 En-tête UDP ✦ UDP segment avec en-tête de 8 octets ✦ ports idem TCP ✦ longueur comprend en-tête ✦ checksum (opt.) utilise aussi pseudo en-tête 63 Service UDP User Data Protocol (RFC 768) ✦ protocole de transport en mode déconnecté ✦ ✦ ✦ envoi direct paquets IP au niveau couche transport un seul paquet pour les transmissions (oneway handshake): création paquet et transmission immédiate ✦ service datagramme sans connexion ✦ peu overhead ✦ détection erreurs par checksum, ✦ ni duplication, ni contrôle de congestion Exemple: ✦ 62 client/serveur: dns, tftp 64 Checksum 3 mots de 16 bits ✦ 0110011001100000 0101010101010101 1000111100001100 un “vrai” + avec retenue + =1011101110110101 + 1000111100001100 1 0100101011000010 complément à 1=checksum 1011010100111101 destinataire fait la somme des 4 mots=1111111111111111 65