Aller au contenu
Le modèle TCP/IP

Le modèle TCP/IP

100 Comprendre ⏱ 13 h 30 reseaulinuxipv4ipv6tcp

À la fin, vous saurez

  • Expliquer l'encapsulation d'une requête HTTP jusqu'au câble, couche par couche
  • Lire et calculer des adresses, des masques et des plans d'adressage IPv4 et IPv6
  • Prédire le chemin d'un paquet à partir d'une table de routage
  • Expliquer ce que la traduction d'adresses change pour les connexions entrantes et sortantes
  • Distinguer UDP et TCP, et lire les états d'une connexion TCP
  • Diagnostiquer méthodiquement un problème réseau avec ip, ss, ping, traceroute, tcpdump et curl

Prérequis

Ce cours ouvre la partie Réseau du chapitre Fondations. Il s'adresse à toute personne qui déploie ou exploite des applications et qui, face à un « connection refused » ou à un délai d'attente dépassé, ne sait pas par où commencer : développeurs, administrateurs système, profils DevOps. Il suppose l'aisance en ligne de commande du cours Linux : premiers pas, et rien de plus.

L'approche

Le réseau s'enseigne souvent par le modèle OSI, ses sept couches et ses définitions à apprendre par cœur. Ce cours prend le chemin inverse : il suit un vrai paquet, la requête GET /sante envoyée à l'API Signalements, et l'accompagne du programme qui l'écrit jusqu'au câble, puis de routeur en routeur, jusqu'au serveur qui répond. Chaque protocole apparaît au moment où le paquet en a besoin, avec les champs de ses en-têtes et les commandes Linux qui le rendent visible.

Les leçons s'appuient sur les RFC, qui font foi, sur la documentation du noyau Linux et sur des captures que vous pouvez refaire. Les exemples d'adresses utilisent les plages réservées à la documentation (192.0.2.0/24, 198.51.100.0/24, 203.0.113.0/24 en IPv4, 2001:db8::/32 en IPv6) et des plages privées, jamais des adresses réelles.

Les cours suivants de la partie Réseau (DNS en profondeur, HTTP et les API web, TLS et PKI, SSH) partent de ces bases.

Ce qu'il faut

  • Une machine Linux sur laquelle vous avez les droits sudo, de préférence une machine virtuelle jetable : plusieurs exercices créent des interfaces, des espaces de noms réseau et des règles de pare-feu.
  • Les outils iproute2 (ip, ss), iputils-ping, traceroute ou tracepath, tcpdump, netcat-openbsd et curl, presque tous présents sur Ubuntu Server.
  • Facultatif : Wireshark sur votre poste, pour ouvrir les captures faites avec tcpdump.

Les leçons

  1. Pourquoi des couches : le modèle TCP/IP, OSI, et l'encapsulation.
  2. Ethernet et ARP
  3. Les adresses IPv4
  4. Découper en sous-réseaux
  5. Le routage
  6. ICMP, ping, traceroute et la MTU
  7. La traduction d'adresses (NAT)
  8. IPv6
  9. UDP et les ports
  10. TCP : établir et fermer une connexion
  11. TCP : fiabilité, débit et congestion
  12. Diagnostiquer un problème réseau

Pour valider : le quiz (niveau 100) et le lab (niveau 200).

Plan du cours

  1. Pourquoi des couches 50 min 100 Comprendre
    Faire communiquer des machines différentes sur des réseaux différents : le découpage en couches du modèle TCP/IP, ce qu'il emprunte et refuse au modèle OSI, l'encapsulation octet par octet d'une requête GET /sante, le principe de bout en bout, et où vit la pile réseau dans Linux.
  2. Ethernet et ARP 50 min 100 Comprendre
    La couche la plus basse que l'on manipule au quotidien : la trame Ethernet et ses adresses MAC, le commutateur qui apprend, le domaine de diffusion et les VLAN, puis ARP, qui traduit une adresse IP en adresse MAC, son cache sous Linux, ses annonces et ses failles.
  3. Les adresses IPv4 55 min 100 Comprendre
    L'en-tête IPv4, l'adresse de 32 bits et sa notation, le préfixe et le masque, la fin des classes et la notation CIDR, les adresses spéciales (boucle locale, lien local, privées, documentation), l'épuisement des adresses, et ce que veut dire écouter sur 0.0.0.0 ou sur 127.0.0.1.
  4. Découper en sous-réseaux 1 h 200 Pratiquer
    Découper un bloc d'adresses IPv4 en sous-réseaux et les regrouper, calculer à la main par le binaire ou le nombre magique, bâtir un plan d'adressage à tailles variables pour Signalements, et éviter les chevauchements qui cassent le jour où l'on relie deux réseaux : RFC 1918, Docker, VPN, adresses réservées par les fournisseurs cloud.
  5. Le routage 1 h 200 Pratiquer
    Comment une machine décide où envoyer un paquet : remise directe ou par une passerelle, table de routage Linux lue ligne par ligne, règle du plus long préfixe, route par défaut, ip route get, tables multiples, ce que fait un routeur, routage asymétrique et filtrage du chemin inverse, puis le routage entre opérateurs avec BGP et ce que ses incidents ont appris.
  6. ICMP, ping, traceroute et la MTU 1 h 200 Pratiquer
    Le protocole de messages d'erreur d'IP : ce que ping et traceroute prouvent vraiment, comment le TTL dessine le chemin, ce qu'est la MTU, comment la fragmentation et la découverte du MTU du chemin fonctionnent, et le trou noir PMTU qui fait se figer une connexion SSH ou TLS quand un pare-feu bloque ICMP.
  7. La traduction d'adresses (NAT) 1 h 15 200 Pratiquer
    Pourquoi des millions de machines partagent une même adresse IPv4 publique : NAT source et masquerade, traduction des ports, table de suivi de connexion, redirection de port, NAT de l'opérateur (CGNAT), ce que le NAT casse, ce qu'il ne protège pas, et ce qu'il devient dans le cloud et sous Linux, en suivant la requête GET /sante de la box jusqu'au serveur.
  8. IPv6 1 h 30 200 Pratiquer
    Le protocole qui rend une adresse publique à chaque machine : état du déploiement en France, adresses de 128 bits et leur notation, types d'adresses, préfixes /64 et autoconfiguration, découverte des voisins, en-tête simplifié, ICMPv6 indispensable, double pile et Happy Eyeballs, et ce que la fin du NAT change pour la sécurité.
  9. UDP et les ports 1 h 10 100 Comprendre
    La couche transport et ses ports : ce qu'est une socket, le quintuplet qui identifie un échange, les ports bien connus et éphémères, puis UDP, le plus simple des protocoles de transport, ce qu'il garantit et surtout ce qu'il ne garantit pas, qui l'utilise, et pourquoi il sert aux attaques par amplification.
  10. TCP : établir et fermer une connexion 1 h 15 200 Pratiquer
    Ce que TCP garantit et ce qu'il ne garantit pas, l'en-tête TCP, la poignée de main en trois temps, les files d'attente d'un serveur, la fermeture, la différence entre « connection refused » et un délai dépassé, les états TIME-WAIT et CLOSE-WAIT, le keepalive et les attaques par inondation de SYN, observés sur des connexions réelles avec ss.
  11. TCP : fiabilité, débit et congestion 1 h 15 200 Pratiquer
    Comment TCP rend un réseau imparfait fiable et rapide : acquittements, retransmissions sur délai et rapides, SACK, contrôle de flux et fenêtres, produit débit par délai, contrôle de congestion avec CUBIC et BBR, algorithme de Nagle, et ce que tout cela change pour une application, mesuré avec ss et nstat.
  12. Diagnostiquer un problème réseau 1 h 30 200 Pratiquer
    Une méthode pour diagnostiquer un problème réseau sous Linux sans tâtonner : avancer couche par couche ou par dichotomie, lire les messages d'erreur pour ce qu'ils disent vraiment, interroger la machine avec ip, ss, nc et curl, capturer avec tcpdump, puis cinq pannes réelles de Signalements résolues pas à pas.

Sources