Professional Documents
Culture Documents
Le protocole TCP
cb
PLAN
Prsentation Les segments TCP Le multiplexage La fentre coulissante La connexion Les donnes urgentes Les options Conclusion
1. Prsentation
"Transmission control protocol" . Rfc 793 . Septembre 1981 Transmission de donnes : . Par paquets de tailles variables . En mode connect (3 phases) : - Etablissement de la connexion - Transfert de donnes - Libration de la connexion . Bidirectionnelle . Flux non structur de donnes suite d'octets ("Stream") . Fiable - contrle et rcupration des erreurs - contrle de flux et de congestion - contrle de la duplication - resquencement
Source port
En mots de 32 bits. Une entte : . une partie de taille fixe, . une partie de taille variable (les options). Un champ de donnes : . de longueur variable. Une connexion <-> double couple : <adresse IP, numro de port> du rcepteur + <adresse IP, numro de port> de l'metteur.
Partie fixe
Sequence number Acknowledgment number HLEN 0 Code Window size Urgent pointer TCP options
Entte
Checksum
Partie variable
Champ de donnes
TCP data
2.2. Lentte
0 34 9 10 15 16 Destination port 31 bits
Source port
Sequence number Acknowledgment number HLEN 0 Code Window size Urgent pointer TCP options
HLEN ("header length") 4 bits : - Longueur de l'entte en mots de 4 octets (quivalent IP). - Dplacement du dbut du champ de donnes par rapport au dbut du segment.
Checksum
34
9 10
15 16 Destination port
31 bits
Source port
Sequence number Acknowledgment number HLEN 0 Code Window size Urgent pointer TCP options
Checksum
"Piggy backing" : La connexion tant bidirectionnelle, chaque sens de transmission transmet ses propres donnes et simultanment les commandes relatives l'autre sens
A
Emetteur
Commandes
un sens
B
Rcepteur Emetteur
Donnes Donnes
TCP data
Rcepteur
l'autre sens
Commandes
Source port
URG
ACK PSH
SYN
RST
Sequence number Acknowledgment number HLEN 0 Code Window size Urgent pointer TCP options
Checksum
. Acknowledgment bit
valide le champ Acknowledgment number
Padding
. Push bit
livraison immdiate du segment
TCP data
. Reset bit
rinitialisation de la connexion
. Synchronise bit
demande d'ouverture de la connexion
. Final bit
demande de libration de la connexion
FIN
3. Le multiplexage
34
9 10
15 16 Destination port
31 bits
Source port
Sequence number Acknowledgment number HLEN 0 Code Window size Urgent pointer TCP options
Source port et destination port : . identique UDP . identifie la connexion : <@IP source + n port source, @IP destination +n port destination> Multiplexage 3 types de n de port : . n rservs (n1024), - attribus des services gnraux spcifiques - dure de vie infinie . n rservs localement - choisis pour une application - dure de vie de l'application . n attribus dynamiquement, - choisis par le systme parmi les n libres, - dure de vie de la connexion
Checksum
TCP data
4. La fentre coulissante
4.1. Les champs
34
9 10
15 16 Destination port
31 bits
Source port
Sequence number Acknowledgment number HLEN 0 Code Window size Urgent pointer TCP options
Sequence number : . Numro de premier octet du champ de donnes dans le flux d'octets transmis (modulo 2 32). 32 . Initialement la valeur du champ est quelconque! Acknowledgment number : . Numro du prochain octet recevoir. . Acquitte tous les octets de numro infrieur. Window size : . Nombre d'octets pouvant tre envoys par anticipation. . Capacit de stockage du rcepteur. . W= 0 contrle de flux
Checksum
TCP data
4.2. Le mcanisme Appel Sliding Window. Mcanisme permettant la fois : - Le contrle de flux et de congestion. - Le contrle des pertes, duplication, dsquencialit. - La rcupration des erreurs par retransmission. - L'optimisation de l'utilisation de la connexion par l'envoi anticip de paquets (avant que les octets des paquets prcdents soient acquitts). Bas sur l'identification des octets (OSI : des paquets !) : 32 leur numrotation (modulo 2 ).
102 104 106 108 110 112 114 116 118 120 122
flux d'octets
envoys acquitts
4.3.
Contrle derreur
0 34 9 10 15 16 Destination port 31 bits
Source port
Sequence number Acknowledgment number HLEN 0 Code Window size Urgent pointer TCP options
Checksum
Checksum : . Champ de dtection d'erreur. . Procd de calcul strictement identique au mme champ de protocole UDP : - somme de demi-mots de 16bits - en complment un . Peut-tre inutilis (=0). . Les segments TCP errons sont dtruits. La rcupration des erreurs s'appuie sur un mcanisme de retransmission : . un temporisateur arm lors de l'mission de chaque segment TCP, . chaque segment est numrot : Sliding window.
TCP data
10
4.4. Acquittements
Emission d'un message de 1024 octets puis d'un message de 2048 octets par segments de 500 octets maximum, l'espace de stockage est de 8192 octets
Emetteur des donnes Rcepteur des donnes
<1020, 8192>
<1020, 500>
premier message envoi anticip Donnes : <sequence_number, explicit_data_segment_length, PSH> Acquittement : <acknowledgment_number, window_size> perte de l'acquittement deuxime message
<1520, 500>
<1520, 8192-500> -500> <2020, 24,PSH<2020, 8192-500 > <2044, 8192-1024> <2044, 8192>
vidage buffer
<2044, 500> <2544, 500> <3044, 500> <3544, 500> <4044, 48,PSH> <4092, 8192-2048>
<4092, 8192>
Temps
<2544, 8192-500>
vidage buffer
Les acquittements sont cumulatifs : ils acquittent tous les octets prcdents. . Nul n'est besoin d'envoyer systmatiquement un acquittement inconvnient : une vision moins prcise de l'tat de la connexion . La perte d'un acquittement ne ncessite pas forcment une rmission.
____ Bernard Cousin- IFSIC -Universit Rennes I 11
4.5. Contrle de flux Au rcepteur : . Nombre d'octets pouvant tre stocks par le rcepteur. . Contrl par la largeur de la fentre (window size) : - nombre maximum d'octets pouvant tre mis sans acquittement par l'metteur. Espace de stockage du rcepteur presque plein diminution de la largeur de la fentre ( 0), Espace de stockage du rcepteur presque vide augmentation de la largeur de la fentre.
Emetteur des donnes Rcepteur des donnes
Emission dun message de 5000 octets, Espace de stockage disponible au rcepteur = 1024 octets L'espace diminue
<1020, 500>
<1020, 1024>
Plus de place !
...
<2044, 500> <2544, 500> <3044, 24>
Espace libr !
...
Temps
...
12
4.6. Gestion des erreurs Dtection des pertes : l'metteur, par temporisateur moins efficace (mais plus sr) que par acquittement explicite (ngatif) en
provenance du rcepteur.
Les segments corrompus sont dtruits, cela se traduit par des pertes ! Le mcanisme normal de contrle des erreurs permet leur retransmission.
Emetteur des donnes Rcepteur des donnes <2044, 500> armement Temporisateur <2544, 500> <2544, 8192> armement Perte d'un segment ! dsarmement <3044, 500>
Temporisateur
dclenchement
Retransmissions
13
4.7. Congestion du rseau Contrle de congestion = Contrle de flux des routeurs Dtection de congestion (potentielle) . perte d'un segment : - non-rception d'un ou plusieurs segments situs entre deux segments reus. - aprs un certain temps d'attente (resquencement). Contrle de la congestion ( lmetteur) . la largeur de la fentre est divise par deux chaque dtection de perte . la largeur de la fentre est incrmente chaque acquittement reu Convergence du mcanisme : . diminution exponentielle / accroissement proportionnel !
14
4.8. Conclusion Le mcanisme de la fentre coulissante rend de nombreuses services : protection contre les erreurs, contrle de congestion, contrle de ux, maintien de la squentialit, contrle de la duplication, tout en assurant une trimassions optimale. Il existe deux fentres indpendantes : une pour chaque sens de transmission des donnes. Pour chacune des deux fentres, chaque partenaire possde une copie de chaque variable permettant de grer localement cette fentre. On le trouve dans de trs nombreux autres protocoles : HDLC, X25, TP
15
5. La connexion
5.1. Ltablissement de la connexion Etablissement de la connexion : . par triple change ("three-way handshake"), . initialisation du numro de squence initial, . acceptation/refus de l'tablissement, . double tablissement simultan possible, . on distingue trois types de segments grce aux bits "Syn", "Ack" du champ Code, . contrle par temporisateur. A
<Syn, seq=x >
"Active open"
ck, ack=x+1> <Syn, seq=y, A <Ack, ack=y +1> <Data, x+1,...> Temps <Data,y+1,...>
"Passive open"
16
5.2. La dconnexion
Libration de la connexion : . dans chaque sens indpendamment, . 2 doubles changes (2 two-way handshakes), . utilise deux types de segments identifis par les bits "Fin" et "Ack" du champ Code. A
<Data, x,...> <Data,y,...> <Fin, seq=x >
<Ack, ack=x+
<Data,y,...>
1>
<Fin, seq
<Ack, ack=y +1>
=y>
Temps
17
closed passive open / close/ active open/Syn listen /Reset /Syn Syn/Ack Ack/ Syn close/ sent timeout/Reset
Syn/Syn+Ack Syn received close/Fin close/Fin Fin wait1 Ack/ Fin/Ack closing Fin+Ack/Ack Ack/
ouverture de la connexion
fermeture de la connexion
timed wait
gel de la connexion
Note : Les protocoles IP et UDP n'ont pas besoin d'un automate pour dcrire leur comportement.
____ Bernard Cousin- IFSIC -Universit Rennes I 18
Sequence number Acknowledgment number HLEN 0 Code Window size Urgent pointer TCP options
Urgent pointer : donnes transmises hors du contrle de flux. Permet de transmettre des donnes sans retard, qui doivent tre traites de manire urgente.
Par exemple : commande d'interruption de traitement en cours ou "abort".
Checksum
Le champ "urgent pointer" indique la fin de la partie urgente du segment qui commence au dbut du champ de donnes du segment. Le champ "urgent pointer" est valid par le bit "urgent" du champ code. Limit par dfaut un seul octet !
19
7. Les options
7.1. Le format gnral des options
0 34 9 10 15 16 Destination port 31 bits
Source port
La partie variable de lentte : - Liste doptions - Sa taille est dtermine grce au champ HLEN en lui soustrayant la taille de la partie fixe - Format de chaque option de la liste : TLV . type of option (1 octet), length of value (1octet), value - Format similaire IP.
Sequence number Acknowledgment number HLEN 0 Code Window size Urgent pointer TCP options
Checksum
- Afin de raliser lalignement sur les mots de 32 bits, un bourrage (padding) peut tre ncessaire
20
7.2. Quelques options End of option list [0]: permet la partie variable de l'entte de se terminer en frontire de mot (idem IP). Un seul octet. No Operation[1] : alignement de la n dune seule option (idem IP). Un seul octet. MSS option[2] : "Maximum segment size" . Permet de ngocier la taille maximum des segments envoys. . . . Grand segment surcot de traitement (d la fragmentation). Segment de taille adapt minimise le dlai dacheminement MSS_par_dfaut = 536 octets. C'est dire MTU_par_dfaut - IP_header_length -TCP_header_length
= 576 - 20 - 20.
. Exemple : 0x02.04.0400 MSS_option =1024 octets. Window scale factor[3] : <code=3, longueur=3, shift value> . Augmente la capacit de la fentre . La capacit de la fentre limite la dbit . Exemple : 0x03.03.01 la largeur de la fentre doit tre multiplie par 2. . RFC 1323 Timestamp option[8] : <code=8, longueur=10, timestamp, timestamp reply> . contrle du dlai dacheminement
____ Bernard Cousin- IFSIC -Universit Rennes I 21
8. Conclusion
Protocole offrant un service volu assurant une transmission : . de bonne qualit, . en mode connect, . d'une suite d'octets, . avec un service de multiplexage. Bas sur le mcanisme de la fentre coulissante. Permettant la fois . une utilisation optimale de la liaison sous-jacente (physique) et . la protection contre les erreurs (dtection + correction), . le contrle des duplications, des pertes, de la squentialit, . le contrle de flux et de congestion. Protocole aux mcanismes complexes entranant un certain surcot tant au niveau des traitements que pour les enttes des segments. Ses performances sont toutefois trs correctes, car optimises. Adaptation de TCP : TCP extensions for high performance - rfc 1323.
22