Apparu en 1974.
Appartient à la couche 4 du système
OSI. Transport
en mode connecté. Contrairement à UDP,
TCP communique par flux d'octets.
L'entête TCP :
|
Port source
|
Port destination
|
|
Numéro de séquence
|
|
Numéro d'acquittement
|
|
Longueur de l'entête
|
|
F
|
L
|
A
|
G
|
S
|
|
Fenêtre
|
|
Contrôle d'erreur
|
Pointeur
|
|
Option
|
Flags :
|
Urgent
|
Lorsque ce flag est activé,
le champs pointeur indique le début des octets à
traiter en priorité. |
|
Ack
|
Le numéro d'acquittement
est valide |
|
Eom
|
Est nécessaire à la segmentation
des paquets. Le flag Eom est à 1 pour le dernier paquet
d'un message segmenté. (option pour délimiter
les messages dans le flux d'octets)
|
|
Rst
|
Rejet de demande de connexion
(utilisé lors de doublon du paquet de demande de connexion) |
|
Syn
|
Utilisé (bit Syn
à 1) lors de la demande de connexion et lors de l'acceptation
de connexion. |
|
Fin
|
Demande de fermeture de connexion (fermeture
dans un seul sens) => La machine ayant activé ce
flag indique qu'elle n'a plus rien à émettre,
mais elle peut toujours recevoir
La fermeture doit être réalisée
dans les deux sens (<=> par les deux machines)
|
Ouverture et fermeture de connexion :
Syn, Fin, Rst
Fragmentation et réassemblage :
Eom
Contrôle de flux : Champ WIN
= Nb d'octets que le récepteur est capable de stocker
Champ numéro de séquence
: Numéro du premier octet de donnée.
Champ numéro d'acquittement : Valide
si Ack = 1, c'est le numéro du dernier octet acquité
+1 (c'est le numéro du prochain octet attendu)
Récupération des erreurs
: Numéro de séquence(4octets) = numéro du premier
octet de donnée du paquet ; Numéro d'acquittement
(4 octets) = Numéro du dernier octets reçu +1 (= numéro
du prochain octet attendu)
Gestion de données urgentes : Flag
Urgent
Coté émetteur : Un timer
est associé à chaque paquet + mémorisation
du paquet. Retransmission lors de la fin du timer. Le timer est
variable en fonction du temps d'aller-retour des paquets et ack
précédents.
Coté récepteur : Si
numéro de séquence attendu, alors acquittement jusqu'au
dernier octet reçu, sinon : mémorisation du paquet
et acquittement jusqu'au dernier octet reçu "sans trou".
Contrôle de flux : Fenêtre
à anticipation variable : champ fenêtre = nombre d'octets
pouvant être expédiés après le numéro
d'acquittement. Si le champs fenêtre est à 0, le buffer
de réception est plein et l'émission est bloquée
jusqu'à une lecture de l'application. Déblocage (
l'émetteur tente de renvoyer de temps en temps de petites
données, il regarde le champs fenêtre de l'acquittement
pour savoir si le buffer s'est vidé) à partir d'un
certain seuil de libération du buffer.
|