TCP, UDP et sockets
Garanties de TCP, légèreté d’UDP, sockets et ports.
Objectifs
À la fin de cette leçon, vous saurez :
- expliquer ce que TCP garantit et ce qu'UDP assume ;
- définir socket, connexion et port ;
- situer ces notions entre IP (chapitre précédent) et HTTP (chapitre suivant).
IP livre des paquets, sans promesses
Le chapitre réseau l'a montré : IP achemine des paquets, mais rien ne garantit leur ordre ni leur arrivée. Pour construire des applications, il faut un protocole de transport par-dessus.
TCP : la conversation fiable
TCP établit une connexion et garantit :
- la livraison des données (retransmission en cas de perte) ;
- l'ordre des octets ;
- le contrôle de flux (ne pas noyer le destinataire).
client serveur
│ ─── SYN (je veux parler) ──→ │ ouverture de connexion
│ ←── SYN-ACK ─────────────── │
│ ─── ACK ───────────────────→ │ connexion établie
│ ←────── données ───────────→ │ échange fiable et ordonné
│ ─── FIN ───────────────────→ │ fermeture propre
HTTP, SSH, PostgreSQL circulent sur TCP : tout ce qui exige que « chaque octet arrive, dans l'ordre ».
UDP : le courrier rapide
UDP n'ouvre aucune connexion : il jette des datagrammes sur le réseau, sans accusé de réception ni ordre. En échange : overhead minimal et latence minimale.
Usages : DNS (une question, une réponse — inutile d'ouvrir une session), streaming vidéo (mieux vaut perdre une image que retarder le flux), jeux en ligne.
| TCP | UDP | |
|---|---|---|
| Connexion | oui (SYN/ACK) | non |
| Ordre garanti | oui | non |
| Perte gérée | retransmission | abandon |
| Usages web | HTTP, BDD | DNS, streaming |
Socket et port
Une socket est le point de terminaison d'une communication dans un processus : l'objet logiciel qui lit et écrit sur le réseau.
Un port est un numéro (0–65535) attaché à la socket : il permet à un même serveur de servir plusieurs services distincts.
processus Node
↓
socket liée au port 3000
↓
TCP 192.168.1.10:3000 ← les paquets arrivent ici
La paire complète identifie une connexion : IP source:port source ↔ IP destination:port destination. C'est pourquoi dix navigateurs peuvent parler simultanément au même serveur web : chaque client a son port source aléatoire.
Ports conventionnels à connaître : 22 (SSH), 80 (HTTP), 443 (HTTPS), 5432 (PostgreSQL).
Exercice
- Pourquoi DNS utilise-t-il UDP alors que HTTP utilise TCP ?
- Deux services peuvent-ils écouter simultanément sur le port 3000 de la même machine ? Et sur 3000 et 3001 ?
- Dessinez le schéma complet d'une requête web : navigateur → HTTP → TCP → IP → serveur.
Résumé
- Transport = garanties au-dessus d'IP ; TCP fiable et ordonné, UDP léger.
- Socket = extrémité dans un processus ; port = son numéro.
- Une connexion = quadruplet adresses+ports ; plusieurs clients coexistent grâce aux ports sources.
Correction disponibleCherchez d’abord par vous-même.Voir la correction
Correction
Réponses détaillées
Question 1. Une résolution DNS est une transaction unique courte : si la réponse est perdue, on redemande. L'overhead d'établissement de connexion TCP serait du gaspillage. HTTP transporte souvent beaucoup de données avec exigence d'intégrité : TCP s'impose.
Question 2. Non pour deux sockets en écoute sur le même port de la même interface (conflit d'adresse déjà utilisée) — c'est l'erreur EADDRINUSE que vous rencontrerez. Oui pour 3000 et 3001 : ce sont deux portes distinctes.
Question 3. Schéma attendu :
navigateur
↓ "GET / HTTP/1.1" (application)
encapsulé dans un segment TCP (transport)
encapsulé dans un paquet IP (réseau)
routé via passerelle/NAT (réseau local→Internet)
serveur : dépile IP → TCP → remonte à l'application sur le port 443/80