Architecture des réseaux · Étape 05

Compare TCP et UDP sur une communication réelle

Fais fonctionner un serveur web en TCP et un échange de messages en UDP, puis capture ce qui distingue les deux transports.

Durée indicative · ~1 hNiveau débutantPrérequis conseillé · Laboratoire routé de la leçon 4Pratique · TP
L’idée reçue

« TCP est le protocole des sites web et UDP celui du streaming. »

Ces exemples sont utiles, mais insuffisants. La vraie différence porte sur la connexion, l’ordre, la retransmission et le coût de contrôle. Tu vas l’observer.

Recrée le laboratoire routé de la leçon 4 et conserve les adresses suivantes :

pc1 : 10.10.10.11
r1  : 10.10.10.1 / 10.20.20.1
pc2 : 10.20.20.12

Installe les outils :

sudo apt update
sudo apt install -y tcpdump curl netcat-openbsd python3

01Lancer un service TCP

Expérience 1

Fais de pc2 un serveur HTTP

Dans un premier terminal :

sudo ip netns exec pc2 python3 -m http.server 8080 --bind 10.20.20.12

Dans un second terminal, vérifie l’écoute :

sudo ip netns exec pc2 ss -lntp
Le processus Python écoute sur l’adresse 10.20.20.12 et le port TCP 8080.

02Capturer la connexion TCP

Expérience 2

Observe le début de la conversation

Dans un terminal de capture :

sudo ip netns exec r1 tcpdump -ni any 'tcp port 8080'

Depuis pc1 :

sudo ip netns exec pc1 curl -v http://10.20.20.12:8080/
Observe
10.10.10.11.random > 10.20.20.12.8080: Flags [S]
10.20.20.12.8080 > 10.10.10.11.random: Flags [S.]
10.10.10.11.random > 10.20.20.12.8080: Flags [.]
Comprends SYN, SYN-ACK, ACK

Avant les données HTTP, TCP établit une connexion avec un three-way handshake. Les deux extrémités synchronisent leur état et leurs numéros de séquence. TCP pourra ensuite détecter les pertes, remettre les données dans l’ordre et retransmettre si nécessaire.

03Lire les ports

Expérience 3

Distingue client et serveur

Le serveur utilise le port connu 8080. Le client choisit un port source temporaire. La paire suivante identifie une extrémité de communication :

adresse IP + protocole + port

Avec les deux extrémités, le système distingue cette connexion de toutes les autres.

04Créer un échange UDP

Expérience 4

Écoute sur pc2 sans établir de connexion

Arrête le serveur HTTP avec Ctrl+C. Dans un premier terminal :

sudo ip netns exec pc2 nc -u -l 9999

Dans un terminal de capture :

sudo ip netns exec r1 tcpdump -ni any 'udp port 9999'

Depuis pc1 :

printf 'bonjour UDP
' | sudo ip netns exec pc1 nc -u -w 1 10.20.20.12 9999
Le message arrive sans handshake préalable. UDP transporte un datagramme, mais ne garantit pas à lui seul la livraison, l’ordre ou la retransmission.

05Comparer les propriétés

PropriétéTCPUDP
ÉtablissementConnexion préalablePas de connexion
OrdreConservéNon garanti
PerteDétection et retransmissionÀ gérer par l’application si nécessaire
Unité couranteSegmentDatagramme
Coût de contrôlePlus élevéPlus faible

Le choix ne se résume pas à « rapide contre fiable ». Une application temps réel peut préférer une information récente à la retransmission d’une information devenue inutile. Une application de transfert de fichier exige au contraire l’intégrité et l’ordre.

Défi autonome

Prouve la différence sans regarder le filtre

  1. capture successivement les échanges TCP et UDP dans deux fichiers .pcap ;
  2. ouvre-les avec Wireshark si disponible ;
  3. identifie le handshake dans le premier ;
  4. montre son absence dans le second ;
  5. rédige deux besoins où TCP est préférable et deux où UDP est pertinent.

06Nettoyer

sudo ip netns del pc1
sudo ip netns del pc2
sudo ip netns del r1

Ce que tu retiens

TCP établit et maintient un état de connexion afin de fournir ordre, contrôle et retransmission. UDP envoie des datagrammes sans cette mécanique. Les deux utilisent des ports pour remettre les données à la bonne application.

0
Ta progression

Chargement de l’état… Se connecter pour synchroniser.