TCP

Transport Control Protocol : protocole à contrôle de transport.

Ou TCP/IP.

Besoin

Définir un protocole réseau standard et fiable pour l'échange de documents sur le Web (pages HTML)

Conception

TCP est basé sur IP (encapsulé dans les datagrammes IP).

Transport
TCP
Réseau

Implémentation

Un segment TCP contient :

Section Octet
Contenu
Commentaire
En-tête 0-1 Port source
2-3 Port destination
4-7 Numéro de séquence
8-11 Numéro d'accusé-réception
12-13 Hlen (3 bits) + Réservé (5 bits) + Code (4 bits)
14-15 Fenêtre Groupe d'envois auquel appartient ce paquet
16-17 Somme de contrôle
18-19 Pointeur urgent Où se trouvent les données urgentes
20-22 Options
23 Remplissage Des 0 ?
Données 24- Données

Les API (C, Java) utilisées pour établir des connexions TCP utilisent le principe de socket.

L'utilisation de sockets TCP implique typiquement les opérations suivantes :

  1. Création de la socket en mode :
    • passif (serveur) : Accepter et attendre les connexions ;
    • actif (client) : Contacter l'application distante et s'y connecter.
  2. Communication établie (bind, listen, connect ou accept)
  3. Echange de données (read/write ou sendto/recvfrom).
    • Pour éviter une lecture bloquant infiniment en attente de données ou de fermeture de socket, on peut fixer un temps d'expiration de la tentative de lecture (l'option Berkeley SO_TIMEOUT, en millisecondes).
    • Pour éviter trop de lourdeur des échanges, les paquets sont bufferisés et envoyés que lorsque les accusés réception des n paquets précédents ont été reçus (système de "fenêtres" ou algorithme de John Nagle : envoi du paquet 11 quand réception de l'accusé du paquet 1 si la fenêtre est de taille 10 par exemple). Ce système peut être contourné pour des applications "temps réel" désirant des accusés réception immédiats pour chaque envoi (via l'option Berkeley TCP_NODELAY), par exemple un client de serveur X Unix recevant les mouvements d'une souris.
  4. Fermeture de la communication (close ou shutdown)
    1. Envoi de TCP Finish (<FIN>)
    2. L'autre partie confirme (<ACK><FIN>). Sans confirmation au bout d'un temps moyen de réponse constaté (ou valeur de l'option Berkekey SO_LINGER), la socket fermante émet un TCP Abort (<RST>) et ferme unilatéralement.
    3. La socket fermante reconfirme (<ACK>)

Exemples

Des exemples d'applications utilisant TCP sont :

Description Port Statut TCP UDP

Notes

Limitations

Voir