Le rôle de la couche Transport
IP achemine des paquets d’une machine à une autre. Mais sur une machine, plusieurs applications communiquent en même temps : navigateur, messagerie, client SSH… La couche Transport ajoute ce qui manque : savoir à quelle application livrer les données, et éventuellement garantir leur livraison. Deux protocoles s’y partagent le travail.
| TCP | UDP | |
|---|---|---|
| Nom | Transmission Control Protocol | User Datagram Protocol |
| Référence | RFC 9293 (qui remplace la RFC 793) | RFC 768 |
| Connexion | Établie avant l’échange (poignée de main en trois temps), puis fermée | Aucune : chaque message part indépendamment |
| Fiabilité | Numéros de séquence, accusés de réception, retransmission des pertes, remise dans l’ordre | Aucune garantie : un message perdu est perdu |
| Contrôle de flux et de congestion | Oui : TCP adapte son débit au récepteur et au réseau | Non |
| En-tête | 20 octets minimum | 8 octets |
| Unité | Segment | Datagramme |
| Usages typiques | Web, SSH, messagerie, transfert de fichiers, bases de données | DNS, DHCP, NTP, voix sur IP, visioconférence, jeux en ligne |
Le choix ne dépend pas de la « qualité » du protocole mais du besoin : un fichier doit arriver complet, quitte à attendre ; une conversation vocale préfère perdre un morceau de son plutôt que le recevoir en retard.
Les numéros de port
Un port est un numéro sur 16 bits (de 0 à 65 535) qui désigne une application sur une machine. TCP et UDP ont chacun leurs propres ports : le port 53 en UDP et le port 53 en TCP sont deux points d’accès distincts.
| Plage | Nom | Exemples |
|---|---|---|
| 0 – 1023 | Ports bien connus (well-known) : services standard, réservés à l’administrateur sous Linux | 22 (SSH), 53 (DNS), 80 (HTTP), 443 (HTTPS) |
| 1024 – 49151 | Ports enregistrés | 3306 (MySQL / MariaDB), 3389 (RDP), 8080 (HTTP alternatif) |
| 49152 – 65535 | Ports dynamiques (éphémères) | Choisis automatiquement par le système pour le côté client d’une connexion |
Une communication TCP est identifiée par quatre valeurs : adresse et port source, adresse et port destination. Le couple adresse IP + port d’une extrémité s’appelle un socket. C’est ce qui permet à un serveur web de servir des milliers de clients sur le même port 443 sans les confondre.
La place des en-têtes
| En-tête Ethernet (14 o) | En-tête IP (20 o) | En-tête TCP (20 o) ou UDP (8 o) | Données | FCS (4 o) |
L’en-tête TCP est plus lourd parce qu’il transporte tout ce qui sert à la fiabilité : numéros de séquence et d’accusé de réception, taille de fenêtre, drapeaux (SYN, ACK, FIN, RST…). L’en-tête UDP se limite aux ports source et destination, à la longueur et à une somme de contrôle.
Manipulation : dialoguer avec netcat
netcat (nc) ouvre une connexion TCP ou UDP brute, sans protocole applicatif : ce qui est tapé d’un côté s’affiche de l’autre. C’est le moyen le plus direct de voir la couche Transport à l’œuvre.
# Sur le serveur (192.168.10.30) : écoute sur le port 5000
$ nc -l 5000 # netcat OpenBSD (Debian, Ubuntu)
$ nc -l -p 5000 # netcat « traditionnel »
# Sur le client : connexion au serveur
$ nc -v 192.168.10.30 5000
# Sur le serveur, dans un autre terminal : la connexion est visible
$ ss -tn | grep 5000
ESTAB 0 0 192.168.10.30:5000 192.168.10.20:51834
Le client a reçu un port éphémère (ici 51834), choisi par son système. L’option -u fait la même chose en UDP.
© 2026 Bruno Jousseaume. Ce cours est publié sous licence CC BY-NC-SA 4.0 : vous pouvez le partager et l’adapter en citant l’auteur et un lien vers cette page, sans usage commercial, et en partageant vos adaptations sous la même licence.