Stream Control Transport Protocol

Présentation de ses homologues, UDP et TCP

UDP, un protocole de transport simple

UDP (User Datagram Protocol) est un protocole de transport utilisé par de nombreuses applications sur Internet, notamment par le service DNS.

Il fonctionne en mode déconnecté, et n'offre aucune fiabilité dans le transport de paquets.
Ainsi, si deux processus distants A et B veulent communiquer à travers UDP, si A envoie un paquet P sur le réseau et que celui-ci se perd avant la réception, alors ni A ni B ne peut être au courant de cette perte.

Il n'intègre aucun mécanisme de contrôle de congestion, ni de numéro de séquencement.
Pour cette raison, si A envoie 2 paquets P1 et P2 sur le réseau, dans cet ordre, ces mêmes paquets peuvent être reçus dans l'ordre inverse par le destinataire.

Ces contrôles, s'il doivent être opérationnels tout en utilisant UDP, doivent être réalisés par une des ULP (Upper Layer Protocol), notamment au niveau applicatif.

Le seul contrôle apporté par UDP est le contrôle d'intégrité du paquet. Ainsi, si un paquet arrive à destination, avec le checksum, le destinataire est en mesure de savoir si le paquet n'a pas été altéré lors du transport sur le réseau.

L'en-tête du protocole est simple :

Les ports source et destination permettent d'identifier les processus en communication.

TCP, l'apport de la fiabilité dans le transport

Le protocole TCP permet également de transporter des informations sur un réseau IP, et est majoritairement utilisé sur Internet (HTTP, FTP, SMTP...).

Il permet d'assurer un transport fiable, et intègre pour cela :

  • Un système de numéros d'aquittement cumulatifs, ainsi que de séquencement
  • Un système de contrôle de congestion

Son en-tête est plus complète pour pouvoir assurer ces fonctionnalités :

Ce protocole est orienté connexion, et nécessite donc un échange de trames prélable pour construire cette connexion. Cet échange s'appelle le 3-way handshake.

Les inconvénients de TCP

Malgré ces apports, TCP peut montrer ses limites pour certaines applications, notamment car :

  • les attaques DoS sont facile à réaliser (SYN-Attack)
  • il est sujet aux HoL (Head-of-Line) Blocking
  • les SACK (Selective Acknoledgment) sont optionnels
  • l'Unordered-delivery est impossible. Les messages doivent toujours être transmis dans l'ordre reçu : le message doit être réordonné à tous les coups !

Le protocole SCTP apporte des solutions.