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 mouvement 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 :

Application Port Description
0 Réservé
TCPMux 1 TCP port service multiplexer
CompressNet 2 Utilitaire de supervision
CompressNet 3 Processus de compression
4 Non affecté
RJE 5 Remote Job Entry
6 Non affecté
Echo 7
8 Non affecté
Discard 9
10 Non affecté
Systat 11 Fournit l'état des processus d'une machine.
12 Non affecté
DayTime 13 RFC 867
14 Non affecté
Netstat 15 Non affecté aujourd'hui
16 Non affecté
QOTD 17 Citation du jour (Quote Of The Day)
MSP 18 Message Send Protocol
CharGen 19 Générateur de caractères (Character Generator)
FTP-Data 20 Données FTP (par défaut)
FTP 21 Contrôle
SSH 22 Protocole de login SSH à distance
Telnet 23 connexion sur une machine distante
24 Tout système de mail privé
SMTP 25 Envoi de courrier électronique (email)
Time 37
Name 42
WhoIs 42
Domain 53 serveur de noms (DNS)
MTP 57
RJE 77
Finger 79
HTTP 80 Web
Link 87
SupDup 95
HostNames 101
ISO-TSAP 102
Dictionary 103
X400-SND 104
CSNet-NS 105
POP/2 109
POP3 110 Récupération de mails
PortMap 111 Gère un annuaire des ports réservés par des applications (RPC de Sun)
Auth 113
SFTP 115
Path 117
NNTP 119
Loc-Serv 135
NbSession 139
News 144
tcprepo 158
Print-Srv 170
VMNet 175
VMNet0 400
Exec 512
Login 513 Connexion sur une machine distante (Remote Login)
Shell 514
Printer 515 Impression déportée
EFS 520
Tempo 526
Courier 530
Conference 531
NetNews 532
UUCP 540
KLogin 543
KShell 544
RemoteFS 556
garcon 600
maitrd 601
BusBoy 602
Kerberos 750
Kerberos_mast 751
Krb_prop 754
ERLogin 888
X11 6000 système X Window version 11

Notes

Limitations

Voir