Réseaux · C3 Couche réseau · Chapitre 2 · 8 h
Routage et protocoles
Le datagramme IP ; table de routage et principe d'acheminement ; routage statique ; passerelle par défaut ; ICMP avec ping et traceroute ; aperçu d'IPv6 et raisons de la transition.
Le chapitre 5 a donné aux machines des adresses globales et structurées. Ce chapitre répond à la question que cette structure rendait possible, et qui est l'autre moitié du cœur du cours : comment un paquet trouve son chemin d'un bout à l'autre d'Internet, en traversant des dizaines de réseaux appartenant à des opérateurs différents ?
La réponse est d'une élégance qui mérite d'être saisie : personne ne connaît le chemin complet. Chaque routeur ne décide que d'un pas — le prochain saut — puis passe le paquet au suivant, qui refait le même calcul. Le paquet avance de proche en proche, comme un voyageur qui, à chaque carrefour, demande seulement « quelle direction pour aller là-bas ? » sans jamais connaître l'itinéraire entier. C'est ce principe local qui rend Internet extensible à l'échelle de la planète.
Le datagramme IP
L'unité de la couche réseau est le datagramme (ou paquet) IP : les données, précédées d'un en-tête IP. Les champs qui comptent pour ce chapitre :
- l'adresse source et l'adresse destination (chapitre 5) — la destination est ce que chaque routeur lit pour décider ;
- le TTL (Time To Live) : un compteur décrémenté à chaque routeur traversé. Quand il
atteint zéro, le paquet est détruit. C'est le garde-fou contre les boucles de routage : sans
lui, un paquet mal aiguillé tournerait indéfiniment. C'est aussi le mécanisme qu'exploite
traceroute, plus bas.
IP est un service « au mieux » (best effort) : il fait de son mieux pour livrer, mais ne garantit rien — un datagramme peut être perdu, dupliqué, arriver en désordre. C'est le prix de la commutation de paquets (chapitre 1), et c'est un choix délibéré : la simplicité du cœur du réseau. Rétablir la fiabilité est laissé aux extrémités, à TCP (chapitre 7). Cette division du travail — un réseau simple et faillible, une intelligence aux bords — est le principe de conception fondateur d'Internet.
La table de routage et le plus long préfixe
Chaque routeur — et chaque machine — possède une table de routage : une liste de règles de la forme « pour telle destination (un réseau/préfixe), envoie vers tel prochain saut ». À la réception d'un paquet, le routeur lit l'adresse destination et cherche la route correspondante.
Souvent, plusieurs routes correspondent. Un paquet pour 10.1.5.42 peut correspondre à la fois
à une route 10.0.0.0/8, à 10.1.0.0/16 et à 10.1.5.0/24. Laquelle choisir ? La règle est
universelle :
Règle du plus long préfixe : parmi les routes qui correspondent, on choisit la plus spécifique — celle dont le préfixe est le plus long.
Ici, /24 l'emporte sur /16, qui l'emporte sur /8. L'intuition : plus le préfixe est long,
plus la route est précise, et une route précise « connaît mieux » la destination qu'une route
générale. C'est exactement le calcul que fait l'exercice de ce chapitre, et c'est le mécanisme au
cœur de tout routeur, du plus petit au plus gros.
Quiz · 1 question
Un routeur reçoit un paquet pour 10.1.5.42. Sa table contient des routes vers 10.0.0.0/8, 10.1.0.0/16 et 10.1.5.0/24, toutes correspondant à cette destination. Laquelle applique-t-il, et selon quelle règle ?
- 10.0.0.0/8, la première route trouvée dans la table — première trouvée
- 10.1.5.0/24, la route au plus long préfixe (la plus spécifique) selon la règle du plus long préfixe — plus long préfixe
- Les trois à la fois, en dupliquant le paquet — duplication
Réponse : La règle universelle du routage est celle du PLUS LONG PRÉFIXE : parmi toutes les routes qui correspondent, le routeur choisit la plus spécifique, c'est-à-dire celle au préfixe le plus long. Ici /24 est plus précis que /16, lui-même plus précis que /8 : la route 10.1.5.0/24 gagne. L'ordre dans la table n'intervient pas (c'est la spécificité qui décide), et on ne duplique jamais le paquet : il n'y a qu'un prochain saut par paquet.
Routage statique et passerelle par défaut
Comment la table se remplit-elle ? De deux façons.
Le routage statique : un administrateur écrit les routes à la main. Simple, prévisible, adapté aux petits réseaux et aux cas figés. Son défaut : il ne s'adapte pas — si un lien tombe, la route reste dans la table et le paquet part dans le vide, jusqu'à ce qu'on corrige à la main.
La route par défaut, notée 0.0.0.0/0, est la clé de voûte. Son préfixe est le plus court
possible (zéro bit) : elle correspond donc à tout, mais, par la règle du plus long préfixe,
elle n'est choisie que si aucune autre route ne correspond. C'est le « pour tout le reste,
envoie par là ». Le prochain saut de cette route est la passerelle par défaut.
Chez vous, la passerelle par défaut est votre box. Votre ordinateur ne connaît qu'une poignée de routes (le réseau local) et une route par défaut vers la box ; tout ce qui n'est pas local part vers elle, et de là vers Internet. C'est pourquoi une passerelle mal configurée coupe tout accès extérieur tout en laissant le réseau local fonctionner — un symptôme que le chapitre 9 apprendra à diagnostiquer.
À grande échelle, écrire les routes à la main devient impossible : les routeurs échangent alors automatiquement leurs routes par des protocoles de routage dynamique (OSPF à l'intérieur d'un réseau, BGP entre opérateurs). Ils s'adaptent aux pannes en recalculant les chemins. Le détail est hors programme en L1 ; retenez qu'ils existent, et que la décision qu'ils produisent reste, à l'arrivée, la même règle du plus long préfixe.
ICMP : ping et traceroute
IP transporte les données ; ICMP transporte les messages de service du réseau — les erreurs et les diagnostics. Deux outils, que vous emploierez en TP et au chapitre 9, reposent dessus.
ping envoie un message ICMP « echo request » et attend un « echo reply ». Il répond à deux
questions : la machine est-elle joignable ? et en combien de temps ? (le RTT, la latence du
chapitre 1). C'est le premier réflexe de tout dépannage.
traceroute est plus astucieux, et il exploite le TTL vu plus haut. Il envoie des paquets avec
un TTL de 1, puis 2, puis 3, etc. Le paquet à TTL 1 est détruit par le premier
routeur, qui renvoie une erreur ICMP — révélant son adresse. Le TTL 2 atteint le deuxième
routeur, et ainsi de suite. En augmentant le TTL, traceroute cartographie le chemin saut par
saut jusqu'à la destination. C'est une illustration magnifique du routage de proche en proche : on
voit littéralement le paquet avancer d'un routeur à l'autre.
Quiz · 1 question
Comment traceroute parvient-il à révéler chaque routeur traversé sur le chemin vers une destination ?
- Il demande à la destination la liste complète des routeurs du chemin — demande à la destination
- Il envoie des paquets avec un TTL croissant (1, 2, 3…) ; chaque paquet est détruit par le routeur au rang correspondant, qui signale son adresse par un message ICMP — TTL croissant + ICMP
- Il consulte la table de routage de chaque routeur à distance — lecture des tables distantes
Réponse : traceroute exploite le TTL, décrémenté à chaque routeur. Un paquet à TTL 1 est détruit par le premier routeur, qui renvoie une erreur ICMP révélant son adresse ; TTL 2 atteint le deuxième routeur, et ainsi de suite. En augmentant le TTL, traceroute découvre les routeurs un par un, dans l'ordre. Aucune machine ne connaît le chemin complet (le routage est local et de proche en proche) et on ne lit pas les tables distantes : c'est justement pour cela que cette astuce du TTL est nécessaire.
Un aperçu d'IPv6
Le chapitre 5 l'a laissé entrevoir : les 4,3 milliards d'adresses IPv4 sont épuisées. La
réponse de fond est IPv6, qui porte les adresses à 128 bits — un espace si vaste
( adresses) qu'il est en pratique inépuisable. Une adresse IPv6 s'écrit en
hexadécimal, par blocs séparés de deux-points : 2001:db8::1.
Au-delà de la taille, IPv6 simplifie l'en-tête, intègre mieux l'autoconfiguration, et supprime le besoin de NAT — chaque machine peut de nouveau avoir une adresse unique et routable, ce qui restaure le principe de bout en bout d'origine. La transition est lente : IPv4 et IPv6 coexistent depuis des années, car changer un protocole aussi fondamental sur un réseau planétaire ne se décrète pas. En L1, retenez la raison (l'épuisement d'IPv4), la solution (128 bits) et le fait que les deux cohabitent — le détail relève des cours ultérieurs.
À vous
L'exercice met la décision d'acheminement entre vos mains. Vous implémentez le choix qu'un routeur
opère pour chaque paquet : parmi les routes qui correspondent à la destination, garder celle au
plus long préfixe. Vous voyez alors le /24 l'emporter sur le /16, le /16 sur le /8, et
la route par défaut 0.0.0.0/0 ne servir que de dernier recours — la passerelle vers Internet.
Le TP fait toucher du doigt le principe du chapitre : chaque routeur ne décide que du prochain saut, refait le même calcul, et le paquet avance de proche en proche. Personne n'a la carte complète — et c'est précisément ce qui fait tenir Internet.
Exercice de code
Implémentez la décision d'acheminement d'un routeur : parmi les routes qui correspondent à la destination, choisir celle au plus long préfixe (la plus spécifique). Observez le rôle de la route par défaut 0.0.0.0/0 — la passerelle « pour tout le reste » — et le fait que chaque routeur ne décide que du prochain saut.
Point de départ
// Un routeur reçoit un paquet, lit son adresse IP DESTINATION, et consulte sa
// TABLE DE ROUTAGE pour décider par où l'envoyer (le « prochain saut »).
//
// Chaque route dit : « pour cette destination (réseau/préfixe), va vers X ».
// La route 0.0.0.0/0 est la ROUTE PAR DÉFAUT : elle correspond à TOUT — c'est
// « pour tout le reste, envoie à la passerelle ».
const table = [
{ reseau: "10.0.0.0", prefixe: 8, saut: "interface locale A" },
{ reseau: "10.1.0.0", prefixe: 16, saut: "routeur R2" },
{ reseau: "10.1.5.0", prefixe: 24, saut: "routeur R3" },
{ reseau: "0.0.0.0", prefixe: 0, saut: "passerelle Internet" }, // défaut
];
function versEntier(ip) {
return ip.split(".").reduce((n, o) => (n * 256 + Number(o)) >>> 0, 0);
}
function masque(prefixe) {
return prefixe === 0 ? 0 : (0xffffffff << (32 - prefixe)) >>> 0;
}
// Le paquet correspond-il à cette route ? (destination ET masque == réseau)
function correspond(dst, route) {
return (versEntier(dst) & masque(route.prefixe)) >>> 0 ===
(versEntier(route.reseau) & masque(route.prefixe)) >>> 0;
}
// ── À VOUS : la décision d'acheminement ─────────────────────────────────────
// Parmi TOUTES les routes qui correspondent, choisir celle au préfixe le PLUS
// LONG (la plus SPÉCIFIQUE). C'est la règle du plus long préfixe.
function acheminer(dst) {
let meilleure = null;
for (const route of table) {
if (correspond(dst, route)) {
// à compléter : garder 'route' si son préfixe est plus long que celui
// de 'meilleure' (ou si meilleure est null)
}
}
return meilleure ? meilleure.saut : "INJOIGNABLE";
}
// ── Vérification ────────────────────────────────────────────────────────────
const tests = ["10.1.5.42", "10.1.9.3", "10.9.9.9", "8.8.8.8"];
for (const dst of tests) {
console.log(dst.padEnd(12) + " -> " + acheminer(dst));
}
Solution
function acheminer(dst) {
let meilleure = null;
for (const route of table) {
if (correspond(dst, route)) {
if (!meilleure || route.prefixe > meilleure.prefixe) {
meilleure = route; // plus spécifique = préfixe plus long
}
}
}
return meilleure ? meilleure.saut : "INJOIGNABLE";
}
// ── Résultats ───────────────────────────────────────────────────────────────
// 10.1.5.42 -> routeur R3 : correspond à /8, /16 ET /24 ; le /24 gagne
// (le plus spécifique).
// 10.1.9.3 -> routeur R2 : correspond à /8 et /16 ; le /16 gagne.
// 10.9.9.9 -> interface A : ne correspond qu'à /8.
// 8.8.8.8 -> passerelle : ne correspond qu'à la route par défaut /0.
//
// ── Ce que l'exercice enseigne ──────────────────────────────────────────────
//
// 1. Le routage est LOCAL et RÉPÉTÉ. Chaque routeur ne décide QUE du prochain
// saut, pas du chemin entier. Le paquet est relayé de proche en proche,
// chaque routeur refaisant ce même calcul. Personne ne connaît la route
// complète — c'est ce qui rend Internet extensible.
//
// 2. La règle du PLUS LONG PRÉFIXE : quand plusieurs routes correspondent, on
// prend la plus SPÉCIFIQUE (préfixe le plus long). /24 l'emporte sur /16,
// qui l'emporte sur /8. C'est la règle universelle d'une table de routage.
//
// 3. La ROUTE PAR DÉFAUT (0.0.0.0/0) correspond à tout, avec le préfixe le
// plus court : c'est donc le dernier recours, « pour tout ce que je ne
// connais pas, envoie à la passerelle ». Chez vous, la passerelle par
// défaut est votre box — d'où tout part vers Internet.
//
// 4. Ce routage est STATIQUE (la table est écrite à la main). À grande
// échelle, les routeurs échangent leurs routes par des protocoles de
// routage DYNAMIQUE (OSPF, BGP) — hors programme, mais la décision par
// plus long préfixe reste la même.
Ce que la suite en fait
La couche réseau est complète : vous savez adresser (chapitre 5) et acheminer (ce chapitre). Mais IP est « au mieux » — il perd des paquets, les mélange, les duplique, sans jamais s'en soucier. Aucune application sérieuse ne peut vivre avec cela telle quelle.
Le chapitre 7, la couche transport, ajoute l'intelligence aux extrémités. TCP y rétablit la fiabilité — détection des pertes, retransmission, remise en ordre — que la couche liaison (chapitre 4) ne faisait que détecter sans corriger, et que IP ne fait pas du tout. On y verra aussi UDP, son opposé volontairement minimal, et les ports, qui permettent à plusieurs applications de partager une même adresse IP.
À retenir
Flashcards · 4 cartes
- Selon quel principe un paquet traverse-t-il Internet, et qui connaît le chemin complet ?
- De proche en proche : chaque routeur ne décide que du PROCHAIN SAUT, en lisant l'adresse destination du paquet, puis le passe au routeur suivant qui refait le même calcul. PERSONNE ne connaît le chemin complet — c'est ce qui rend Internet extensible. Le TTL, décrémenté à chaque saut, détruit le paquet s'il atteint zéro, évitant les boucles infinies.
- Qu'est-ce que la règle du plus long préfixe, et à quoi sert la route par défaut ?
- Quand plusieurs routes correspondent à une destination, le routeur choisit la plus SPÉCIFIQUE — celle au préfixe le plus long (/24 avant /16 avant /8). La route par défaut 0.0.0.0/0 a le préfixe le plus court : elle correspond à tout, mais n'est choisie qu'en dernier recours (« pour tout le reste »). Son prochain saut est la passerelle par défaut — chez vous, la box.
- Pourquoi dit-on qu'IP est « au mieux », et quelle conséquence cela a-t-il ?
- IP fait de son mieux pour livrer mais ne garantit RIEN : un datagramme peut être perdu, dupliqué ou arriver en désordre (prix de la commutation de paquets). C'est un choix délibéré : garder le cœur du réseau simple. Rétablir la fiabilité est laissé aux extrémités, à TCP (chapitre 7). Ce partage — réseau simple, intelligence aux bords — est le principe fondateur d'Internet.
- Comment fonctionnent ping et traceroute, et sur quel protocole reposent-ils ?
- Tous deux reposent sur ICMP (messages de service du réseau). ping envoie un « echo request » et mesure joignabilité et RTT (latence). traceroute envoie des paquets à TTL croissant (1, 2, 3…) : chaque paquet est détruit par le routeur au rang correspondant, qui révèle son adresse par une erreur ICMP — cartographiant le chemin saut par saut. C'est l'illustration directe du routage de proche en proche.