Vous êtes sur la page 1sur 22

s Transmission Control Protocol s

Le protocole TCP
cb

(/home/kouna/d01/adp/bcousin/Fute/Cours/Internet/04-TCP.fm- 18 Septembre 1998 09:25)

PLAN

Prsentation Les segments TCP Le multiplexage La fentre coulissante La connexion Les donnes urgentes Les options Conclusion

____ Bernard Cousin- IFSIC -Universit Rennes I

s Transmission Control Protocol s

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

____ Bernard Cousin- IFSIC -Universit Rennes I

s Transmission Control Protocol s

2. Les segments TCP


2.1. Le format gnral
0 34 9 10 15 16 Destination port 31 bits

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

par exemple : <131.254.31.8, 2345>+<131.254.11.26, 20>

____ Bernard Cousin- IFSIC -Universit Rennes I

s Transmission Control Protocol s

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

Padding TCP data

____ Bernard Cousin- IFSIC -Universit Rennes I

s Transmission Control Protocol s

2.3. Le piggy backing

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

____ Bernard Cousin- IFSIC -Universit Rennes I

s Transmission Control Protocol s

2.4. Les diffrents rles des segments


0 34 9 10 15 16 Destination port 31 bits

Source port

URG

ACK PSH

SYN

RST

Sequence number Acknowledgment number HLEN 0 Code Window size Urgent pointer TCP options

Checksum

Code (6 bits) : . Urgent bit


valide le champ "Urgent pointer"

. 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

____ Bernard Cousin- IFSIC -Universit Rennes I

FIN

s Transmission Control Protocol s

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

____ Bernard Cousin- IFSIC -Universit Rennes I

s Transmission Control Protocol s

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

____ Bernard Cousin- IFSIC -Universit Rennes I

s Transmission Control Protocol s

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

envoys noninterdit non-acquitts envoys d'envoi

acknowledgment sequence number number window size

____ Bernard Cousin- IFSIC -Universit Rennes I

s Transmission Control Protocol s

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

____ Bernard Cousin- IFSIC -Universit Rennes I

10

s Transmission Control Protocol s

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>

buffer vide de 8192 octets

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

s Transmission Control Protocol s

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>

<1520, 500> <1520, 524> <2020, 24> <2020, 24>


<2044, 0>

Plus de place !

Blocage : contrle du flux

...
<2044, 500> <2544, 500> <3044, 24>

libration de l'espace de stockage

<2044, 1024> <2544, 524>

Espace libr !

...
Temps

...

____ Bernard Cousin- IFSIC -Universit Rennes I

12

s Transmission Control Protocol s

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.

Rcupration des pertes : par retransmission

(depuis le segment perdu)

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

<3544, 500> <2544, 8192> <4044, 500> <4544, 500>


<2544, 8192>

Les acquittements ne progressent plus !

dclenchement

<2544, 500> <3044, 500> <3044, 8192> <3544, 500>


<4044, 8192>
Temps

Capacit de stockage > 8 Ko

Retransmissions

____ Bernard Cousin- IFSIC -Universit Rennes I

13

s Transmission Control Protocol s

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 !

____ Bernard Cousin- IFSIC -Universit Rennes I

14

s Transmission Control Protocol s

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

____ Bernard Cousin- IFSIC -Universit Rennes I

15

s Transmission Control Protocol s

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"

____ Bernard Cousin- IFSIC -Universit Rennes I

16

s Transmission Control Protocol s

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

____ Bernard Cousin- IFSIC -Universit Rennes I

17

s Transmission Control Protocol s

5.3. Spcication Lautomate d'une connexion TCP


/Reset

Notation : . condition/action . en vert rception/mission d'un segment . en bleu des commandes

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

Syn+Ack/Ack established Fin/Ack close wait close/Fin Ack/ last Ack

fermeture de la connexion

Fin Fin/Ack wait2

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

s Transmission Control Protocol s

6. Donnes urgentes Out of band data


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

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 !

Urgent TCP data

Normal TCP data

____ Bernard Cousin- IFSIC -Universit Rennes I

19

s Transmission Control Protocol s

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

Padding TCP data

- Afin de raliser lalignement sur les mots de 32 bits, un bourrage (padding) peut tre ncessaire

____ Bernard Cousin- IFSIC -Universit Rennes I

20

s Transmission Control Protocol s

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

s Transmission Control Protocol s

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.

____ Bernard Cousin- IFSIC -Universit Rennes I

22