cours ENSIB - Enseignement
Transcription
cours ENSIB - Enseignement
Christian Toinard - ENSI Bourges 1ère année filière STI Programmation réseaux Seconde Partie Christian Toinard Cours ENSI Bourges 1ière année filière Sécurité et Technologies Informatiques Programmation réseaux 1 Seconde Partie Christian Toinard - ENSI Bourges 1ère année filière STI NIVEAU TRANSPORT : Transmission Control Protocol Programmation réseaux 2 Seconde Partie Christian Toinard - ENSI Bourges 1ère année filière STI Principe RFC 793 • Service de transmission de bout en bout (un bout est une entité d'application qui s'exécute au sein d'un processus système) entre deux stations • Mode connecté : ouverture et fermeture d'un circuit virtuel (aucune trace sur le réseau IP du circuit… la connaissance du circuit est local à chacune des stations) • Détecte les altérations : utilisation d'un code détecteur d'erreur Fiabilité : détecte et récupère les pertes, les duplications et les déséquencements grâce à la seule technique possible (numérotation, acquittement et retransmission sur délai) ! Maximise le débit utile (utilisation d'une fenêtre • d'anticipation en émission et d'une fenêtre de réception, acquittement porté par les segments de donnée) Contrôle de flux du récepteur (crédit d'anticipation) • • • • • • • • Contrôle de congestion du réseau : gestion de la taille de la fenêtre d'émission (appelée fenêtre de congestion) par l'émetteur (slow start : augmentation de la fenêtre avec les acquits; congestion avoidance : l'augmentation se fait moins vite) Full duplex (transmission simultanée dans les deux sens) Transmission point à point uniquement Multiplexage par rapport aux numéros de port Flot d'octets (ne préserve pas la limite des messages) Envoie de données urgentes Programmation réseaux 3 Seconde Partie Christian Toinard - ENSI Bourges 1ère année filière STI Transmission des segments TCP • Echange des données avec les couches supérieures comme une suite d'octets (émission et réception) • Découpe la suite d'octets en segments o Taille maximum 64K octets o Dépend de l'interface de l'émetteur • Un segment est contenu dans un datagramme IP • Des segments typés sont échangés pour: o Etablir la connexion (SYN, SYN, ACK) o Envoyer des données (PUSH) o Envoyer des acquittements (ACK) o Gérer le contrôle de flux (ACK avec Windows Size) o Gérer la congestion (duplication ACK, CWR et ECN-E) o Terminer ou avorter la connexion (FIN, RST) Programmation réseaux 4 Seconde Partie Christian Toinard - ENSI Bourges 1ère année filière STI Notion de connexion TCP Les protocoles de transport de l'Internet utilise la notion d’extrémité : [adresse IP, N°Port] Une extrémité doit être considérée comme un "numéro de téléphone" (normalement, une seule entité utilise un numéro). • une paire d’extrémités définit une connexion TCP: [@IPA,PortA] [@IPB,PortB] • Attention : une même extrémité peut servir deux connexions qui mettent en jeu des machines différentes : [192.168.1.1,1184] [192.168.2.3, 80] [192.168.3.32,1184] Programmation réseaux 5 Seconde Partie Christian Toinard - ENSI Bourges 1ère année filière STI Format segment TCP (1) Programmation réseaux 6 Seconde Partie Christian Toinard - ENSI Bourges 1ère année filière STI Format segment TCP (2) Port source et destination : numéro de port sur 16 bits pouvant être défini statiquement ou alloué dynamiquement par chaque entité (plage statique de 0 à 32768, plage dynamique 32768 à 65535). Numéro de séquence: donne le numéro du premier octet des données transportée dans le segment dans le flot des octets émis (chaque octet porte un numéro allant de 0 à 232-1). Lorsqu'un segment SYN est émis ce numéro correspond au numéro de séquence initial (ISN). Le premier octet porte le numéro ISN+1 car le SYN consomme un numéro. Un segment ne contenant qu'un acquittement ne consomme pas de numéro de séquence. Chaque segment porte un numéro d'acquittement qui correspond au prochain octet attendu (acquittement groupé de tout ce qui précède). TCP n'utilise que les acquittements positifs (pas d'acquittement négatifs) groupés ou sélectifs. Longueur d'entête (offset): donne la longueur en nombre de mots de 32 bits. Une entête varie de 20 à 60 octets (options). Bit ECN-Echo: le récepteur demande à l'émetteur de réduire sa fenêtre de congestion de moitié. Bit CWR: l'émetteur réduit sa fenêtre de moitié. Programmation réseaux 7 Seconde Partie Christian Toinard - ENSI Bourges 1ère année filière STI Format segment TCP (3) Bit Urgent Pointer: le champ donnée urgente est valide c'est-à-dire contient effectivement une valeur. Bit ACK: le segment contient une valeur d'acquittement (tout segment contient une valeur d'acquittement sauf la demande de connexion SYN et l'avortement RST). Bit PUSH: le segment contient une donnée à passer à l'entité d'application réceptrice. Bit RST: la connexion est rompue de façon anormale inutilisé, panne, etc…). (port Bit SYN: le segment est une demande de connexion ou une acceptation de connexion (bit ACK en plus). Bit FIN: le segment est une indiquation de terminaison d'émission. Une connexion est rompue lorsque les deux sens d'émissions sont terminés. Fenêtre: donne la taille du crédit d'émission qui correspond à la place disponible chez le récepteur. Checksum: code permet de détecter une erreur sur l'entête TCP et les données. Programmation réseaux 8 Seconde Partie Christian Toinard - ENSI Bourges 1ère année filière STI Format segment TCP (4) Urgent Pointer: donne la position du dernier octet de la donnée urgente qui est contenue dans les données (c'est un déplacement à ajouter au numéro de séquence du segment). Options: Maximum Segment Size: permet à l'émetteur d'un SYN d'annoncer la quantité maximum de données qu'il est prêt à recevoir. Window Scale: normalement la taille de la fenêtre de crédit ne peut exéder 65535 car elle est sur 16 bits. Pour des lignes à très haut débit (>45Mbits/s) ou des lignes satellite permet de décaler à gauche les 16 bits (autorise une taille de fenêtre de 65535x214 soit un gigabyte). Timestamp: lorsque l'option windows size est présente, il est nécessaire d'ajouter un entier de 32 bits à chaque segment (évite les erreurs dûes au paquets perdus qui réapparaissent). Selective Acq: permet de donner les numéros de séquence du début et de la fin d'un bloc contigü de données correctement reçues mais hors séquence. Programmation réseaux 9 Seconde Partie Christian Toinard - ENSI Bourges 1ère année filière STI Ouverture et Fermeture de Connexion Ouverture de connexion Site 1 Site 2 E met: SYN, seq=x, winn x tiré aléatoirement (n° d'octet) Reçoit SYN E met SYN, seq=y, ACK, ack=x+1 y tiré aléatoirement (n° d'octet) Reçoit SYN + ACK E met ACK, ack=y+1 Reçoit ACK t Site 1 t Fermeture deconnexion Site 2 E met: FIN, seq=x Reçoit FIN Emet ACK, ack=x+1 (avertit l'application) Reçoit ACK E met FIN, ACK, ack=x+1 Reçoit FIN, ACK E met ACK, ack=y+1 Reçoit ACK t t Programmation réseaux 1 0 Seconde Partie Christian Toinard - ENSI Bourges 1ère année filière STI Transfert de données Transfert de données Site 2 Site 1 Emet: PUSH+ACK, seq=x,ack=y+1 Emet: PUSH+ACK, seq=x',ack=y+1 Emet: PUSH+ACK, seq=x'',ack=y+1 Emet: ACK, ack=x''+1 Emet: PUSH+ACK, seq=y+1,ack=x''+1 t t Programmation réseaux 1 1 Seconde Partie Christian Toinard - ENSI Bourges 1ère année filière STI Diagramme d'état TCP Programmation réseaux 1 2 Seconde Partie Christian Toinard - ENSI Bourges 1ère année filière STI Diagramme temporel de transmission TCP Programmation réseaux 1 3 Seconde Partie