Le protocole TCP TCP (Transmission Control Procedure) est un protocole de transport bout-en-bout (Host-To- Host) Ajoute les fonctions que le réseau ne peut offrir et qui sont demandées par les applications Service de transport fiable TCP 1 Services de TCP 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 TCP 2
0 15 31 Adresse du port source Adresse du port destination Numéro de séquence Long. U d entête Réservée R G Paquet TCP A C K Zone de conrôle d'erreur Numéro d'accusé de (Checksum) réception S Y N P S H R S T F I N Fenêtre coulissante Champ de contrôle des erreurs Options Zone d'urgence Bourrage Données Données TCP 3 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 TCP 4
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 TCP 5 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 La longueur de l'en-tête: En unités de de 32 bits TCP 6
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 TCP 7 Champs du segment TCP La fenêtre coulissante: Crédit donné à l émetteur pour lui permettre d envoyer des octets Controle de flux Zone d urgence: Utilisée pour envoyer des informations express Si le flag URG est à 1 TCP 8
Ouverture de connexion 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 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 TCP 9 Procédure de connexion Diagramme d états (Machine à états finis) de la procédure de connexion: Serveur CLOSED CONNECT/SYN LISTEN/- CLOSE/- SYN/SYN+ACK LISTEN SYN REC. RST/- SEND/SYN SYN SENT SYN/SYN+ACK ACK/- ESTAB. SYN+ACK/ACK Client TCP 10
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 flux: 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) TCP 11 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 TCP 12
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 = 306 (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 TCP 13 Contrôle de flux 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) TCP 14
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) TCP 15 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 0 3 6 9 12 15 20 22 25 Slow start Évitement de la congestion TCP 16
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 TCP 17 Fermeture de la connexion Le diagramme d états de la procédure de fermeture de la connexion: Serveur CLOSE/FIN (Active CLOSE) ESTAB. FIN/ACK (Passive CLOSE) FIN WAIT 1 FIN/ACK ESTAB. CLOSE WAIT. FIN+ACK/ACK ACK/- ACK/- CLOSE/FIN FIN WAIT 2 FIN/ACK TIMED WAIT. LAST ACK. CLOSED. Timeout/- ACK/- Client TCP 18
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 TCP 19 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 TCP 20
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 : DNS, TFTP, NFS, SNMP, TCP 21 Paquet UDP 0 15 31 Numéro de port source Longueur Numéro de port destination Checksum Données TCP 22