R.17 · Le transport et le diagnostic
TCP et UDP : ports, connexions et choix du protocole
Leçon théorique · questionnaire de validation · gratuit, dans le navigateur
IP amène un paquet d'une machine à une autre ; la couche transport l'amène à la bonne application, grâce aux ports, et décide du niveau de fiabilité. Deux protocoles se partagent presque tout le trafic : TCP, fiable et ordonné, et UDP, léger et sans garantie. Savoir lequel utilise un service, et sur quel port, sert tous les jours pour écrire une règle de pare-feu ou dépanner un « ça ne répond pas ».
Ce que vous saurez à la fin : expliquer le rôle des ports, décrire l'ouverture et la fermeture d'une connexion TCP, comparer TCP et UDP, citer les ports des services courants et voir sur une machine qui écoute sur quel port.
1. Les ports : à quelle application parler
Une machine fait tourner de nombreux services sur une seule adresse IP. Le port (un nombre de 0 à 65 535) désigne l'application. Une connexion est identifiée par cinq valeurs : protocole, IP source, port source, IP destination, port destination.
| Plage | Nom | Usage |
|---|---|---|
| 0 à 1023 | Ports bien connus | Services standard (22, 80, 443…) ; sous Linux, réservés à root |
| 1024 à 49 151 | Ports enregistrés | Applications (3306 MySQL, 5432 PostgreSQL, 6443 API Kubernetes) |
| 49 152 à 65 535 | Ports éphémères | Choisis au hasard par le client, côté source |
Quand votre navigateur contacte https://exemple.fr, il part d'un port éphémère (par exemple 51 234) vers le port 443 du serveur.
2. TCP : une connexion fiable
Son en-tête porte de quoi numéroter, acquitter et réguler chaque échange :
Avant tout échange, TCP ouvre une connexion, en trois messages (three-way handshake) :
- SYN : le client demande l'ouverture et annonce son numéro de séquence de départ ;
- SYN-ACK : le serveur accepte, accuse réception et annonce le sien ;
- ACK : le client accuse réception ; la connexion est établie et les données circulent.
Ensuite, TCP garantit que tout arrive, dans l'ordre :
- chaque octet est numéroté (numéro de séquence) et le destinataire accuse réception (ACK) ;
- ce qui n'est pas acquitté à temps est retransmis ;
- la fenêtre (window) règle combien de données peuvent être envoyées sans attendre d'accusé : elle s'agrandit quand tout va bien et rétrécit en cas de pertes, c'est le contrôle de flux et de congestion.
La fermeture se fait proprement avec FIN et ACK dans chaque sens, ou brutalement avec RST. Un connection refused est justement un RST : la machine répond, mais rien n'écoute sur ce port.
3. UDP : envoyer et oublier
UDP n'ouvre aucune connexion : il envoie des datagrammes, sans accusé, sans retransmission, sans ordre garanti. Son en-tête fait 8 octets, contre 20 au minimum pour TCP.
| TCP | UDP | |
|---|---|---|
| Connexion | Oui (handshake) | Non |
| Fiabilité, ordre | Garantis (ACK, retransmission) | Aucune garantie |
| Contrôle de flux | Fenêtre glissante | Aucun |
| En-tête | 20 octets minimum | 8 octets |
| Usages | Web, SSH, e-mail, bases de données, API | DNS, DHCP, voix et vidéo en direct, NTP, SNMP, syslog |
UDP convient quand une donnée en retard ne sert plus à rien (la voix) ou quand l'application gère elle-même la fiabilité. QUIC, le transport de HTTP/3, est construit sur UDP pour cette raison.
4. Les ports à connaître
| Port | Protocole | Service |
|---|---|---|
| 20, 21 | TCP | FTP (données, commandes) |
| 22 | TCP | SSH, SCP, SFTP |
| 23 | TCP | Telnet (en clair : à proscrire) |
| 25 | TCP | SMTP (envoi d'e-mails) |
| 53 | UDP et TCP | DNS (TCP pour les grosses réponses et les transferts de zone) |
| 67, 68 | UDP | DHCP (serveur, client) |
| 69 | UDP | TFTP (images et configurations d'équipements) |
| 80 | TCP | HTTP |
| 110, 143 | TCP | POP3, IMAP |
| 123 | UDP | NTP (l'heure) |
| 161, 162 | UDP | SNMP (requêtes, alertes traps) |
| 443 | TCP (et UDP pour HTTP/3) | HTTPS |
| 514 | UDP | Syslog |
5. Qui écoute sur ma machine ?
ss -tlnp # TCP en écoute (-t), numérique (-n), avec le processus (-p)
ss -ulnp # la même chose en UDP
ss -tn state established # les connexions TCP établies
nc -vz exemple.fr 443 # tester qu'un port distant répond
! Cisco IOS : un routeur ou un commutateur montre ses propres connexions
show control-plane host open-ports
show tcp brief
Le diagnostic en trois cas : timeout (rien ne revient : un pare-feu jette les paquets, ou la route manque), connection refused (RST : la machine est joignable mais aucun service n'écoute), connexion établie mais erreur (le problème est dans l'application, couche 7).