Chapitre 1014 minDébutant
TCP, UDP et ports : la couche transport
Par Josselyn C., prof de BTS SIO. Mis à jour le .
À la fin de ce chapitre, tu sauras
- expliquer le rôle des ports ;
- comparer TCP et UDP, et situer QUIC et HTTP/3 ;
- décrire la poignée de main en trois temps de TCP ;
- citer les ports à connaître et voir les ports ouverts d'une machine.
5 exercices corrigés1 schéma
La couche transport relie deux programmes, et pas seulement deux machines : le numéro de port (de 0 à 65 535) désigne le programme destinataire, TCP garantit une livraison complète et dans l'ordre grâce à une connexion établie en trois temps, et UDP envoie sans connexion ni garantie, plus vite. Ce chapitre explique les ports, le fonctionnement de TCP et d'UDP, leurs différences, les ports à connaître et les commandes pour voir les connexions d'une machine.
Les ports : à quel programme parler
Une adresse IP désigne une machine (plus exactement une interface). Mais sur un même serveur tournent souvent plusieurs services : un site web, un serveur SSH, une base de données. Le port dit à quel programme remettre les données. Si l'adresse IP est l'adresse d'un immeuble, le port est le numéro de l'appartement.
Un port est un nombre de 16 bits, de 0 à 65 535. L'IANA en distingue trois plages :
| Plage | Nom | Usage |
|---|---|---|
| 0 à 1023 | Ports bien connus (well-known) | Services standards : 22 SSH, 53 DNS, 443 HTTPS. Sous Linux, seul l'administrateur peut ouvrir un serveur sur ces ports. |
| 1024 à 49151 | Ports enregistrés | Applications : 3306 MySQL, 3389 bureau à distance, 5432 PostgreSQL |
| 49152 à 65535 | Ports dynamiques (éphémères) | Choisis au hasard par le système pour le côté client d'une connexion |
Quand ton navigateur se connecte à un serveur web, le serveur écoute sur le port 443 ; ton système choisit pour toi un port source éphémère, par exemple 51544. Windows prend ses ports éphémères dans la plage de l'IANA ; Linux, par défaut, entre 32768 et 60999. Les réponses du serveur reviennent vers ce port, ce qui permet d'avoir plusieurs onglets ouverts vers le même site.
Une connexion est identifiée par cinq valeurs : protocole, adresse IP source, port source, adresse IP destination, port destination. Le couple « adresse IP + port » s'appelle un socket et se note 192.168.10.70:51544 (en IPv6, l'adresse est entre crochets : [2001:db8::10]:443).
TCP : la livraison garantie
TCP (Transmission Control Protocol) est un protocole orienté connexion et fiable. Avant d'envoyer des données, le client et le serveur établissent une connexion ; ensuite, TCP garantit que tout arrive, une seule fois, dans l'ordre.
La poignée de main en trois temps
- SYN : le client demande une connexion et annonce son numéro de séquence initial (ici 1000).
- SYN-ACK : le serveur accepte, annonce son propre numéro (5000) et accuse réception du SYN :
ack = 1001, c'est-à-dire « j'attends maintenant ton octet numéro 1001 ». - ACK : le client accuse réception du SYN du serveur (
ack = 5001). La connexion est établie.
Si le port est fermé, le serveur répond au SYN par un segment RST (reset) : la connexion est refusée immédiatement. Si un pare-feu bloque silencieusement le port, le client ne reçoit rien et attend jusqu'à l'expiration du délai. Cette différence, « refusé » contre « délai dépassé », est précieuse pour dépanner.
Numéros de séquence et accusés de réception
TCP numérote chaque octet envoyé. Le destinataire répond par un ACK qui indique le prochain octet attendu. Si le client envoie 200 octets à partir du numéro 1001, le serveur répond ack = 1201. Un segment qui ne reçoit pas d'accusé dans le délai prévu est retransmis. Les numéros permettent aussi de remettre dans l'ordre des segments arrivés dans le désordre et d'éliminer les doublons.
Fenêtre et congestion
Le destinataire annonce une fenêtre : la quantité de données qu'il peut recevoir avant d'avoir à accuser réception. C'est le contrôle de flux : un serveur rapide ne noie pas un client lent. TCP adapte aussi son rythme à l'état du réseau : il accélère tant que tout passe et ralentit dès qu'il détecte des pertes. C'est le contrôle de congestion, qui évite qu'Internet s'effondre sous la charge.
Les drapeaux et la fermeture
L'en-tête TCP (20 octets au minimum) contient les ports, les numéros de séquence et d'accusé, la fenêtre, une somme de contrôle et des drapeaux : SYN (ouverture), ACK (accusé de réception), FIN (fin d'envoi), RST (réinitialisation brutale), PSH (transmettre sans attendre) et URG (données urgentes).
La fermeture normale se fait dans chaque sens : chaque côté envoie un FIN et reçoit un ACK. Une connexion passe par plusieurs états, que tu verras avec netstat ou ss : LISTEN (un serveur attend), ESTABLISHED (connexion ouverte), TIME_WAIT (connexion fermée depuis peu, en attente avant oubli), SYN_SENT (le client attend une réponse à son SYN, souvent le signe d'un port filtré).
UDP : envoyer sans attendre
UDP (User Datagram Protocol) est sans connexion et sans garantie. Il ajoute aux données un en-tête de 8 octets seulement (port source, port destination, longueur, somme de contrôle) et envoie. Pas de poignée de main, pas d'accusé, pas de retransmission, pas de remise en ordre.
C'est un avantage quand :
- la rapidité compte plus que la perfection : voix sur IP, visioconférence, jeux en ligne. Un paquet de voix qui arrive en retard ne sert plus à rien ; mieux vaut le perdre que l'attendre ;
- l'échange tient en une question et une réponse : une requête DNS, une demande DHCP, une synchronisation NTP. Établir une connexion coûterait plus cher que l'échange lui-même ;
- on envoie à plusieurs destinataires : broadcast et multicast n'existent qu'en UDP.
Si une application sur UDP a besoin de fiabilité, c'est elle qui la gère : le client DNS renvoie sa question s'il n'a pas de réponse au bout d'un moment.
QUIC et HTTP/3 : le web passe aussi par UDP
QUIC est un protocole de transport plus récent (RFC 9000, 2021), construit au-dessus d'UDP. Il apporte la fiabilité de TCP, le chiffrement de TLS 1.3 intégré et un établissement de connexion plus rapide. HTTP/3 l'utilise : une bonne partie du trafic web des grands sites passe désormais par le port UDP 443. Conséquence pratique : un pare-feu qui n'autorise que TCP 443 n'empêche pas la navigation (le navigateur se rabat sur HTTP/2 en TCP), mais une règle « HTTPS » doit aujourd'hui penser aux deux.
TCP ou UDP : le comparatif
| Critère | TCP | UDP |
|---|---|---|
| Connexion | Oui, poignée de main en trois temps | Non |
| Fiabilité | Accusés de réception, retransmission | Aucune garantie |
| Ordre | Garanti | Non garanti |
| Contrôle de flux et de congestion | Oui | Non |
| En-tête | 20 octets minimum | 8 octets |
| Diffusion et multicast | Impossible | Possible |
| Usages | Web (HTTP/1.1 et HTTP/2), SSH, courrier, transferts de fichiers, bases de données, bureau à distance | DNS, DHCP, NTP, SNMP, syslog, voix et vidéo, VPN WireGuard, QUIC |
Les ports à connaître
| Port | Protocole | Service |
|---|---|---|
| 20, 21 | TCP | FTP (données, commandes) |
| 22 | TCP | SSH, et SFTP qui passe par SSH |
| 23 | TCP | Telnet (non chiffré, à proscrire) |
| 25 | TCP | SMTP, entre serveurs de messagerie |
| 53 | UDP et TCP | DNS |
| 67, 68 | UDP | DHCP (serveur, client) |
| 69 | UDP | TFTP (démarrage réseau, sauvegarde de configurations) |
| 80 | TCP | HTTP |
| 110 | TCP | POP3 |
| 123 | UDP | NTP (heure) |
| 143 | TCP | IMAP |
| 161, 162 | UDP | SNMP (requêtes, alertes) |
| 389 | TCP et UDP | LDAP (annuaire, Active Directory) |
| 443 | TCP et UDP | HTTPS (UDP pour HTTP/3) |
| 445 | TCP | SMB (partages Windows) |
| 465, 587 | TCP | SMTP chiffré, soumission des courriels par les clients |
| 514 | UDP | Syslog |
| 636 | TCP | LDAPS (LDAP chiffré) |
| 993, 995 | TCP | IMAPS, POP3S |
| 1194 | UDP | OpenVPN (par défaut) |
| 1812, 1813 | UDP | RADIUS (authentification, comptabilité) |
| 3306 | TCP | MySQL et MariaDB |
| 3389 | TCP | RDP, bureau à distance Windows |
| 5432 | TCP | PostgreSQL |
| 51820 | UDP | WireGuard (par défaut) |
Voir et tester les ports
| Besoin | Windows | Linux |
|---|---|---|
| Ports en écoute et connexions, avec le programme | netstat -ano (le PID en dernière colonne) ; Get-NetTCPConnection | ss -tulpn (t TCP, u UDP, l en écoute, p programme, n numérique) |
| Tester si un port distant répond | Test-NetConnection srv-gestion -Port 443 | nc -zv srv-gestion 443 |
| Tester un service web | curl.exe -I https://intranet.sorbier.example | curl -I https://intranet.sorbier.example |
Exemple sur le serveur de gestion de Sorbier :
$ ss -tln
State Recv-Q Send-Q Local Address:Port Peer Address:Port
LISTEN 0 128 0.0.0.0:22 0.0.0.0:*
LISTEN 0 511 0.0.0.0:443 0.0.0.0:*
LISTEN 0 151 127.0.0.1:3306 0.0.0.0:*
Lecture : SSH (22) et HTTPS (443) écoutent sur toutes les interfaces (0.0.0.0) ; MySQL (3306) écoute seulement sur 127.0.0.1, la boucle locale. L'application web, qui tourne sur le même serveur, joint sa base ; une machine du réseau ne le peut pas, même sans pare-feu. C'est une bonne pratique.
Exercices
Exercice 1 sur 5 TCP ou UDP ? Réussi À revoir
Pour chaque usage, dis quel protocole de transport il utilise et pourquoi.
- Télécharger une image ISO de 5 Go.
- Demander l'adresse IP de
www.sorbier.example. - Un appel en visioconférence.
- Une connexion SSH à un serveur.
- Un poste qui cherche un serveur DHCP.
Voir la réponseMasquer la réponse de l'exercice 1
- TCP : chaque octet doit arriver, dans l'ordre ; un fichier corrompu est inutilisable.
- UDP (port 53) : une question, une réponse ; le client renvoie la question s'il n'obtient rien. DNS passe en TCP pour les grosses réponses et les transferts de zone.
- UDP : la rapidité prime ; un paquet de son en retard est inutile, il vaut mieux le perdre.
- TCP (port 22) : chaque frappe au clavier et chaque ligne affichée doit arriver intacte et dans l'ordre.
- UDP (ports 67 et 68) : le poste n'a pas encore d'adresse et doit diffuser sa demande à tout le réseau, ce que TCP ne sait pas faire.
Tu avais trouvé ?
Exercice 2 sur 5 Suivre les numéros de séquence Réussi À revoir
Un client ouvre une connexion avec le numéro de séquence initial 3000 ; le serveur choisit 9000.
- Donne les trois segments de la poignée de main (drapeaux, seq, ack).
- Le client envoie ensuite 500 octets. Quel numéro d'accusé de réception le serveur renvoie-t-il ?
- Le client envoie un SYN vers un port où aucun programme n'écoute. Que reçoit-il ? Et si un pare-feu bloque ce port en silence ?
Voir la réponseMasquer la réponse de l'exercice 2
- SYN, seq = 3000 ; SYN-ACK, seq = 9000, ack = 3001 ; ACK, seq = 3001, ack = 9001.
- Les 500 octets portent les numéros 3001 à 3500 : le serveur attend ensuite l'octet 3501, il renvoie ack = 3501.
- Port fermé : un segment RST, la connexion est refusée immédiatement (« connexion refusée »). Port filtré en silence : rien, le client renvoie son SYN plusieurs fois puis abandonne (« délai d'attente dépassé »).
Tu avais trouvé ?
Exercice 3 sur 5 Identifier les services Réussi À revoir
Une capture montre des connexions vers ces ports. Nomme le service.
22/TCP · 53/UDP · 123/UDP · 389/TCP · 445/TCP · 3389/TCP · 1812/UDP · 443/UDP
Voir la réponseMasquer la réponse de l'exercice 3
SSH · DNS · NTP · LDAP (annuaire, Active Directory) · SMB (partage de fichiers Windows) · RDP (bureau à distance) · RADIUS (authentification, par exemple du Wi-Fi d'entreprise) · HTTPS en HTTP/3 (QUIC).
Tu avais trouvé ?
Exercice 4 sur 5 Lire netstat Réussi À revoir
Sur un poste Windows de Sorbier, netstat -ano affiche (extrait) :
Proto Adresse locale Adresse distante État PID
TCP 0.0.0.0:3389 0.0.0.0:0 LISTENING 1132
TCP 192.168.10.70:51544 198.51.100.80:443 ESTABLISHED 8420
TCP 192.168.10.70:51602 192.168.10.178:445 ESTABLISHED 4
TCP 192.168.10.70:51610 192.168.10.179:443 SYN_SENT 8420
- Quel service ce poste offre-t-il au réseau ? Est-ce normal ?
- Que fait le poste avec
192.168.10.178? - Que signifie la dernière ligne ?
Voir la réponseMasquer la réponse de l'exercice 4
- Il écoute sur 3389, le bureau à distance, sur toutes ses interfaces. Sur un poste utilisateur, c'est à vérifier : si personne n'en a besoin, il faut le désactiver ou le limiter par le pare-feu aux postes du service informatique.
- Une connexion SMB (445) établie avec le serveur de fichiers : un lecteur réseau ou un partage ouvert. Le PID 4 est le noyau Windows (le client SMB).
- Le programme 8420 (le navigateur, qui a aussi la connexion HTTPS de la ligne 2) a envoyé un SYN au serveur de gestion sur le port 443 et attend toujours la réponse : le port est probablement filtré par les ACL du switch de cœur entre les deux VLAN (ou par le pare-feu du serveur), ou le serveur ne répond pas.
Tu avais trouvé ?
Exercice 5 sur 5 Écrire les règles de filtrage Réussi À revoir
Le switch de cœur de Sorbier, qui route entre les VLAN, filtre ces flux avec des ACL. Écris, sous forme de tableau (source, destination, protocole, port, action), les règles qui permettent aux postes (VLAN 10, 192.168.10.64/26) d'utiliser le DNS du serveur srv-ad (192.168.10.177), d'ouvrir les partages du serveur de fichiers (192.168.10.178) et l'application de gestion en HTTPS (192.168.10.179), puis interdisent tout le reste vers les serveurs.
Voir la réponseMasquer la réponse de l'exercice 5
| N° | Source | Destination | Protocole | Port | Action |
|---|---|---|---|---|---|
| 1 | 192.168.10.64/26 | 192.168.10.177 | UDP et TCP | 53 | Autoriser |
| 2 | 192.168.10.64/26 | 192.168.10.178 | TCP | 445 | Autoriser |
| 3 | 192.168.10.64/26 | 192.168.10.179 | TCP (et UDP si HTTP/3 est activé) | 443 | Autoriser |
| 4 | Tout | 192.168.10.176/28 | Tout | Tout | Refuser |
Les règles sont lues dans l'ordre : la règle de refus vient en dernier, sinon elle bloquerait tout. Les ACL d'un switch sont en général sans état : si l'on filtre aussi dans le sens retour (des serveurs vers les postes), il faut y autoriser explicitement les réponses (en TCP, avec le mot-clé established), alors qu'un pare-feu à état les laisse passer seul. Dans un vrai domaine Active Directory, les postes ont besoin d'autres ports vers le contrôleur de domaine (Kerberos 88, LDAP 389…) : c'est l'objet du cours Windows Server.
Tu avais trouvé ?