Le type de paquet envoyé diffère selon l'implémentation. Par défaut, Windows tracert
utilise ICMP et Mac OS X et Linux traceroute
utilisent UDP. Je n'ai pas de machines BSD ou Solaris ni aucun autre système d'exploitation à vérifier, mais la page de manuel de la version Mac OS X mentionne que sa provenance est BSD 4.3.
Les versions Mac et Linux que j'ai offrent la possibilité de choisir une variété de protocoles différents, y compris les paquets ICMP, TCP, UDP et GRE. D'autres protocoles peuvent être spécifiés par leur nom ou leur numéro, mais traceroute ne sait rien du fonctionnement des autres protocoles. Cela les envoie aveuglément.
Ils peuvent également à la fois modifier la charge utile et les ports source et de destination afin d'éviter les pare-feu ou découvrir quel routeur le long du chemin supprime des paquets d'une certaine taille.
Toutes les versions de traceroute reposent sur les réponses ICMP de type 11 (dépassement de temps) de chaque saut le long de la route. Si les réponses ICMP type 11 sont bloquées par votre pare-feu, traceroute ne fonctionnera pas. Ces paquets sont entrants, pas sortants.
Le type ICMP 30 est spécifiquement désigné pour traceroute et est étiqueté comme "demande d'information". Je n'ai pu trouver nulle part où cela est réellement utilisé. La page de manuel pour les versions Mac OS X et Linux indique que -I
va envoyer ICMP type 8 (demande d'écho). Wikipedia indique que Windows tracert
utilise également les demandes d'écho ICMP. ICMP type 30 ou type 8 sont des paquets sortants, pas entrants.
Le type ICMP 0 (réponse d'écho) peut revenir comme le tout dernier paquet lorsque le TTL est exactement égal au nombre de sauts. Traceroute saura qu'elle est terminée lorsqu'elle en recevra une. Il s'agit d'un paquet entrant.
Les paquets TCP SYN provoquent un RST
paquet ou un SYN ACK
paquet en réponse lorsqu'ils atteignent leur destination. Si vous recevez un SYN ACK
paquet, il est poli de suivre avec un RST
paquet afin de ne pas laisser une connexion semi-ouverte sur le serveur.
Il est possible d'obtenir des réponses ICMP de type 3 de code 4 au lieu des réponses ICMP de type 11 si vous envoyez un gros paquet avec l'indicateur "Ne pas fragmenter", mais cela ne vous permettra probablement de trouver le saut qu'avec le plus petit MTU . Normalement, vous n'obtiendrez ce type de réponse que d'un bond le long de l'itinéraire. Pas tous.