Couche Transport Assure la transmission des messages entre deux applications sur des stations distantes. Le protocole de transport est un protocole bout-en-bout (Host- To-Host Protocol). A. Obaid - Téléinformatique (INF3270) La couche Transport 1 Le protocole TCP TCP (Transmission Control Procedure) est un protocole de transport. Ajoute les fonctions que le protocole IP ne peut offrir et qui sont demandées par les applications Assure une transmission fiable de données des applications A. Obaid - Téléinformatique (INF3270) La couche Transport 2 1 1
Services de TCP Transport fiable et ordonné des données Gestion de la connexion: Service orienté connexion Adressage au niveau Transport Reprises sur erreurs Contrôle de flux Contrôle de la congestion A. Obaid - Téléinformatique (INF3270) La couche Transport 3 Paquet TCP 0 15 31 Long. d entête Adresse du port source Réservée U R G Numéro de séquence Adresse du port destination Zone de conrôle d'erreur Numéro d'accusé de (Checksum) réception A P C S K H R S T S Y N F I N Fenêtre coulissante Champ de contrôle des erreurs Options Zone d'urgence Bourrage Données Données A. Obaid - Téléinformatique (INF3270) La couche Transport 4 2 2
Les ports Les ports correspondent aux points d'accès de service associés aux applications TCP désigne une application par son numéro de port Port A B A B Application TCP IP Transport TCP IP A. Obaid - Téléinformatique (INF3270) La couche Transport 5 Les numéros de ports Les services Internet ont leurs ports associés: 20 FTP-DATA File Transfer Protocol (Data) 21 FTP-Control File Transfer Protocol (Control) 23 Telnet Telnet 25 SNMP Simple Mail Transfer Proocol 53 DOMAIN Domain Name System 88 HTTP Hyper Text Transfer Protocol Voir le fichier /etc/services D'autres ports peuvent être: définis par les développeurs d'applications donnés automatiquement par le noyau A. Obaid - Téléinformatique (INF3270) La couche Transport 6 3 3
Champs du segment TCP Numéro de séquence: Numéro du premier octet du segment Numéro d'accusé de réception Numéro du prochain octet a recevoir Piggybacking La longueur de l'en-tête enn unités de de 32 bits A. Obaid - Téléinformatique (INF3270) La couche Transport 7 Champs du segment TCP Les flags (un bit chacun): URG: Indique la présence de données urgentes dans le paquet ACK: Acquittement pour les phases d'ouverture et de fermeture de la connexion SYN: Demande d ouverture de connexion PSH : Soumet les données directement à l'application RST : Re-initialise la connexion FIN : Demande de fermeture de la connexion A. Obaid - Téléinformatique (INF3270) La couche Transport 8 4 4
Champs du segment TCP La fenêtre coulissante: Crédit donné à l émetteur pour lui permettre d envoyer des octets Contrôle de flot Zone d urgence: Utilisée pour envoyer des informations express Si le flag URG est à 1 Données vs signalisation A. Obaid - Téléinformatique (INF3270) La couche Transport 9 Ouverture de connexion La connexion se fait en trois phases: Three-way handshake. Connexion full-duplex Chaque entité génère aléatoirement son numéro de séquence initial (ISN) TCP A TCP B Active open (CONNECT) SYN, -,Seq=ISNA,-, SYN, ACK, Seq=ISNB, Acq=ISNA+1 Passive open (LISTEN, ACCEPT) SYN, ACK, Seq=ISNA+1, Acq=ISNB+1 A. Obaid - Téléinformatique (INF3270) La couche Transport 10 5 5
Procédure de connexion Diagramme d états (Machine à états finis) de la procédure de connexion: A. Obaid - Téléinformatique (INF3270) La couche Transport 11 Procédure de connexion A. Obaid - Téléinformatique (INF3270) La couche Transport 12 6 6
Transfert des données Séquencement: Les données sont transmises dans les paquets sous forme d'une série d'octets (Streams) Contrôle de flot: Crédit donné dans le champ Fenêtre coulissante (WIN) Détection d'erreurs et retransmission: Retransmission après Timeout (Retransmission Timeout ou RTO) Méthode Go-Back n Possibilité de faire des retransmissions sélectifs: Option SACK (Selective Ack) A. Obaid - Téléinformatique (INF3270) La couche Transport 13 Procédure de retransmission On determine le temps de retransmission (RTO) de maniere adaptative On mesure le temps d'aller-retour (RTT) On ajuste le RTT en utilisant une moyenne: RTT = α RTT + (1- α )RTT_mesuré ( 0 <= α <= 1) RTO = β RTT ( β=2, ) D'autres méthodes plus précises de mesure du RTO existent A. Obaid - Téléinformatique (INF3270) La couche Transport 14 7 7
Contrôle d'erreurs et retransmission Seq = 3 (300 octets) Acq = 303 Seq = 303 (300 octets) Acq = 303 SEQ = 603 (603 octets) Acq = 303 Seq = 303 (300 octets) Seq = 603 (300 octets) Acq = 903 Erreur RTO dépassé Seq = 3 (300 octets) Acq = 303 Seq = 303 (300 octets) Seq = 303 (300 octets) Seq = 306 (300 octets) Acq = 903 A. Obaid - Téléinformatique (INF3270) La couche Transport 15 Contrôle de flot L émetteur attend que le récepteur lui donne des crédits (dans le champ WIN). 0 4K write(,2k) write(,3k) Émetteur attend Seq = 0 (2K octets) Acq = 2048 WIN=2048 Seq = 2048 (2K octets) Acq = 4096, WIN=0 Acq=4096, WIN=2048 Seq = 4096 (1K octets) Buffer de réception 0 2K 4K 0 4K 0 2K 4K 0 1K 2K 4K read(,2k) A. Obaid - Téléinformatique (INF3270) La couche Transport 16 8 8
Contrôle de la congestion IP n'effectue pas de contrôle de la congestion ICMP donne des feedback sur le réseau tout entier Les entités TCP doivent adapter leur flux à l'état du réseau Utilisation par l'émetteur des procédures: Démarrage lent (Slow Start) Évitement de la congestion Basées sur une fenêtre adaptative de congestion (CWind) et un seuil de Slow Start (ssthresh) A. Obaid - Téléinformatique (INF3270) La couche Transport 17 Contrôle de la congestion Taille de CWind (segments) 25 20 15 10 5 ssthresh = 8 Cwind = 20 Arrivée de timeout ssthresh = 10 0 RTT Slow start Évitement de la congestion A. Obaid - Téléinformatique (INF3270) La couche Transport 18 9 9
Fermeture de la connexion La connexion se fait en deux temps. Chaque côté doit fermer sa moitié de la connexion Les données en transit doivent être traitées CLOSE FIN, Seq=X FIN, ACK, Acq=X+1 CLOSING CLOSED Données FIN FIN, ACK CLOSED A. Obaid - Téléinformatique (INF3270) La couche Transport 19 Fermeture de la connexion A. Obaid - Téléinformatique (INF3270) La couche Transport 20 10 10
Les options de TCP Les options les plus courantes sont: Timestamp: Valeur de l'horloge de l'émetteur. Utilisée pour calculer le RTT Maximum Segment Size (MSS): Taille maximale de paquet TCP No Operation: pour alignement sur 32 bits. Window Scale Factor: pour étendre la fenêtre coulissante à 32 bits SACK: Usage des acquittements sélectifs Fin de la liste d'options A. Obaid - Téléinformatique (INF3270) La couche Transport 21 Structure des options TCP Chaque option contient les champs Genre (Kind), Longueur et données de l'option Exemples: MSS et Timestamp: kind=2 long=2 MSS 1 octet 1 2 kind=8 long=10 Timestamp Timestamp retour 1 octet 1 4 4 A. Obaid - Téléinformatique (INF3270) La couche Transport 22 11 11
Le protocole UDP Le protocole UDP offre un service de transport en datagramme (sans connexion): Peu de surcharge Pas de détection des erreurs ni des duplications Protocole performant mais non fiable. Utilisé pour les applications en temps réel et/ou multicast (avec des outils supplémentaires) Les applications qui ne demandent pas de fiabilité utilisent UDP : Exemples: DNS, TFTP, NFS, SNMP, A. Obaid - Téléinformatique (INF3270) La couche Transport 23 Paquet UDP 0 15 31 Numéro de port source Longueur Numéro de port destination Checksum Données A. Obaid - Téléinformatique (INF3270) La couche Transport 24 12 12