22 - TCP/IP
Mise en situation
Quand vous saisissez une adresse dans votre navigateur, votre requête traverse plusieurs équipements réseau avant d’atteindre le serveur, puis la page web fait le chemin inverse. Tout cela se passe en quelques millisecondes. Comment les données sont-elles organisées pour réussir ce voyage ? C’est le rôle des protocoles réseau, et en particulier du modèle TCP/IP.
Pourquoi un modèle en couches ?
Faire communiquer deux machines, c’est résoudre plein de problèmes : comment transmettre les bits sur le câble ? Comment trouver le destinataire à travers plusieurs réseaux ? Comment vérifier que rien n’a été perdu en route ? Comment comprendre le message ?
Principe. On découpe ces problèmes en couches : chaque couche résout un problème bien délimité et s’appuie sur les services de la couche du dessous.
Avantage. Chaque couche peut évoluer indépendamment des autres. On peut changer de Wi-Fi à Ethernet sans rien changer à la façon dont une page web est demandée.
Les quatre couches du modèle TCP/IP
Le modèle TCP/IP organise la communication en quatre couches, du plus proche de l’utilisateur au plus proche du matériel.
| Couche | Rôle | Protocoles typiques |
|---|---|---|
| 4. Application | protocoles utilisés par les logiciels | HTTP, HTTPS, DNS, SMTP |
| 3. Transport | fiabilité et acheminement de bout en bout | TCP, UDP |
| 2. Internet | adressage et routage entre réseaux | IP (IPv4, IPv6) |
| 1. Accès réseau | transmission physique sur le support | Ethernet, Wi-Fi |
Ce que fait chaque couche
- Accès réseau : comment envoyer des bits sur le câble Ethernet ou les ondes Wi-Fi (carte réseau, adresses MAC).
- Internet : comment trouver la machine destinataire à travers plusieurs réseaux (adresses IP, routeurs).
- Transport : comment découper le message en petits morceaux, les numéroter, vérifier qu’ils arrivent (TCP) ou non (UDP).
- Application : ce que veut faire le logiciel (afficher une page web, envoyer un mail, regarder une vidéo…).
Les protocoles « parlent » horizontalement (entre couches de même niveau sur les deux machines) mais passent verticalement (chaque couche rend service à celle du dessus).
TCP versus UDP
À la couche Transport, deux protocoles très différents cohabitent :
TCP (Transmission Control Protocol) garantit que les données arrivent dans l’ordre et sans perte. Il découpe le message en morceaux numérotés et attend un accusé de réception pour chacun. Si un morceau est perdu, il est retransmis. C’est le protocole utilisé par HTTP, par les e-mails, par les transferts de fichiers.
UDP (User Datagram Protocol) envoie les données sans vérification : pas de numérotation, pas d’accusé de réception. C’est plus rapide, mais on accepte de perdre quelques données. C’est le protocole utilisé par les appels vidéo et les jeux en ligne, où la vitesse prime sur la fiabilité.
Chaque programme est identifié par un numéro de port : 80 pour HTTP, 443 pour HTTPS, 53 pour DNS. Ce numéro permet à la machine de savoir à quel programme remettre les données reçues.
Le protocole du bit alterné
Comment un émetteur peut-il s’assurer qu’un paquet est bien arrivé alors que le réseau peut en perdre ? Le protocole du bit alterné est la réponse la plus simple ; TCP en utilise une version élaborée.
- L’émetteur envoie un paquet accompagné d’un bit de contrôle, 0 pour le premier paquet.
- Le récepteur renvoie un accusé de réception (acknowledgement, ACK) portant le même bit.
- À la réception de cet accusé, l’émetteur envoie le paquet suivant avec le bit inversé (1, puis 0, puis 1…).
- Si l’accusé n’arrive pas avant la fin d’un délai (le temporisateur), l’émetteur renvoie le même paquet, avec le même bit.
Le bit permet de distinguer un nouveau paquet d’une répétition : si le récepteur reçoit deux fois de suite un paquet portant le bit 0, il sait que c’est un doublon (l’accusé de réception s’était perdu), il l’ignore et renvoie l’accusé.
Exemple 1 : perte d’un paquet.
| Émetteur | Réseau | Récepteur |
|---|---|---|
| envoie A, bit 0 | → | reçoit A, bit 0 ; renvoie ACK 0 |
| reçoit ACK 0 ; envoie B, bit 1 | → perdu | |
| délai écoulé ; renvoie B, bit 1 | → | reçoit B, bit 1 ; renvoie ACK 1 |
| reçoit ACK 1 ; envoie C, bit 0 | → | reçoit C, bit 0 ; renvoie ACK 0 |
Exemple 2 : perte d’un accusé de réception.
| Émetteur | Réseau | Récepteur |
|---|---|---|
| envoie A, bit 0 | → | reçoit A, bit 0 ; renvoie ACK 0 |
| ← perdu | ||
| délai écoulé ; renvoie A, bit 0 | → | reçoit A, bit 0 : doublon, ignoré ; renvoie ACK 0 |
| reçoit ACK 0 ; envoie B, bit 1 | → | reçoit B, bit 1 ; renvoie ACK 1 |
Dans les deux cas, chaque paquet finit par arriver une seule fois et dans l’ordre. Le prix à payer : l’émetteur attend l’accusé avant d’envoyer le paquet suivant, ce qui limite le débit. TCP généralise l’idée avec des numéros de séquence sur 32 bits et l’envoi de plusieurs paquets avant le premier accusé.
L’encapsulation : des enveloppes successives
Lorsqu’un logiciel envoie un message, chaque couche ajoute son propre en-tête autour du contenu reçu de la couche supérieure. C’est l’encapsulation. À l’arrivée, la machine destinataire fait l’opération inverse (la désencapsulation), couche par couche.
Image à retenir. On enferme une lettre dans une enveloppe, qu’on glisse dans un carton, qu’on met dans un conteneur. À l’arrivée, on ouvre le conteneur, puis le carton, puis l’enveloppe.
| Couche | En-tête ajouté | Nom du résultat | Identifiant clé |
|---|---|---|---|
| Application | en-tête HTTP (ou autre) | données | nom de domaine, protocole |
| Transport | en-tête TCP ou UDP | segment | port (ex. 80, 443) |
| Internet | en-tête IP | paquet | adresse IP |
| Accès réseau | en-tête Ethernet | trame | adresse MAC |
DNS : l’annuaire d’Internet
Vous tapez google.com dans votre navigateur. Mais votre ordinateur a besoin d’une adresse IP pour contacter le serveur. C’est le rôle du DNS de faire la conversion.
DNS (Domain Name System) : un service distribué qui traduit les noms de domaine (
google.com) en adresses IP (142.250.179.110), et inversement.
URL et HTTP
Structure d’une URL
Une URL (Uniform Resource Locator) est l’adresse complète d’une ressource sur le web :
- Protocole :
HTTPouHTTPS(version sécurisée). - Nom de domaine : résolu en IP par le DNS.
- Chemin : la ressource demandée sur le serveur.
- Paramètres (facultatif) : informations supplémentaires.
HTTP : le protocole du Web
HTTP (HyperText Transfer Protocol) est le protocole d’application utilisé par les navigateurs pour demander des pages web aux serveurs.
Un échange HTTP suit le schéma requête → réponse :
- le navigateur envoie une requête au serveur (verbe
GETpour demander une page,POSTpour envoyer des données…) ; - le serveur renvoie une réponse contenant un code de statut (
200= OK,404= page introuvable) et le contenu de la page.
HTTPS est la version sécurisée de HTTP : la communication est chiffrée de bout en bout. C’est aujourd’hui la norme.
Résumé
- Le modèle TCP/IP organise la communication en 4 couches : accès réseau, internet, transport, application.
- Chaque couche résout un problème bien délimité et s’appuie sur les services de la couche du dessous.
- L’encapsulation consiste à ajouter, à chaque couche, un en-tête autour du contenu reçu. La désencapsulation fait l’opération inverse à l’arrivée.
- À la couche Transport : TCP est fiable (numérotation, accusés), UDP est rapide sans garantie.
- Le DNS traduit les noms de domaine en adresses IP. Une URL se compose d’un protocole, d’un nom de domaine, d’un chemin et de paramètres.
- HTTP(S) est le protocole du Web : requête (
GET,POST) → réponse (code de statut + contenu). HTTPS chiffre la communication de bout en bout.