Protocoles de transport TCP et UDP
Transcription
Protocoles de transport TCP et UDP
Le protocole TCP z z z TCP (Transmission Control Procedure) est un protocole de transport bout-en-bout (Host-ToHost) Ajoute les fonctions que le réseau ne peut offrir et qui sont demandées par les applications Service de transport fiable A. Obaid © - Programmation des réseaux TCP 1 Services de TCP z z z z z z Transport fiable et ordonné des données Gestion de la connexion Adressage au niveau Transport Reprises sur erreurs Contrôle de flux Contrôle de la congestion A. Obaid © - Programmation des réseaux TCP 2 1 1 Paquet TCP 31 15 0 Adresse du port source Adresse du port destination Numéro de séquence Zone de conrôle d'erreur Numéro d'accusé de(Checksum) réception Long. d ’entête Réservée U A S P R F R C Y S S I G K N H T N Fenêtre coulissante Champ de contrôle des erreurs Zone d'urgence Options Bourrage Données Données TCP 3 A. Obaid © - Programmation des réseaux Les ports z Les ports correspondent aux points d'accès de service associés aux applications z TCP désigne une application par son numéro de port Port B A TCP IP A. Obaid © - Programmation des réseaux Application Transport A B TCP IP TCP 4 2 2 Les numéros de ports z Les services Internet ont leurs ports associés: 20 21 23 25 53 88 FTP-DATA FTP-Control Telnet SNMP DOMAIN HTTP … File Transfer Protocol (Data) File Transfer Protocol (Control) Telnet Simple Mail Transfer Proocol Domain Name System Hyper Text Transfer Protocol – Voir le fichier /etc/services z D'autres ports peuvent être: – définis par les développeurs d'applications – donnés automatiquement par le noyau A. Obaid © - Programmation des réseaux TCP 5 Champs du segment TCP z z z 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 La longueur de l'en-tête: En unités de de 32 bits A. Obaid © - Programmation des réseaux TCP 6 3 3 Champs du segment TCP z 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 © - Programmation des réseaux TCP 7 Champs du segment TCP z La fenêtre coulissante: – Crédit donné à l’émetteur pour lui permettre d’envoyer des octets – Controle de flux z Zone d’urgence: – Utilisée pour envoyer des informations express – Si le flag URG est à 1 A. Obaid © - Programmation des réseaux TCP 8 4 4 Ouverture de connexion z z z La connexion se fait en trois phases: Threeway handshake. Connexion full-duplex Chaque entité génère aléatoirement son numéro de séquence initial (ISN) TCP A Active open (CONNECT) TCP B Passive open (LISTEN, ACCEPT) SYN, -,Seq=ISNA,-, SYN, ACK, Seq=ISNB, Acq=ISNA+1 SYN, ACK, Seq=ISNA+1, Acq=ISNB+1 TCP 9 A. Obaid © - Programmation des réseaux Procédure de connexion z Diagramme d’états (Machine à états finis) de la procédure de connexion: Serveur CLOSED LISTEN/SYN/SYN+ACK SYN REC. CONNECT/SYN CLOSE/- LISTEN SEND/SYN RST/- SYN SENT SYN/SYN+ACK ACK/- A. Obaid © - Programmation des réseaux ESTAB. SYN+ACK/ACK Client TCP 10 5 5 Transfert des données z Séquencement: – Les données sont transmises dans les paquets sous forme d'une série d'octets (Streams) z Contrôle de flux: – Crédit donné dans le champ Fenêtre coulissante (WIN) z 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 © - Programmation des réseaux TCP 11 Procédure de retransmission z z z 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,… ) z D'autres méthodes plus précises de mesure du RTO existent A. Obaid © - Programmation des réseaux TCP 12 6 6 Contrôle d'erreurs et retransmission Seq = 3 (300 octets) Seq = 3 (300 octets) Acq = 303 Seq = 303 (300 octets) Acq = 303 Acq = 303 Seq = 303 (300 octets) Erreur SEQ = 603 (603 octets) Acq = 303 Seq = 303 (300 octets) Seq = 303 (300 octets) Seq = 306 (300 octets) RTO dépassé Acq = 903 Seq = 306 (300 octets) Acq = 903 TCP 13 A. Obaid © - Programmation des réseaux Contrôle de flux z L ’émetteur attend que le récepteur lui donne 4K des crédits (dans le champ WIN). 0 write(…,2K) Buffer de réception Seq = 0 (2K octets) 0 2K 4K Acq = 2048 WIN=2048 write(…,3K) Seq = 2048 (2K octets) 4K 0 Acq = 4096, WIN=0 Émetteur attend read(…,2K) Acq=4096, WIN=2048 Seq = 4096 (1K octets) 0 2K 0 1K 2K A. Obaid © - Programmation des réseaux 4K 4K TCP 14 7 7 Contrôle de la congestion z z z z 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) TCP 15 A. Obaid © - Programmation des réseaux Contrôle de la congestion 25 (segments) Taille de CWind Cwind = 20 20 Arrivée de timeout 15 10 ssthresh = 10 ssthresh = 8 5 RTT Slow start 25 22 20 15 12 9 6 3 0 0 Évitement de la congestion A. Obaid © - Programmation des réseaux TCP 16 8 8 Fermeture de la connexion z z 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 Données FIN FIN, ACK CLOSED CLOSED TCP 17 A. Obaid © - Programmation des réseaux Fermeture de la connexion z Le diagramme d’états de la procédure de fermeture de la connexion: Serveur CLOSE/FIN FIN/ACK (Active CLOSE) FIN WAIT 1 ACK/FIN WAIT 2 ESTAB. FIN/ACK ESTAB. FIN+ACK/ACK FIN/ACK (Passive CLOSE) ACK/- TIMED WAIT. Timeout/CLOSED. A. Obaid © - Programmation des réseaux CLOSE WAIT. CLOSE/FIN LAST ACK. ACK/Client TCP 18 9 9 Les options de TCP z 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 TCP 19 A. Obaid © - Programmation des réseaux Structure des options TCP z z Chaque option contient les champs Genre (Kind), Longueur et données de l'option Exemples: MSS et Timestamp: kind=2 1 octet long=2 1 kind=8 long=10 1 octet 1 A. Obaid © - Programmation des réseaux MSS 2 Timestamp 4 Timestamp retour 4 TCP 20 10 10 Le protocole UDP z Le protocole UDP offre un service de transport en datagramme (sans connexion): – Peu de surcharge – Pas de détection des erreurs ni des duplications z z z 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 : – DNS, TFTP, NFS, SNMP,… TCP 21 A. Obaid © - Programmation des réseaux Paquet UDP 15 0 Numéro de port source 31 Numéro de port destination Longueur Checksum Données A. Obaid © - Programmation des réseaux TCP 22 11 11