El tipo de paquete que se envía varía según la implementación. De manera predeterminada, Windows tracert
usa ICMP y tanto Mac OS X como Linux traceroute
usan UDP. No tengo máquinas BSD o Solaris ni ningún otro sistema operativo disponible para verificar, pero la página del manual para la versión de Mac OS X menciona que su procedencia es BSD 4.3.
Las versiones de Mac y Linux que tengo ofrecen la posibilidad de elegir una variedad de protocolos diferentes, incluidos los paquetes ICMP, TCP, UDP y GRE. Se pueden especificar otros protocolos por su nombre o número, pero traceroute no sabe nada sobre cómo funcionan otros protocolos. Simplemente los envía ciegamente.
También pueden cambiar la carga útil y los puertos de origen y destino para evitar firewalls o descubrir qué enrutador a lo largo de la ruta deja caer paquetes de cierto tamaño.
Todas las versiones de traceroute se basan en respuestas ICMP tipo 11 (Tiempo excedido) de cada salto a lo largo de la ruta. Si su firewall está bloqueando las respuestas ICMP tipo 11, traceroute no funcionará. Estos paquetes son entrantes, no salientes.
El ICMP tipo 30 está específicamente designado para traceroute y está etiquetado como "Solicitud de información". No he podido encontrar ningún lugar donde realmente se use esto. La página de manual para las versiones de Mac OS X y Linux dice que -I
enviará ICMP tipo 8 (solicitud de eco). Wikipedia dice que Windows tracert
también usa solicitudes de eco ICMP. ICMP tipo 30 o tipo 8 son paquetes salientes, no entrantes.
El ICMP tipo 0 (respuesta de eco) puede volver como el último paquete cuando el TTL es exactamente igual al número de saltos. Traceroute sabrá que ha terminado cuando reciba uno de estos. Este es un paquete entrante.
Los paquetes TCP SYN provocarán un RST
paquete o un SYN ACK
paquete en respuesta cuando lleguen a su destino. Si recibe un SYN ACK
paquete, es cortés seguir con un RST
paquete para no dejar una conexión entreabierta en el servidor.
Es posible obtener respuestas ICMP tipo 3 código 4 en lugar de respuestas ICMP tipo 11 si envía un paquete grande con el conjunto de indicadores "No fragmentar", sin embargo, es probable que esto solo le permita encontrar el salto con la MTU más pequeña . Normalmente solo obtendrá este tipo de respuesta de un salto a lo largo de la ruta. No todos ellos.