# Traceroute

En informática, traceroute y tracert son comandos de diagnóstico de red de computadoras para mostrar posibles rutas y medir los retrasos de tránsito de los paquetes a través de una red de Protocolo de Internet (IP). El historial de la ruta registra cómo los tiempos de ida y vuelta de los paquetes son recibidos de cada host sucesivo (nodo remoto) en la ruta; la suma de los tiempos medios en cada salto es una medida del tiempo total empleado para establecer la conexión. Traceroute marca como exitoso el salto a menos que todos paquetes los paquetes enviados (generalmente tres) se pierdan más de dos veces; entonces se pierde la conexión y no se puede evaluar la ruta. Ping, por otro lado, solo calcula los tiempos finales de ida y vuelta desde el punto de destino.
Para el Protocolo de Internet Versión 6 (IPv6), la herramienta a veces tiene el nombre traceroute6 y tracert6.

## Implementación

El comando traceroute está disponible en muchos sistemas operativos modernos. En sistemas tipo Unix como FreeBSD, macOS y Linux, está disponible como una herramienta de línea de comandos. Traceroute también es accesible gráficamente en macOS dentro de la suite Utilidades de red.
Microsoft Windows y ReactOS proporcionan un programa denominado tracert que realiza la misma función de seguimiento de rutas. Los sistemas operativos basados en Windows NT también proporcionan PathPing, con una funcionalidad similar. La versión de ReactOS fue desarrollada por Ged Murphy y está licenciada bajo la GPL.
En los sistemas operativos tipo Unix, traceroute envía, de forma predeterminada, una secuencia de paquetes de Protocolo de datagramas de usuario (UDP), con números de puerto de destino que van desde 33434 hasta 33534; las implementaciones de traceroute suministradas con Linux, FreeBSD, NetBSD, OpenBSD, DragonFly BSD, y macOS incluyen una opción para usar paquetes ICMP Echo Request (-I), o cualquier protocolo arbitrario (-P) como UDP, TCP usando paquetes TCP SYN o ICMP.
En Windows, tracert envía paquetes de solicitud de eco ICMP, en lugar de los paquetes UDP que traceroute envía de forma predeterminada.
El valor de tiempo de vida (TTL), también conocido como límite de salto, se utiliza para determinar los enrutadores intermedios que se atraviesan hacia el destino. Traceroute envía paquetes con valores TTL que aumentan gradualmente de un paquete a otro, comenzando con el valor TTL de uno. Los routers disminuyen los valores TTL de los paquetes en uno cuando enrutan y descartan los paquetes cuyo valor TTL ha llegado a cero, devolviendo el mensaje de error ICMP Time Exceeded. Para el primer conjunto de paquetes, el primer enrutador recibe el paquete, disminuye el valor TTL y elimina el paquete porque entonces tiene el valor TTL cero. Al siguiente conjunto de paquetes se le da un valor TTL de dos, por lo que el primer enrutador reenvía los paquetes, pero el segundo enrutador los deja caer y responde con ICMP Time Exceeded. Procediendo de esta manera, traceroute utiliza los mensajes ICMP Time Exceeded devueltos para crear una lista de enrutadores que atraviesan los paquetes, hasta que se alcanza el destino y devuelve un mensaje ICMP Destination Unreachable si se están utilizando paquetes UDP o un mensaje ICMP Echo Reply si se están utilizando mensajes ICMP Echo.

## Ejemplo
### En Mac

Ve a "Aplicaciones", luego a "Utilidades" y abre la aplicación "Utilidad de Red". Dirígete a la pestaña "Traceroute", escribe el dominio o IP y se empezará a trazar la ruta.

## Funcionamiento

El número de la primera columna es el número de salto, posteriormente viene el nombre y la dirección IP del nodo por el que pasa, los tres tiempos siguientes son el tiempo de respuesta para los paquetes enviados (un asterisco indica que no se obtuvo respuesta).
Estas herramientas (traceroute y tracert) son órdenes ejecutables en una consola en modo texto.
Tracert utiliza el campo Time To Live (TTL) de la cabecera IP. Este campo sirve para que un paquete no permanezca en la red de forma indefinida (por ejemplo, debido a la existencia en la red de un bucle cerrado en la ruta). El campo TTL es un número entero que es decrementado por cada nodo por el que pasa el paquete. De esta forma, cuando el campo TTL llega al valor 0 ya no se reenviará más, sino que el nodo que lo esté manejando en ese momento lo descartará. Lo que hace tracert es mandar paquetes a la red de forma que el primer paquete lleve un valor TTL=1, el segundo un TTL=2, etc. De esta forma, el primer paquete será eliminado por el primer nodo al que llegue (ya que éste nodo decrementará el valor TTL, llegando a cero). Cuando un nodo elimina un paquete, envía al emisor un mensaje de control especial indicando una incidencia. Tracert usa esta respuesta para averiguar la dirección IP del nodo que desechó el paquete, que será el primer nodo de la red. La segunda vez que se manda un paquete, el TTL vale 2, por lo que pasará el primer nodo y llegará al segundo, donde será descartado, devolviendo de nuevo un mensaje de control. Esto se hace de forma sucesiva hasta que el paquete llega a su destino.

## Origen

La página del manual de traceroute afirma que el programa original de traceroute fue escrito por Van Jacobson en 1987 a partir de una sugerencia de Steve Deering, con sugerencias o correcciones particularmente convincentes de C. Philip Wood, Tim Seaver y Ken Adelman. El autor del programa ping, Mike Muuss, afirma en su sitio web que traceroute fue escrito usando el soporte ICMP del kernel que había codificado anteriormente para habilitar sockets ICMP sin procesar cuando escribió el programa ping por primera vez.

## Otras aplicaciones

Existe un programa llamado Visual Route (multiplataforma, en Java) que se utiliza para obtener una información gráfica de la ruta que siguen los paquetes desde el origen hasta su destino. Se usa la información generada por la orden tracert junto con la información obtenida de la base de datos RIPE para cada uno de estos nodos.
Existen en Internet una serie de lugares que proporcionan servidores de traceroute, nos informan de los resultados de la ejecución de una orden traceroute desde ese host hasta el nuestro. A estos servidores se les suelen llamar Looking Glass. La mayoría de los ISP con redes permiten la realización de estas operaciones.
También hay servidores (muchas veces los mismos Looking Glass) que proporcionan la posibilidad de ver el resultado de un traceroute desde su host hacia cualquier otro punto. Esto es de gran ayuda a la hora de realizar mapas de caminos para los paquetes. En el sitio web de traceroute se encuentran recogidos algunos de los sitios web que ofrecen la posibilidad de realizar trazas al sitio que se les indique.