Chapitre 3 : La Couche Transport PDF
Document Details
Uploaded by Deleted User
Tags
Summary
Ce document décrit la couche transport dans un contexte de réseau informatique. Il couvre les services de la couche transport, comme le multiplexage et le démultiplexage, ainsi que les protocoles UDP et TCP. Il traite également de la fiabilité de transmission des données et des mécanismes de contrôle de flux et de congestion.
Full Transcript
Chapitre 3 La couche Transport Programmation et Réseautique en génie des TI (GTI/LOG100 ) Le contenu de cette présentation est basé sur le livre de Kurose et Ross et de la documentation y jointe : Computer Networking: A Top Down Approach, 6ème édition. Jim Kurose, Keith Ross Addison-W...
Chapitre 3 La couche Transport Programmation et Réseautique en génie des TI (GTI/LOG100 ) Le contenu de cette présentation est basé sur le livre de Kurose et Ross et de la documentation y jointe : Computer Networking: A Top Down Approach, 6ème édition. Jim Kurose, Keith Ross Addison-Wesley, Mars 2012, ISBN-13: 978-0132856201 Chapitre 3 : la couche Transport Objectifs: Comprendre les principes des services offerts par la couche transport: multiplexage et démultiplexage transfert fiable de données contrôle de flux contrôle de congestion Maîtriser les protocoles de la couche transport utilisés dans l’internet UDP : transport sans connexion TCP : transport fiable orienté connexion Contrôle de congestion TCP Couche Transport 3-2 Chapitre 3 : la couche transport 1. Les services de la couche transport 2. Multiplexage et démultiplexage 3. Transport sans connexion: UDP 5. Transport orienté connexion: TCP Structure d’un segment TCP Fiabilité de transmission dans TCP Gestion d’une connexion TCP Contrôle de flux dans TCP Contrôle de congestion dans TCP Couche Transport 3-3 Chapitre 3 : la couche transport 1. Les services de la couche transport 2. Multiplexage et démultiplexage 3. Transport sans connexion: UDP 5. Transport orienté connexion: TCP Structure d’un segment TCP Fiabilité de transmission dans TCP Gestion d’une connexion TCP Contrôle de flux dans TCP Contrôle de congestion dans TCP Couche Transport 3-4 Services de transport et protocoles application Offrir une communication logique transport réseau entre les processus exécutés sur liaison différents hôtes physique les protocoles de transport roulent sur les terminaux côté émetteur : découper le message en segments, les passer à la couche réseau côté récepteur : réassembler les segments en messages, les application passer à la couche application transport réseau il y a plusieurs protocoles liaison physique disponibles: Internet : TCP et UDP Couche Transport 3-5 Couche transport vs. réseau Couche réseau: Analogie maisons: communication logique 12 enfants à la maison de entre les hôtes Anne envoyant des lettres à 12 enfants à la maison de Bill Couche transport: hôtes = maisons communication logique processus = enfants entre processus messages app = lettres Utilise les services de dans des enveloppes la couche réseau protocole de transport = Anne et Bill protocole de la couche réseau = service postal Couche Transport 3-6 Les protocoles transport d’Internet application fiable, livre les segments transport réseau dans l’ordre : TCP liaison physique contrôle de congestion contrôle de flux établissement de connexion non fiable, ne livre pas les segments dans l’ordre: UDP extension à IP “best- application transport effort” réseau liaison services non disponibles: physique garantie de délai garantie de bande passante Couche Transport 3-7 Chapitre 3 : la couche transport 1. Les services de la couche transport 2. Multiplexage et démultiplexage 3. Transport sans connexion: UDP 5. Transport orienté connexion: TCP Structure d’un segment TCP Fiabilité de transmission dans TCP Gestion d’une connexion TCP Contrôle de flux dans TCP Contrôle de congestion dans TCP Couche Transport 3-8 Multiplexage et démultiplexage multiplexage à l’émetteur : traiter les données provenant démultiplexage au récepteur : des sockets, et ajouter l’entête transport (plus tard utilisé pour délivrer les segments reçus le démultiplexage) pour les sockets correspondants application application P1 P2 application socket P3 transport P4 processus transport réseau transport réseau liaison réseau liaison physique liaison physique physical Couche Transport 3-9 Comment marche le démultiplexage La destination reçoit des datagrammes IP 32 bits chaque datagramme contient les adresses IP # port source # port dest source et destination chaque datagramme porte Autres champs d’entête 1 segment de la couche transport chaque segment contient données de l’app les numéros de port (message) source et destination La destination utilise les adresses IP et les numéros de format du segment TCP/UDP port pour diriger le segment vers le socket approprié Couche Transport 3-10 Démultiplexage UDP : Exemple DatagramSocket serverSocket = new DatagramSocket(6428); DatagramSocket mySocket2 DatagramSocket mySocket1 = new DatagramSocket(9157); = new DatagramSocket (5775); application application application P1 P3 P4 transport transport transport réseau réseau réseau réseau liaison physique liaison physique physique Port source : 6428 Port source : ? Port dest : 9157 Port dest : ? Port source : 9157 Port source : ? Port dest : 6428 Port dest : ? Couche Transport 3-11 Démultiplexage UDP Créer un socket client : DatagramSocket mySocket1 = new DatagramSocket(12534); Créer un socket serveur : DatagramSocket serverSocket = new DatagramSocket(6428); Pour envoyer un datagramme dans un socket UDP, on doit spécifier : l’adresse IP destination et le # port destination DatagramPacket Packet = new DatagramPacket(Data, Data.length, DstIPAddr, DstPort); clientSocket.send(sendPacket); Quand un hôte reçoit un segment UDP : Il vérifie le numéro de port destination dans le segment Il dirige le segment UDP au socket avec ce # port Les datagrammes IP avec le même numéro port destination, mais des adresses IP source différents et/ou des numéros de port source différents seront dirigés vers le même socket à la destination 3-12 Démultiplexage TCP Le socket TCP est Le serveur peut supporter identifié Par un plusieurs sockets TCP quadruplet: simultanément: adresse IP source chaque socket est identifié numéro de port source par son propre quadruplet adresse IP destination Les serveurs Web ont un numéro de port destination socket pour chaque client Le récepteur utilise les connecté quatre valeurs pour diriger HTTP non-persistant va le segment vers le socket avoir un socket pour chaque requête approprié Couche Transport 3-13 Démultiplexage TCP : Exemple application application P4 P5 P6 application P3 P2 P3 transport transport transport réseau réseau liaison réseau liaison physique liaison physique physique serveur adresse IP:B hôte hôte adresse IP:C adresse IP: A IP src,port src : B,80 IP dest,port dest : A,9157 IP src,port src : C,5775 IP dest ,port dest : B,80 IP src,port src : A,9157 IP dest , port dest : B,80 IP src, port src : C,9157 IP dest ,port dest: B,80 Example de trois segments destinés à (l’adresse IP : B, port destination: 80) qui sont demultiplexés vers des sockets différents 3-14 Démultiplexage TCP: Exemple 2 Serveur multi-thread application application application P4 P3 P2 P3 transport transport transport réseau réseau liaison réseau liaison physique liaison physique physique serveur adresse IP:B hôte hôte adresse IP:C adresse IP: A IP src,port src : B,80 IP dest,port dest : A,9157 IP src,port src : C,5775 IP dest ,port dest : B,80 IP src,port src : A,9157 IP dest , port dest : B,80 IP src, port src : C,9157 IP dest ,port dest: B,80 Couche Transport 3-15 Chapitre 3 : la couche transport 1. Les services de la couche transport 2. Multiplexage et démultiplexage 3. Transport sans connexion: UDP 5. Transport orienté connexion: TCP Structure d’un segment TCP Fiabilité de transmission dans TCP Gestion d’une connexion TCP Contrôle de flux dans TCP Contrôle de congestion dans TCP Couche Transport 3-16 UDP: User Datagram Protocol [RFC 768] Protocole de transport basique Service “best effort”. Les segments UDP peuvent être: Utilisation d’UDP: perdus applications de streaming multimédia (tolérance aux livrés en désordre à pertes, sensibilité à la variation l’application de débit) DNS Sans connexion: SNMP Pas d’établissement de connexion entre l’émetteur et Transfert fiable sur UDP : le récepteur UDP Comment faire? Chaque segment UDP est traité indépendamment des autres Couche Transport 3-17 UDP: entête UDP Taille en octets d’un segment UDP, y compris l’entête 32 bits # port source # port dest taille checksum Pouquoi UDP? pas d’établissement de connexion (ca ajoute des délais) données de l’app simple: pas d’état de connexion (message) un petit entête pas de contrôle de congestion: UDP peut transmettre aussi format d’un segment UDP rapidement qu’il veut Couche Transport 3-18 UDP somme de contrôle (Checksum) objectif: détecter les “erreurs” (par ex., bits inversés) dans le segment transmis émetteur: Récepteur: traite le contenu du segment calcule la somme de contrôle comme une séquence du segment reçu d’entiers de 16-bits vérifie si la somme de calcule la somme de contrôle contrôle calculée égale à la (checksum): le complément à valeur du champ checksum: 1 de la somme de tous les NON - erreur détectée mots OUI – pas d’erreurs met la valeur de la somme de contrôle dans le champ détectées. Est-ce qu’il checksum d’UDP peut y avoir des erreurs? Couche Transport 3-19 Exemple de checksum Internet Note quand on additionne des nombres, le reste dans le bit le plus signifiant doit être ajouté au résultat Exemple : addition de deux entiers de 16 bits 1 1 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 1 1 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 ajouter 1 1 0 1 1 1 0 1 1 1 0 1 1 1 0 1 1 somme 1 1 0 1 1 1 0 1 1 1 0 1 1 1 1 0 0 somme de contrôle 1 0 1 0 0 0 1 0 0 0 1 0 0 0 0 1 1 Couche Transport 3-20 Chapitre 3 : la couche transport 1. Les services de la couche transport 2. Multiplexage et démultiplexage 3. Transport sans connexion: UDP 5. Transport orienté connexion: TCP Structure d’un segment TCP Fiabilité de transmission dans TCP Gestion d’une connexion TCP Contrôle de flux dans TCP Contrôle de congestion dans TCP Couche Transport 3-21 TCP: une vue d’ensemble RFCs: 793, 1122, 1323, 2018, 2581 point-à-point: données en duplex: 1 émetteur, 1 récepteur flux de données bidirectionnel fiablité de transmission au sein de la même connexion Checksum MSS (Maximum Segment Size): Retransmission taille maximale du champs de données du segment TCP. flux d’octets reçus dans l’ordre orienté connexion: mécanismes de contrôle de flux échange de messages de et de congestion TCP: contrôle (handshaking) pour Ces mécanismes décident de la initialiser les états de taille de données que transmission et de réception l’émetteur peut envoyer avant l’échange de données (appelée fenêtre) l’émetteur ne submerge pas le récepteur et tient compte de l’état du réseau Couche Transport 3-22 structure d’un segment TCP 32 bits URG: données urgentes compter les (généralement, non utilisé) source port # dest port # données en octets sequence number (pas en segments!) ACK: # ACK valide acknowledgement number head not PSH: pousse les len used UA P R S F Receive window données maintenant # d’octets que checksum Urg data pnter (pas très utilisé) le récepteur RST, SYN, FIN: peut accepter Options (taille variable) étab. de connexion (commandes d’étab. et de libération) Données de l’application somme de contrôle (taille variable) (comme pour UDP) Couche Transport 3-23 # séq. et ACKs dans TCP Numéro de séquence: Hôte A Hôte B le numéro du premier octet dans les données du segment l’utilisateur ACKs: Acquittement saisit‘Bonjour’ Seq=42, ACK=79, # de séq du prochain octet données = ‘Bonjour’ B accuse la attendu de l’autre côté réception ACK cumulatif de‘Bonjour’ l’hôte accuse Seq=79, ACK=49 et envoie la réception de données = ‘Salut’ ‘Salut’ ‘Salut’ Seq=49, ACK=84 Q: comment le récepteur traite les temps segments non ordonnés ? Scénario simple : TCP ne le précise pas : cela dépendra Échange de texte de l’implémentation 3-24 Chapitre 3 : la couche transport 1. Les services de la couche transport 2. Multiplexage et démultiplexage 3. Transport sans connexion: UDP 5. Transport orienté connexion: TCP Structure d’un segment TCP Fiabilité de transmission dans TCP Gestion d’une connexion TCP Contrôle de flux dans TCP Contrôle de congestion dans TCP Couche Transport 3-25 Fiabilité de transmission dans TCP TCP crée un service fiable au dessus d’un service non fiable (le protocole IP) Détection des erreurs Somme de contrôle (Checksum) Acquittement des données reçues sans erreur Acquittement (ACK) Cumulatifs Retransmission des paquets perdus: Les retransmissions sont déclenchées par: Timeout ACKs dupliqués TCP utilise un seul temporisateur de retransmission Couche Transport 3-26 TCP: scénarios de retransmission Hôte A Hôte B Hôte A Hôte B X timeout loss timeout X loss Temps Temps Scénario: un segment est perdu Scénario : un Ack est perdu Couche Transport 3-27 TCP: scénarios de retransmission Hôte A Hôte B Hôte A Hôte B Seq=92 timeout Seq=92, 8 octets(données) Seq=100, 20 octets timeout ACK=100 X ACK=120 Seq=92 timeout Seq=120, 15 octets Scénario : Ack cumulatif Scénario : timeout prématuré 3-28 Retransmission rapide de TCP (TCP Fast Retransmit) Le timeout est souvent relativement long: long délai avant la retransmission d’un paquet perdu Q : Comment détecter plus rapidement les éventuelles pertes? R : On peut détecter les segments perdus via les ACKs dupliqués. L’émetteur envoie souvent plusieurs segments consécutifs À l’arrivée d’un segment qui n’est pas dans l’ordre, le récepteur envoie un ack dupliqué (indiquant le # de séquence du prochain octet attendu (ACK)) si un segment est perdu, il y aura plusieurs ACKs dupliqués. Couche Transport 3-29 Retransmission rapide de TCP (TCP fast retransmit) Hôte A Hôte B TCP fast retransmit Seq=92, 8 octet (données) Si l’émetteur reçoit 3 ACKs Seq=100, 20 octets dupliqués pour les mêmes données, X Seq=120, 15 octets il renvoie le segment non acquitté ayant le plus petit numéro de ACK=100 séquence timeout ACK=100 ACK=100 Probablement, ce segment a été perdu ACK=100 donc ce n’est pas la peine d’attendre Seq=100, 20 octets l’expiration du timeout Renvoi du segment après trois 3-30 ACKs dupliqués Chapitre 3 : la couche transport 1. Les services de la couche transport 2. Multiplexage et démultiplexage 3. Transport sans connexion: UDP 5. Transport orienté connexion: TCP Structure d’un segment TCP Fiabilité de transmission dans TCP Gestion d’une connexion TCP Contrôle de flux dans TCP Contrôle de congestion dans TCP Couche Transport 3-31 Ouverture d’une connexion TCP TCP 3-way handshake client serveur choisit un num de seq x Envoie un message TCP SYN SYNbit=1, Seq=x choisit un num de seq initial y envoie un message TCP SYNACK SYNbit=1, Seq=y ACKbit=1; ACKnum=x+1 SYNACK(x) est reçu indiquant que le serveur est vivant envoie ACK pour SYNACK; Ce segment peut contenir des données ACKbit=1, ACKnum=y+1 La réception de ACK(y) Indique que le client est vivant Couche Transport 3-32 Fermeture d’une connexion TCP client serveur clientSocket.close() Ne peut plus envoyer des FINbit=1, seq=x données mais peut en recevoir ACKbit=1; ACKnum=x+1 peut toujours envoyer attend que le serveur des données ferme la connexion FINbit=1, seq=y ACKbit=1; ACKnum=y+1 Attente Couche Transport 3-33 Chapitre 3 : la couche transport 1. Les services de la couche transport 2. Multiplexage et démultiplexage 3. Transport sans connexion: UDP 5. Transport orienté connexion: TCP Structure d’un segment TCP Fiabilité de transmission dans TCP Gestion d’une connexion TCP Contrôle de flux dans TCP Contrôle de congestion dans TCP Couche Transport 3-34 Contrôle de flux TCP Contrôle de flux Application Adapter le débit de transmission de l’émetteur à la capacité du récepteur. éviter que la mémoire tampon du RcvBuffer Donnée en mémoire récepteur déborde rwnd Mémoire libre Contrôle de flux dans TCP Le récepteur annonce l’espace Données des segments TCP libre en incluant une valeur rwnd dans les segments Mémoire tampon au récepteur L’émetteur limite les données non acquittées à rwnd Couche Transport 3-35 Chapitre 3 : la couche transport 1. Les services de la couche transport 2. Multiplexage et démultiplexage 3. Transport sans connexion: UDP 5. Transport orienté connexion: TCP Structure d’un segment TCP Fiabilité de transmission dans TCP Gestion d’une connexion TCP Contrôle de flux dans TCP Contrôle de congestion dans TCP Couche Transport 3-36 Congestion des réseaux La quantité de paquets transmise dans le réseau dépassent sa capacité Les files d’attente dans les routeurs deviennent surchargées Perte de paquets longs délais (dus aux longues attentes dans les routeurs) Couche Transport 3-37 Contrôle de congestion pour TCP Contrôle de congestion Contrôler la quantité de données envoyée dans le réseau ! c’est différent du contrôle de flux ! Difficulté : Aucune information de la part du réseau la congestion peut être détectée par les hôtes en considérant les pertes et les délais Contrôle de congestion pour TCP : Tester graduellement le réseau: Slow start + Congestion avoidance Réagir aux pertes Couche Transport 3-38 TCP Slow Start Hôte A Hôte B Au début d’une connexion, le débit est augmenté exponentiellement jusqu’à la première perte: RTT Initialement cwnd= 1 MSS cwnd double chaque RTT Équivalent à incrémenter cwnd pour chaque ACK reçu Le débit initial est faible mais augmente exponentiellement temps Fenêtre de congestion (congestion window - cwnd) : C’est le nombre de segments qu’on peut envoyer sans attendre l’acquittement 3-39 TCP : Congestion Avoidance Slow Congestion start Perte de paquets détectée avoidance par timeout Q: quand est ce qu’on passe d’une augmentation exponentielle à une augmentation linéaire (congestion avoidance)? R: quand cwnd atteint le seuil ssthresh Couche Transport 3-40 TCP : Perte de paquets (2 versions) TCP Tahoe : si une perte est détectée retour au slow start TCP Reno : la réaction dépend de la façon avec laquelle la perte a été détectée timeout indique un scénario de congestion alarmantretour au slow start 3 ACKs dupliqués indique que le réseau est capable de livrer quelques segments On réduit le débit et on passe au congestion avoidance Perte de paquets détectée par 3 duplicatas 3-41 Résumé: contrôle de congestion TCP Quand cwnd est inférieur au seuil, l’émetteur est en slow start, la fenêtre augmente exponentiellement (x2 chaque RTT). Quand cwnd atteint le seuil (ssthresh), l’émetteur passe en phase congestion avoidance, la fenêtre augmente linéairement (+1 chaque RTT). Si une perte est détectée par timeout : le seuil est fixé à cwnd/2 et cwnd est remis à 1 MSS. On revient à slow-start. Si une perte est détectée par 3 ACK dupliqués : TCP Tahoe : de même que pour les pertes détectées par timeout TCP Reno : le seuil est fixé à (cwnd/2) ensuite cwnd prend la valeur du seuil+3. L’émetteur passe en phase congestion avoidance et la fenêtre augmente linéairement. Couche Transport 3-42 Questions?