Los comandos de red Ping, Tracert y PathPing son herramientas que permiten realizar comprobaciones de conectividad. Este tutorial intenta explicar cómo funcionan, cuando se utilizan y las diferencias que existen entre ellos.
Ping
El comando Ping
(Packet Internet Groper o rastreador de paquetes), permite realizar comprobaciones de conectividad de red entre dos Host TCP/IP sobre la Capa de Red 3 del modelo OSI. Está integrada en el Core del Sistema Operativo y disponible en Sistemas Cisco, Unix, Linux y Windows.
El comando Ping realiza peticiones y respuestas echo (echo request y echo reply) utilizando el protocolo ICMP (Internet Control Message Protocol) sobre direcciones IP (Internet Protocol), entre dos dispositivos TCP/IP.
Los mensajes ICMP en este caso son utilizados como herramienta de diagnóstico en operaciones IP y esta sería una explicación básica de su comportamiento cuando realizamos un Ping hacia un Host/IP remoto:
- El comando Ping genera y envía peticiones echo ICMP hacia el Host remoto.
- Si el ordenador remoto recibe la petición echo ICMP, responderá con una respuesta echo ICMP.
- Si el Host de origen recibe la respuesta echo ICMP del Host remoto, es que existe conectividad entre ambos Host.
En Linux además de poder utilizar el comando ping podemos utilizar el comando nping
que permite analizar y realizar mediciones del tiempo de respuesta. Puede utilizarse en diversos protocolos (tcp, udp, icmp, etc …) en caso de que el host esté bloqueando paquetes ICMP.
Además de detectar Host inactivos también puede ser utilizado para trazado de rutas, realizar pruebas de estrés de la red, ataques de denegación de servicio, envenenamientos de caché ARP, etc …
Tracert/Traceroute
El comando tracert
o traceroute
también nos permite realizar comprobaciones de conectividad entre dos puntos y se diferencia del comando ping en que nos permite rastrear la ruta que sigue el datagrama IP desde que se envía hasta que llega su destino. Si estamos en Sistemas Unix, Linux o MacOS tendremos que utilizar el comando traceroute.
Tracert/traceroute son herramientas de gran utilidad para encontrar en qué parte de la ruta desde el origen hasta el destino se interrumpe la conectividad en la Capa de Red 3 del modelo OSI.
Una vez hemos localizado el nodo donde se interrumpe la conectividad de la red, contactaremos con la empresa encargada de ese nodo para que trate de solucionar el problema. El comando Tracert/traceroute hace uso de la siguiente información para funcionar:
- Peticiones y respuestas echo ICMP.
- Valor TTL (Time to Live) de la cabecera IP del datagrama, que nos permite controlar por cuantos nodos pasará un datagrama y saber exactamente su ciclo de vida. De esta forma se evita que el datagrama entre en bucle en la misma red.
- Mensajes de tiempo excedido ICMP.
A continuación veremos paso a paso el funcionamiento interno de la herramienta tracert/traceroute:
- Cuando ejecutamos el comando tracert/traceroute, en primer lugar nuestro sistema genera una solicitud echo ICMP con valor TTL (1) en su encabezado IP, indicando que este será su primer salto. Cuando el destinatario del paquete (datagrama IP) recibe la solicitud echo ICMP, devuelve el mensaje de tiempo excedido ICMP hacia nuestro sistema donde se comprobará y mostrará el resultado.
- Con el salto número dos tracert/traceroute volverá a generar otra petición echo ICMP pero esta vez con valor TTL (2) en su encabezado IP. El enrutador del salto 1 consulta este valor TTL (2) y reenvía el datagrama IP hacia el siguiente enrutador, pero decrementando su valor TTL en 1. Una vez recibido el datagrama por el siguiente enrutador siendo su valor TTL 1 cuando lo descarte procederá a enviarlo de vuelta al origen con un mensaje de tiempo excedido ICMP para notificarnos el resultado.
- Con cada petición sucesiva a nuevos nodos el valor TTL de cada solicitud echo ICMP se irá incrementando en 1 e irá decrementando su valor por cada cada salto hasta llegar a ser 1 que es cuando se reenvía de vuelta a nuestro sistema.
- Cuando el programa tracert/traceroute reciba la respuesta echo ICMP del destino que estamos consultando, podemos asegurar que no existe ningún enrutador caído.
- Pero … ¿Qué sucede cuando un enrutador es inalcanzable?, nuestro comando tracert/traceroute interrumpe su ejecución.
¿Qué significa que el tiempo de espera ha sido agotado para la solicitud (Request timed out)? Esta respuesta se produce porque el comando Tracert de Windows utiliza ICMP (Internet Control Message Protocol) e indica que existe un Firewall en dicho enrutador que está bloqueando la solicitud echo ICMP.
Por el contrario el comando traceroute de Linux utiliza UDP (User Datagram Protocol) o TCP (Transmission Control Protocol) con la opción -T, también puede ser bloqueado por firewalls pero dispone de alternativas para intentar que el datagrama IP llegue a su destino, forzando que utilice otro puerto con el parámetro -p:
Pathping
Al igual que Ping y Tracert, Pathping
también nos permite realizar comprobaciones de conectividad entre dos puntos y de la misma forma que tracert permite rastrear la ruta que sigue el datagrama IP desde que se envía hasta que llega a su destino.
La latencia es una medida que mide los retardos dentro de una red y Pathping nos permite comprobar este valor en cada salto desde que el datagrama IP se envía hasta que llega su destino. La latencia se mide en RTT (Round-trip Time), que corresponde al tiempo que tarda el datagrama IP en ir a su destino y volver a su origen.
Para medir la latencia de la red, Pathping utiliza las solicitudes y respuestas echo ICMP por cada uno de los saltos. El hecho de tener que realizar más solicitudes y mostrar más información conlleva un mayor tiempo en su ejecución.
El comando Pathping también utiliza los TTL en los encabezados IP, las solicitudes y respuestas echo ICMP y los mensajes de tiempo excedido ICMP. Una vez Pathping disponga de todas las direcciones IP de los enrutadores que hay desde el origen hasta el destino, se pondrá a calcular la latencia de la red utilizando solicitudes y respuestas echo ICMP.
Por defecto pathping realiza estás operaciones hasta 100 veces pero podemos definir una cantidad personalizada con el parámetro -q.
Una herramienta alternativa a pathping en Linux es mtr.