Comment fonctionne traceroute, et quel rôle joue le champ TTL ?
Réponse courte
Traceroute découvre les routeurs entre vous et une destination en exploitant le champ TTL. Il envoie des paquets avec TTL=1, puis 2, puis 3, et ainsi de suite. Chaque routeur décrémente le TTL ; quand le TTL atteint zéro, ce routeur rejette le paquet et renvoie un message ICMP Time Exceeded, révélant son adresse. En augmentant le TTL, traceroute cartographie chaque saut dans l'ordre jusqu'à atteindre la destination.
Traceroute répond à « quel chemin emprunte mon trafic pour atteindre cet hôte, et où est-il lent ou rompu ? ». C'est un détournement astucieux d'un champ qui existe pour empêcher les boucles de routage : le TTL. Le comprendre prouve que vous comprenez le comportement des routeurs et d'ICMP.
L'astuce du TTL
Chaque paquet IP porte une valeur Time To Live. Son vrai rôle est la prévention des boucles : chaque routeur qui transmet un paquet décrémente le TTL de 1, et quand le TTL atteint 0, le routeur rejette le paquet et renvoie un message ICMP Time Exceeded à la source.
Traceroute détourne cela volontairement :
- Envoyer une sonde avec TTL = 1. Le premier routeur le décrémente à 0, le rejette et répond par Time Exceeded — vous connaissez maintenant le saut 1.
- Envoyer une sonde avec TTL = 2. Elle survit au premier routeur et meurt au deuxième, qui répond — vous connaissez maintenant le saut 2.
- Continuer à incrémenter. Chaque tour révèle le routeur suivant du chemin, dans l'ordre, avec le temps d'aller-retour.
Atteindre la destination
Les sauts intermédiaires répondent par Time Exceeded. La destination finale est détectée différemment : selon la variante, elle répond par ICMP Echo Reply (sondes ICMP), ICMP Port Unreachable (sondes UDP classiques vers un port élevé) ou un TCP SYN-ACK/RST (sondes TCP). Cette réponse différente est la façon dont traceroute sait qu'il est arrivé.
Lire la sortie
Les astérisques (* * *) signifient aucune réponse pour ce saut — souvent un routeur configuré pour ne pas envoyer d'ICMP, un pare-feu rejetant les sondes ou une limitation de débit. Ils ne signifient pas nécessairement un chemin rompu. Un temps variable ou un saut soudain peut indiquer une congestion ou une liaison longue distance.
Les recruteurs attendent le mécanisme du TTL croissant, la réponse ICMP Time Exceeded, et idéalement pourquoi certains sauts n'affichent aucune réponse.
Questions de suivi probables
- Pourquoi certains sauts affichent-ils des astérisques (aucune réponse) dans la sortie de traceroute ?
- Comment la destination est-elle détectée différemment des sauts intermédiaires ?
- Quelle est la différence entre traceroute basé sur ICMP, UDP et TCP ?