Pourquoi traceroute envoie des paquets UDP et non ICMP?
Selon l'Stevens (TCP/IP Illustré) le traceroute programme envoie des paquets UDP vers l'hôte de destination avec un incrémental TTL (1, 2, 3, etc) pour obtenir l'intermédiaire de houblon info de la ICMP TTL EXPIRÉ messages.
Le "destination atteint" condition est l'une des ICMP PORT UNREACHABLE message, parce que traceroute adresses un port aléatoire avec un nombre élevé (c'est -: peu probable que quelqu'un est à l'écoute)
Donc ma question est: est-il une raison technique (inconvénients, Rfc, etc.) pour utiliser les paquets UDP plutôt que d'utiliser, par exemple, de requête d'écho ICMP messages (avec l'augmentation de la TTL) et l'utilisation de la de réponse d'écho réponse que la condition de fin?
Je comprends que la réponse d'écho ICMP peut être filtré par les pare-feu ou d'autres appareils du réseau dans le milieu, mais je suppose que cela peut se produire aussi pour les paquets UDP 😉
Merci Beaucoup
Sergio
OriginalL'auteur sergico | 2012-04-25
Vous devez vous connecter pour publier un commentaire.
C'est en fait la "vieille" méthode de faire des traceroutes. Je suppose que la motivation principale était que l'envoi de la plaine des paquets UDP nécessite pas de privilèges spéciaux, comme l'envoi de paquets ICMP (raw sockets ou l'équivalent). C'est pourquoi, par exemple,
ping
est généralement setuid root, ce qui est un gros risque de sécurité.Aujourd'hui
traceroute
prend en charge le protocole ICMP et TCP paquets de sondage, de sorte que vous êtes plus susceptibles peut se faufiler à travers les pare-feu, qui sont plus susceptibles que les non déployé, sans considération. Cela signifie également quetraceroute
est aussi probable que la setuid root sur votre système. Voir sa page de man, en particulier la partie sur les méthodes disponibles: http://linux.die.net/man/8/tracerouteOriginalL'auteur ldx