Vous êtes sur la page 1sur 14

TCP

Cette partie prsente le second service important et connu : le service de remise fiable en mode
connect et le protocole de contrle de transmission, TCP (Transmission Control Protocol) qui le
dfinit.
Si TCP est prsent ici dans le cadre de la famille des protocoles TCP/IP, il constitue toutefois un
protocole indpendant, dusage gnral qui peut tre adapt pour communiquer avec dautres systmes de
remise, car TCP ne fait que peu dhypothses sur le rseau sous-jacent.LISO sen est inspir pour dfinir
le protocole de transport TP-4.

I) Proprits des services de remise fiable


Linterface entre les programmes dapplication et le service de remise fiable TCP/IP possde 5
proprits :
i)

Orientation connexion

Lorsque deux programmes dapplication transfrent de gros volumes de donnes, nous imaginons
des flots de bits structurs en caractres ou octets (8 bits). Le service de remise fiable en mode connect
transmet lordinateur destinataire une suite doctets identique celle que lordinateur source a mis.
ii)

Circuits Virtuels

Les ordinateurs doivent tout dabord mettre un appel qui doit tre accept par le correspondant.
Une fois lappel accept, les modules du protocole informent les programmes dapplication quune
connexion est tablie et le transfert dinformations peut commencer. Pendant le transfert, les logiciels des
deux ordinateurs continuent communiquer afin de vrifier si les donnes ont t correctement reues. Si
un incident apparat au cours du traitement, les deux ordinateurs en rendent compte au programme
dapplication concern.
iii)

Transferts tamponns

Lors du transfert de donnes, les applications utilisent toute la taille du bloc. Elle peut aller
jusquau simple octet. A lextrmit rceptrice, le logiciel de communication remet les octets au
programme dapplication dans lordre exact reu sur la connexion.
Le logiciel de communication est libre de dcomposer le flot de donnes en paquets, indpendants
des blocs de donnes transmis par les programmes dapplication.
iv)

Connexion non structures

Les programmes dapplication utilisant le service de flots doivent connatre la structure des
donnes changes et se mettre daccord sur la structure du flot avant dtablir la connexion. Ce qui
revient dire que le service de TCP/IP ne traite pas des flots structurs.
v)

Connexion bidirectionnelles simultanes

Les connexions assures par le service TCP/IP permettent les changes simultans dinformations
dans les deux sens, en mode bidirectionnel simultan (full duplex), en opposition une connexion
bidirectionnelle lalternat (half duplex) o la transmission nest mise que dans un sens.

II)

Assurer la fiabilit

Afin dobtenir un service fiable, on a recours l emploi dun accus de bonne rception, ACK,
chaque fois que le rcepteur reoit des donnes. Lmetteur, quant lui, conserve une copie du paquet
mis en attendant cet accus; de plus, il arme une temporisation et retransmet le paquet sil na pas reu
entre temps laccus correspondant.

Un dernier problme na pas t trait, celui de la perte de laccus de rception et donc du rique
que le paquet soit dupliqu. En gnral, les protocoles fiables dtectent les paquets dupliqus en affectant
chaque paquet un numro squenciel et en exigeant du rcepteur quil garde la trace des numros des
paquets reus.

III)

Le concept de fentre glissante (sliding window)

Son but est damliorer lefficacit de la transmission des flots. Un protocole simple utilisant un
accus de rception gaspille une quantit significative de capacit car la transmission dun nouveau
paquet est retarde jusqu' ce que laccus de rception correspondant au paquet prcdent ait t reu par
lmetteur.
Le principe des fentres glissantes est de pouvoir envoyer plusieurs paquets sans devoir attendre
un accus de rception.
1) Principe dutilisation
Le protocole positionne une petite fentre de taille fixe sur la suite des paquets envoyer, puis
transmet tous ces paquets qui se trouvent lintrieur de cette fentre. Le schma suivant montre son
fonctionnement.

Lefficacit des protocoles de fentres glissantes dpend de la taille de la fentre et de la vitesse


laquelle le rseau accepte les paquets.
Le schma suivant montre le fonctionnement du rseau avec une fentre glissante de taille 3 :

On peut constater quun bonne utilisation de ce protocole peut amliorer sensiblement la vitesse
des paquets dans le rseau.
Pour chaque paquet mis un temporisateur spcial est activ. Si le paquet nest pas acquitt, il est
retransmis. Ct rcepteur, le logiciel de communication gre une fentre analogue : il accepte et acquitte
les paquets au fur et mesure de leur arriv.

IV) Le protocole de contrle de transmission (TCP)


TCP est un protocole de transmission et non un logiciel. La documentation du protocole ne dfinit
que les fonctions quil ralise et non la faon prcise avec laquelle les programmes dapplication accdent
ces fonctions. Cela permet plus de souplesse, en particulier pour les programmeurs qui implmentent

TCP dans un systme dexploitation et qui doivent utiliser linterface systme mise leur disposition
quelle quelle soit.
Etant donn sa grande souplesse, on peut lutiliser avec un grand nombre de systmes de remise
de paquets tel quIP. Mais aussi TCP peut tre implment sur des lignes tlphonniques, des liaisons
loues, un rseau local, un rseau optique haut dbit ou un rseau grande distance. Cest lune de ses
plus grandes forces.

V)

Ports, connexions et extrmits de connexions

TCP permet plusieurs programmes dapplication sexcutant sur un ordinateur donn de


communiquer simultanment. Comme UDP, il multiplexe les informations reues vers les diffrents
programmes dapplication, en utilisant les numros de port de protocoles.
TCP sappuie, en effet, sur la notion de connexion, dans laquelle les objets sont des circuits
virtuels et non des ports individuels : les connexions sont identifies par leurs deux extrmits.
Lextrmit dune connexion est reprsente par une paire de nombres entiers (ordinateur, port) o
ordinateur reprsente ladresse IP de lordinateur et o port reprsente un port TCP de lordinateur.
Ex : (128.10.2.3, 25) signifie : port 25 dadresse IP 128.10.2.3.
Puisque TCP identifie une connexion par une paire dextrmits de connexion, il est possible, sur
un mme ordinateur, que plusieurs connexions partagent un mme numro de port.
Ex : (128.9.0.32, 1182) et (128.10.2.3, 53) et, en mme temps,
(128.2.254.139, 1069) et (128.10.2.3, 53) sur le mme port.

VI) Ouvertures actives et passives


Comme cest un protocole orient connexion, il faut dabord un accord pralable aux deux
extrmits. Pour cela lune deux machines doit excuter une fonction douverture passive, cest--dire que
le systme dexploitation devra accepter une demande de connexion entrante. Lautre devra quand lui
excuter une fonction douverture active pour demander ltablissement dune connexion.

VII) Segments, flots, numros de squence


TCP considre les flots comme des suites doctets divises en segments transmettre. En gnral
chaque segment est achemin travers internet dans un seul datagramme.
Le fait que TCP utilise la superposition (piggybacking), implique que des accuss de rception
peuvent tre achemins dans des paquets de donnes dans le cas o A et B schangent mutuellement des
donnes.
La fentre glissante de TCP opre au niveau de loctet et non au niveau du segment ou du paquet.
Les octets de donnes sont numrots squentiellement et lmetteur gre pour chaque connexion 3
pointeurs que lon peut voir sur le schma ci-dessous.

Comme le rcepteur doit lui aussi grer une fentre analogue, et comme le connexion seffectue
dans les deux sens, nous avons besoin au total de 4 fentres glissantes lors dune connexion TCP.

VIII)

Taille fentre variable et contrle de flux

La grande diffrence entre une fentre glissante et la fentre glissante de TCP est que la taille de la
fentre peut varier dans le temps.
Bien adapt, ce mcanisme permet de rsoudre deux problmes importants, celui de lefficacit de
la transmission et du contrle de flux de bout en bout.
Chaque accus de rception contient le nombre doctets correctement reus et contient aussi une
indication de la taille de la fentre (window advertisment) qui donne le nombre doctets supplmentaires
que le rcepteur est prt accepter. Selon la demande, la fentre va saggrandir ou au contraire se rtrcir.
Une taille de fentre nulle signifie un arrt de transmission de donnes. Cependant, deux types
dinformations peuvent tout de mme tre changes sur le rseau :
- Donnes urgentes
- Interrogation priodique du rcepteur, afin dviter une treinte fatale (deadlock : indication de l
a taille de la fentre non nulle perdue).
TCP ne dispose pas de mcanisme de congestion spcifique.

IX)

Formats des segments TCP

Lunit de donnes changes entre les logiciels est le segment . Chaque segment est divis en
deux parties, un en-tte et des donnes. Len-tte TCP ( TCP header ) comporte des informations
didentification et de contrle.
Les champs Port source et Port destination contiennent les numros de port TCP qui identifient
les programmes dapplication des extrmits de la connexion.
Le Numro de squence donne la position du segment dans le flux de lmetteur, et le Numro
daccus de rception indique le numro du prochain octet attendu par le rcepteur.
Notons au passage que le numro de squence fait rfrence au flot qui scoule dans le mme
sens que le segment, tandis que le numro daccus de rception fait rfrence au flot de sens contraire.

Le champ Lgr-ent contient un entier qui indique la longueur de len-tte du segment, exprim en
multiple de 32 bits. Ce champ est ncessaire car la longueur du champ Options est variable suivant les
options choisies. La taille de len-tte TCP varie donc en fonction des options. Le champ Rserv de 6
bits est rserv pour un usage ultrieur.
Les logiciels TCP utilisent le champ Bits de code pour dterminer le rle et le contenu du segment,
type accus de rception, donnes, demande dtablissement ou de libration dune connexion
Le champ Fentre indique la taille du tampon de rception chaque mission de segments.
Ci-dessous un tableau reprsentant des bits de champ Bits de code de len-tte TCP :

X)

Bit (de gauche droite)

Description (si le bit est 1)

URG
ACK
PSH
RST
SYN
FIN

Le pointeur de donnes urgentes est valide


Le champ d'accus de rception est valide
Ce segment requiert un push
Rinitialiser le connexion
Synchroniser les numros de squences
L'metteur a atteint la fin de son flot

Les donnes hors bande

Lors dune connexion TCP, lutilisateur peut dcider dmettre une squence de caractres afin de
ou dinterrompre un programme en cours dexcution lautre extrmit. On appelle ces
donnes des donnes hors bande (donnes urgentes). Elles sont prioritaires donc indpendantes de leurs
positions dans le flot, ce qui signifie quau moment de larrive dune de ces donnes, le programme
dapplication doit se mettre en mode urgence et traiter ces donnes, puis revenir la cas chant en mode
normal.
<<tuer>>

Le mcanisme utilis pour marquer les donnes urgentes lors de transmission dans un segment est
constitu du bit URG et du champ Pointeur durgence.

XI)

Option de taille maximale de segment

Tous les segments mis sur la connexion ne sont pas de mme taille. Toutefois les deux extrmits
ont besoin de se mettre daccord sur la taille maximale du segment. On utilise alors le champ Options afin
de ngocier la taille maximale des segments, MSS (Maximum Segment Size).
En pratique, il est trs difficile de calculer cette valeur pour plusieurs raisons :
i)
ii)
iii)

XII

TCP ne comporte pas de mcanismes qui permettent de le faire.


Comme les passerelles peuvent modifier le routage au sein des rseaux, le chemin
suivi par les datagrammes peut changer dynamiquement.
La taille des datagrammes optimaux dpend de la taille des en-ttes des protocoles
sous-jacents.

Calcul du total de contrle TCP

Le champ total de contrle est utilis pour vrifier la validit des donnes et de len-tte. Il est
cod sur 16 bits.
Il ajoute un pseudo en-tte et suffisamment doctets zro pour faire concider la taille du segment
avec un multiple de 16 bits. Ainsi on suppose que le champ total de contrle vaut zro au moment du
calcul du total de contrle. TCP utilise une arithmtique sur 16 bits et prend le complment 1 de la
somme des complments 1. Sur le site de rception, TCP effectue le mme calcul pour vrifier que les
donnes nont pas t altres.
Ci-dessous, la structure du pseudo en-tte utilis pur le calcul du total de contrle TCP.

Les adresses sources et destination sont, contrairement UDP, trs importantes. Le logiciel TCP
metteur dfinit la valeur du champ Protocole que le systme de remise sous-jacent utilisera dans son
champ type de protocole. Dans le cas des datagrammes IP qui transportent des segments TCP, la valeur
est 6.
Le champ Longueur TCP indique la longueur totale du segment TCP, en-tte TCP inclus. Au
niveau du destinataire, les informations du pseuso en-tte sont extraites et prises en compte dans le calcul
du total de contrle afin de vrifier la non-altration du segment.

XIII) Accuss de rception et retransmissions


Comme TCP met les donnes dans des segments de taille variable, et quun segment retransmis
peut contenir plus dinformations que nen contenait le segment TCP initial, les accuss de rception ne
peuvent pas, de faon simple, rfrencer les segments TCP ou les datagramme IP.
Cest pourquoi ils se contentent de reprer une position dans le flot au moyen de numros de
squence. De plus ces numros lui permettent de rordonner les segments lors de la rception des paquets.

Les accuss de rception indiquent toujours le numro du prochain octet attendu par le rcepteur.
Le mcanisme daccus de rception de TCP est dit cumulatif car il indique combien doctets du flots ont
t accumuls.
Avantages de ce mcanisme :
-

ils sont faciles gnrer et non ambigus


ils nimpliquent pas forcment de retransmission

Inconvnients de ce mcanisme :
- lmetteur ne reoit pas daccus de rception relatif la bonne transmission dun segment
mais une indication demplacement dans un flot.

XIV) Temporisations et retransmissions


Un des concepts les plus importants et les plus complexes de TCP est li la faon de grer la
temporisation et les retransmisions. On sait dj que TCP arme une temporisation chaque envoi de
segments.
On ne peut pas savoir, priori, quelle vitesse les accuss de rception seront reus par la source.
De plus sajoute le dlai de transmission introduit par chaque routeur (suivant le trafic quil supporte). Les
dlais peuvent donc normment varier dun moment un autre.
TCP prend en compte les variations de dlai au sein dun internet en utilisant un algorithme de
retransmission adaptatif. TCP surveille le comportement de chaque connexion et en dduit des valeurs de
temporisation raisonnables. Au fur et mesure des variations du comportement, TCP modifie ses valeurs
de temporisation pour chacune des destinations.
Pour cela TCP enregistre la date laquelle un segment est mis et celle laquelle laccus de
rception correspondant lui parvient. TCP calcule puis conserve lestimation du temps de boucle moyen
(RTT :Round Trip Time) sous forme dune moyenne pondre et utilise la nouvelle valeur (Nouv_RTT)
pour la faire varier lentement.
Ainsi, lune des premires techniques de calcul dune nouvelle moyenne pondre utilise un
facteur de pondration constant, , o 0 < 1, afin de protger lancienne moyenne contre une
influence trop forte de la nouvelle :
RTT = ( * Anc_RTT) + ( (1- ) * Nouv_RTT).
Rq : si proche de 1, cela rend insensible les fortes variations, si proche de 0 au contraire, cela rend
trs sensible les fortes variations.
TCP calcule la valeur de la temporisation partir de lestimation du temps de boucle moyen, avec
comme coefficient de pondration constant ( > 1) :
Temporisation = * RTT
La recommandation prconisait une valeur de temporisation o = 2. Des travaux plus rcents ont
amlior les techniques dadaptation des temporisations.

XV)

Echantillonnage prcis du temps de boucle

En thorie la mesure du temps de boucle est simple Il suffit de calculer la diffrence entre la date
dmission du segment et celle de la rception de laccus de rception. Cependant TCP utilise une
technique dacquittement cumulatif dans laquelle laccus de rception concerne les donnes reues
plutt que le segment qui a servi les acheminer.
Dans le cas dune retransmission dun segment, lmetteur reoit un accus de rception, mais il
ne sait pas si cest laccus du premier segment envoy ou bien si cest celui du segment rmis. On
appelle cela lambigut des accuss de rception.
Consquence : le temps de boucle peut augmenter de faon arbitraire si chaque segment est perdu
au moins une fois.

XVI) Algorithme de KARN et augmentation des temporisations


Solution au problme : TCP ne doit pas mettre jour son RTT lors dune rmission dun
segment, on vite ainsi les accuss de rception ambigus.
Lalgorithme de KARN demande lmetteur de combiner les temporisations de retransmission
avec une stratgie daugmentation des transmissions. Celui-ci calcule dabord une valeur de temporisation
initiale. Puis chaque fois que TCP doit retransmettre un segment, il augmente la temporisation (on borne
toutefois cette augmentation par une limite suprieure).
Nouv_Temporisation = * Temporisation
Trs souvent vaut 2. Cet algorithme permet de rsoudre le problme de la non-augmentation du
temps de boucle. De plus il fonctionne bien dans les rseaux qui perdent des paquets.

XVII)

Adaptation de grandes variations de dlais

Cependant des tudes de boucles ont montr que lalgorithme de KARN ne sadaptait pas aux
grandes variations de dlais.
La thorie des files dattente indique que la variation de temps de boucle, , varie
proportionnellement 1 / (1 L) ou L est la charge courante du rseau (0 L 1).
Ex : si le rseau est occup 50 %, la variation sera de 1 / (1 0.5) = 2, cest dire 2, donc une
variation de 4. Si le rseau est occup 80 % la variation sera de 16.
En utilisant la technique du calcul du temps de boucle TCP et en prenant une valeur = 2, on
sadapte des charges maximales de 30 %.
Les spcifications de TCP de 1989 exigent des implmentations. Ces dernires calculent les
estimations du temps de boucle et de la variance, la place de la variable . Ceci permet de sadapter
des plages sensiblement plus grandes de dlai ainsi qu un dbit plus important.
Lapproximation se calcule de la manire suivante :
Diff = Echantillon Anc_RTT
RTT_Estim = Anc_RTT - * Diff
Dev = Anc_Dev + ( |Diff| - Anc_Dev)
Temporisation = RTT_Estim + *Dev

Dev est lestimation de la dviation moyenne.


est un coefficient pris entre 0 et 1 qui dfinit la vitesse avec laquelle les nouveaux chantillons affectent
la moyenne.
est un coefficient compris entre 0 et 1 qui dfinit la vitesse avec laquelle les nouveaux chantillons
affectent la dviation moyenne.
est un facteur qui contrle combien de RTT sont affects par la dviation.
Les rsultats des travaux de recherche qui suggrent = (1/2)3, = (1/2)2 et = 3 fonctionnent bien.

XVIII)

Grer la congestion

La congestion est un phnomne caus par la saturation dun ou plusieurs nuds de commutations
de paquets. Ceci entrane une augmentation des dlais et une possibilit de pertes de paquets. Les
techniques de temporisation puis de retransmission aggravent le phnomne de congestion, jusqu ce que
le rseau devienne inutilisable (collapsus congestif).
Les routeurs utilisent des techniques comme ICMP afin de prvenir les risques de congestion. Il
faut savoir que dans un rseau en congestion, la longueur des files dattente crot de faon exponentielle
pendant un temps significatif.
Pour viter cela, la norme TCP recommande maintenant lutilisation de deux techniques :
i)
la diminution dichotomique (multiplicative decrease)
ii)
le dmarrage lent
i)

la diminution dichotomique

Comme nous lavons dit, TCP doit mmoriser la taille de la fentre du rcepteur (grce aux
accuss de rception). Pour contrler la congestion, TCP utilise un second seuil appel fentre de
congestion ou limite de la fentre de congestion. A tout moment TCP se comporte comme si la taille de la
fentre tait :
Fentre_autorise = min (indication_rception, fentre_congestion).
A ltat stationnaire sur une connexion sans congestion, la taille de la fentre de congestion est
identique la fentre du rcepteur.
TCP utilise la stratgie suivante : on vite la congestion par diminution dichotomique.

ii)

Principe : en cas de perte dun segment, il faut rduire la fentre de congestion de moiti
(jusqu un minimum dau moins un segment). Pour les segments qui restent dans la fentre
dmission, il faut augmenter la temporisation de retransmission exponentiellement (en
gnral, la valeur de la taille de la fentre est double).
le dmarrage lent

Lorsque la congestion est passe, TCP utilise une technique dite de dmarage lent, pour graduer
les transmissions.

Principe : quand lmission de trafic commence sur une nouvelle connexion ou reprend aprs
une priode de congestion, il faut commencer par une fentre de congestion limite un seul
segment et incrmenter la fentre de congestion dun segment la fois, chaque fois quun
accus de rception est reu.

Au dmarrage, TCP initialise la fentre de congestion 1, met le premier segment et attend.


Lorsque laccus de rception arrive, TCP fixe sa fentre de congestion 2 et met les deux segments.
Quand les deux accuss de rception arrivent, il fixe sa fentre 4 et met les 4 segments, puis la
prochaine boucle 16. On arrive trs rapidement la limite de la taille de la fentre du rcepteur.
Pour viter une autre congestion, on pose une nouvelle condition : lorsque la fentre atteint 1 fois
et demi sa taille initiale, TCP entre dans la phase dvitement de congestion et ralentit le rythme
daugmentation du dbit. Pendant lvitement de la congestion, la fentre est augmente de 1 si tous les
segments de la fentre ont t acquitts.

XIX) Petite conclusion


Le dmarage lent, la diminution dichotomique, lvitement de la congestion, la mesure de la
variation et la stratgie daugmentation exponentielle de la temporisation, pris ensemble, amliorent de
faon significative les performances de TCP sans augmenter le temps de calcul du logiciel de
communication. Les versions TCP qui utilisent ces techniques ont amlior leurs performances des
versions prcdentes dun facteur variant de 2 10.

XX) Etablissement dune connexion TCP


Pour tablir une connexion, TCP utilise un processus en trois temps (Condition Necessaire et
Suffisante) comme le montre la figure.

Le premier segment est identifiable car le bit SYN est positionn dans le champ Bits de code.
Dans le second segment, les bits de code SYN et ACK sont positionns. Le dernier segment correspond
laccord dune connextion des deux parties.
La demande dtablissement dune connexion est conue pour que la communication stablisse
mme si les deux parties initialisent la connexion au mme moment. Il ny a pas de matre ni desclave
dans la communication.
Un problme peut se poser si une demande initiale est retransmise et quelle arrive alors que la
connexion est en cours dtablissement. Le processus dtablissement en trois temps, complt par la
rgle qui veut que TCP ignore les demandes de connexions supplmentaires reues aprs ltablissement
de la connexion, rsout ce problme.

XXI) Numros de squence initiaux

Le processus en trois temps ralise deux fonctions importantes :


i)
Il garantit que les deux extrmits sont prtes transfrer des donnes
ii)
Il permet de saccorder sur les numros de squences initiaux afin didentifier les
octets des flots quil met (les numros de squences ne sont pas toujours de la
mme valeur)
Il est possible dmettre des donnes avec le numro de squence initial dans les segments des
processus en trois temps. Les donnes seront retenues puis libres lorsque la connextion sera tablie.

XXII) Libration dune connexion TCP


Les deux programmes qui utilisent TCP peuvent arrter leur communication normalement en
utilisant la primitive close . Dun point de vue interne, TCP utilise un processus en trois temps modifi
(noublions pas que les voies sont bidirectionnelles indpendantes) comme le montre ce schma :

La diffrence par rapport lautre schma se situe aprs lmission du premier segment FIN. Au
lieu de gnrer immdiatement un second segment FIN, TCP envoie un accus de rception puis avertit
les applications de la fermeture de connexion. Cela peut prendre un certain temps. Laccus de rception a
pour but dempcher la rmission du premier segment FIN. Enfin le schma se termine comme
prcdemment avec mission du second segment FIN et de laccus de rception ACK.

XXIII)

Rinitialisation dune connexion TCP

Cest le programme dapplication qui invoque la primitive close pour librer une connexion. Si
pour une raison quelconque le rseau rompt la connexion, TCP fournit une procdure de rinitialisation.

Principe : Une des extrmits rinitialise la connexion en mettant un segment dans lequel le
bit RTS est positionn dans le champ Bits de code. Lautre extrmit rpond immdiatement
la demande de rinitialisation et libre la connexion

Remarque : toutes les ressources telles que les tampons mmoires sont libres

XXIV)

Automate nombre dtats fini de TCP

Les cercles reprsentent les tats, et les flches les transitions. Les tiquettes ou noms associs
chaque flche indiquent la cause de transition et laction TCP correspondante.
Commandes
ouverture passive : attendre une demande de connexion
ouverture active : initialiser ltablissement dune connexion
TCP gre la notion de dure de vie maximale dun segment au sein dun internet. Au moment o il
entre dans ltat temporisation expire ou Dernier ACK, il attend 2 fois la dure de vie dun segment
avant de dtruire lenregistrement correspondant la connexion.
Il peut ainsi faire la distinction entre les anciennes connexions et la connexion en cours, ce qui lui
permet dviter de rpondre par une rinitialisation si lautre extrmit transmet une demande de
terminaison fin.

XXV)

Remise force de donnes

TCP est libre de dcomposer le flot de donnes en segments de transmission, sans considration de
taille de lunit de transfert utilise par les programmes dapplication. Ceci engendre une plus grande
efficacit, surtout dans les frais de gestion (overhead) : on accumulle suffisament doctets pour constituer
des segments raisonnablement longs.

Lopration push permet de forcer la remise des octets prsents dans le flot sans devoir attendre
quun tampon se remplisse. Elle demande de positionner de bits PSH dans le chanp de Code du segment.

XXVI)

Numros de port TCP rservs

TCP, comme UDP combine lassociation statique et dynamique des ports. Il utilise un ensemble de
ports rservs pour des programmes dutilisation courante (ex : la messagerie lectronique). A lorigine
les numros de ports rservs devaient avoir un numro infrieur 256. Il est noter que les numros de
port TCP et UDP sont indpendants, cependant les concepteurs ont choisi dutiliser les mmes numros
de ports pour tout service accessible la fois depuis TCP ou UDP.

XXVII)

Performance de TCP

Des expriences effectues Berkeley ont montr que le logiciel TCP qui fonctionne sur internet
peut assurer un dbit soutenu de 8 Mbit/s (1 Mo/s) entre deux stations relies par un rseau Ethernet 10
Mbits/s.

XXVIII)

Syndrme de la fentre stupide et petits paquets

Les premires implmentations de TCP ont permis de mettre en vidence le syndrome de la


fentre stupide dans lequel chaque accus de rception annonce un petit espace disponible et chaque
segment ne transporte quune petite quantit de donnes.
Les spcifications de TCP comportent maintenant des heuristiques qui permettent dviter ce
syndrome. Chaque extrmit a un code pour viter cela. Ct rcepteur, voici comment cela fonctionne :

Principe : si on a envoy une indication de fentre nulle, il faut attendre que lespace
disponible soit au moins gal 50 % de la taille du tampon ou de la taille maximum de
segment pour envoyer une nouvelle indication de fentre.

Deux faons de procder ct rcepteur :


1. Laccus de rception nindique pas la nouvelle indication de fentre
2. On attend que la fentre soit suffisamment grande pour envoyer laccus de rception
La norme recommande dutiliser cette dernire, en limitant tout de mme une limite de 500ms au
retard que lon peut prendre dans lenvoi des accuss de rception. De plus la norme recommande lenvoi
dun accus de rception au moins aprs chaque segment de donnes.
Ct metteur on procde ainsi:

Principe : lorsque lapplication mettrice engendre de nouvelles donnes transmettre sur


une connexion sur laquelle on a mis des donnes qui nont pas encore t acquittes, on
place ces nouvelles donnes dans un tampon mais on ne les envoie pas tant quil ny en a
pas suffisamment pour remplir un segment de taille maximale. Si on est encore en attente
lorsquarrive laccus de rception, on envoie toutes les donnes dont on dispose dans le
tampon. Cette rgle est applique mme si lutilisateur a fait un push.