TCP vs UDP : deux philosophies du transport réseau
Quand des données circulent sur Internet, elles ne voyagent pas seules.
Elles utilisent un protocole de transport, dont le rôle est de décider comment ces données sont envoyées, reçues et gérées.
Les deux protocoles de transport majeurs sont TCP et UDP.
Ils remplissent le même rôle général, mais avec des philosophies radicalement différentes.
Le rôle de la couche transport
La couche transport se situe entre :
- IP, qui sait où envoyer les données
- les applications, qui savent quoi envoyer
Son rôle est de :
- acheminer les données vers la bonne application (ports)
- gérer la communication entre deux machines
- décider du niveau de fiabilité
TCP et UDP sont deux réponses différentes à cette problématique.
TCP : la fiabilité avant tout
TCP (Transmission Control Protocol) est un protocole orienté connexion.
Avant d’échanger des données, les deux machines établissent une connexion logique.
TCP part du principe suivant :
Il vaut mieux arriver plus lentement que mal arriver.
Comment TCP fonctionne concrètement
TCP commence par établir une connexion grâce à un mécanisme appelé 3-way handshake.
Une fois la connexion établie, TCP :
- découpe les données en segments
- numérote chaque segment
- attend des confirmations de réception
- retransmet les données perdues
- remet les données dans l’ordre à l’arrivée
Grâce à ces mécanismes, TCP garantit que :
- les données arrivent
- elles arrivent complètes
- elles arrivent dans le bon ordre
Quand utilise-t-on TCP ?
TCP est utilisé quand :
- la fiabilité est indispensable
- la perte de données est inacceptable
Exemples typiques :
- navigation web (HTTP/HTTPS)
- email (SMTP, IMAP)
- transfert de fichiers
- connexions SSH
Dans ces cas, perdre des données serait bien plus grave qu’un léger ralentissement.
UDP : la rapidité avant tout
UDP (User Datagram Protocol) adopte une approche totalement différente.
Il est sans connexion, ce qui signifie qu’il n’y a aucun échange préalable avant l’envoi des données.
UDP part du principe inverse de TCP :
Il vaut mieux être rapide que parfait.
Comment UDP fonctionne
Avec UDP :
- les données sont envoyées immédiatement
- aucun accusé de réception n’est attendu
- aucune retransmission n’est effectuée
- l’ordre des paquets n’est pas garanti
Chaque message est indépendant des autres.
UDP se contente d’envoyer, sans se préoccuper du résultat.
Quand utilise-t-on UDP ?
UDP est utilisé quand :
- la vitesse est critique
- une petite perte de données est acceptable
- la latence doit être minimale
Exemples courants :
- streaming vidéo
- jeux en ligne
- appels audio/vidéo
- DNS
Dans ces cas, recevoir l’information rapidement est plus important que la recevoir parfaitement.
Deux philosophies opposées
La différence entre TCP et UDP n’est pas technique, elle est philosophique.
TCP cherche à garantir la qualité du message.
UDP cherche à garantir la rapidité de la communication.
TCP contrôle, vérifie et corrige.
UDP envoie et passe à la suite.
Comparaison simple
TCP est comme un courrier recommandé :
on vérifie que chaque lettre arrive, quitte à attendre.
UDP est comme une discussion orale :
si un mot est perdu, on continue à parler.
Et la sécurité dans tout ça ?
TCP et UDP n’intègrent pas directement de sécurité.
Le chiffrement et l’authentification sont assurés par d’autres protocoles, comme TLS.
Cependant :
- TCP est plus facile à filtrer et à analyser
- UDP est plus difficile à inspecter
- les attaques par déni de service exploitent souvent UDP
Le choix du protocole a donc aussi un impact en cybersécurité.
Pourquoi les deux existent encore aujourd’hui
Aucun des deux n’est meilleur que l’autre dans l’absolu.
Ils répondent à des besoins différents.
Sans TCP, Internet serait instable.
Sans UDP, Internet serait lent.
Leur coexistence est ce qui permet à Internet d’être à la fois fiable et rapide.
Résumé à retenir
- TCP privilégie la fiabilité
- UDP privilégie la rapidité
- TCP garantit l’ordre et la livraison
- UDP n’offre aucune garantie
- Le choix dépend de l’usage
En bref
TCP et UDP sont deux réponses différentes au même problème : transporter des données sur un réseau.