Traceroute se implementa mediante un truco inteligente que involucra el encabezado TTL en IP. Este es el “Tiempo de vida” de un paquete IP. El nombre puede ser confuso. No es una medida temporal, sino un número que representa la cantidad de saltos que puede tomar un paquete antes de que se descarte. En la mayoría de las aplicaciones, un paquete IP se origina con un TTL de 255. Cada enrutador (o dispositivo que actúa como un enrutador) que el paquete transita resta 1 del TTL. Nunca he visto una ruta válida en Internet que incluso se acerque a 255 saltos, por lo que ese número debería ser suficiente para la actividad normal. Sin embargo, si se produce un bucle de enrutamiento, el TTL evita que los paquetes reboten para siempre y obstruyan los enlaces. Una vez que un paquete ha rebotado lo suficiente, su TTL caerá a cero y se caerá.
Un efecto secundario de este proceso, y la clave para traceroute es que cuando se descarta un paquete, el dispositivo que lo descarta envía un mensaje “ICMP TTL caducado en tránsito” al originador del paquete. (Es posible deshabilitar este comportamiento que hace que los dispositivos aparezcan como desconocidos en traceroute).
Traceroute utiliza esta función enviando paquetes hacia el destino con TTL crecientes. El primer paquete se envía con un TTL de 1. Esto significa que el primer enrutador descartará el paquete y enviará un mensaje ICMP. Este mensaje ICMP tendrá la IP de origen del enrutador que descartó el paquete, por lo que traceroute aprende la IP del primer enrutador.
- ¿Qué es el acceso remoto en redes?
- ¿Qué es el protocolo de Beijing sobre seguridad de la aviación?
- ¿Qué protocolo se utiliza en actividades relacionadas con el correo electrónico?
- ¿Por qué el Protocolo de integridad de clave temporal era un protocolo de cifrado provisional?
- ¿Qué es el Protocolo de canal de fibra (FCP)? Cual es su futuro?
Luego, Traceroute envía un paquete con un TTL de 2, por lo que el segundo enrutador descartará el paquete y devolverá los mensajes ICMP. Este proceso continúa hasta que el paquete llega a la dirección de destino.
Traceroute puede implementarse utilizando paquetes UDP o ICMP. Algunas implementaciones de traceroute permitirán al usuario especificar el protocolo a utilizar. Si se utiliza ICMP, los paquetes enviados son “Solicitudes de eco ICMP” (es decir, “ping”). Cuando traceroute obtiene una respuesta de ping en lugar de un mensaje TTL caducado, entonces sabe que ha llegado al destino. Si se usa UDP, traceroute establecerá el puerto de destino en un número usado muy grande muy poco probable para garantizar que el dispositivo de destino responda que el puerto está cerrado con un mensaje de error de puerto inalcanzable ICMP. Nuevamente, esto indica a traceroute que ha alcanzado la IP de destino.
Si tiene acceso a una utilidad de ping que le permite configurar el TTL en pings, puede hacer un traceroute manualmente. Simplemente haga ping a la IP de destino con un TTL de 1. Debería recibir un mensaje que diga que se excedió el TTL. Luego envíe el mismo ping pero con un TTL de 2, luego 3, etc.
El siguiente ejemplo es de una caja de Linux que hace ping a un enrutador a tres saltos de distancia.
> ping -t 1 10.0.129.1
PING 10.0.129.1 (10.0.129.1) 56 (84) bytes de datos.
Desde 10.0.1.1 icmp_seq = 1 Tiempo de vida excedido
> ping -t 2 10.0.129.1
PING 10.0.129.1 (10.0.129.1) 56 (84) bytes de datos.
Desde 10.0.0.70 icmp_seq = 1 Tiempo de vida excedido
> ping -t 3 10.0.129.1
PING 10.0.129.1 (10.0.129.1) 56 (84) bytes de datos.
64 bytes de 10.0.129.1: icmp_seq = 1 ttl = 253 tiempo = 1.82 ms