ping - un comando nacido del sonar de los submarinos
El primer comando que se ejecuta al diagnosticar problemas de red: ping. El nombre de este comando proviene del sonido "ping" que emite el sonar (ecosonda) de los submarinos. Así como el sonar emite una onda sonora y mide la distancia por el tiempo que tarda en regresar el eco, ping envía un paquete y mide la accesibilidad y latencia de la red por el tiempo que tarda en llegar la respuesta.
El nacimiento de ping - 1983, una noche de trabajo de Mike Muuss
ping fue escrito en diciembre de 1983 por Mike Muuss, ingeniero del Laboratorio de Investigación Balística del Ejército de EE.UU. (BRL). Muuss, mientras investigaba un fallo de red, se dio cuenta de que "no existe una herramienta sencilla para verificar si los paquetes llegan al destino" e implementó ping en una sola noche.
Según contó el propio Muuss posteriormente, el nombre proviene del sonido del sonar submarino. La operación de "enviar un paquete y esperar el reflejo" le recordó al sonar, así que intuitivamente lo llamó "ping". Existe también la teoría de que es un acrónimo de "Packet InterNet Groper" (explorador de paquetes de internet), pero Muuss negó esto, calificándolo de backrónimo (acrónimo retroactivo).
ICMP - el protocolo que usa ping
ping utiliza los mensajes Echo Request y Echo Reply de ICMP (Internet Control Message Protocol). A diferencia de TCP o UDP, ICMP no está diseñado para la transferencia de datos, sino para el control y diagnóstico de la red.
El funcionamiento de ping es simple:
- El origen envía un paquete ICMP Echo Request al destino
- El destino recibe el paquete y devuelve un paquete ICMP Echo Reply
- El origen mide el tiempo de ida y vuelta (RTT: Round Trip Time)
Este RTT es el indicador básico de latencia de red que puedes verificar en IP Check-san. El ping de Tokio a la costa oeste de EE.UU. es de aproximadamente 100-120 ms, y a Europa de unos 200-250 ms. La mayor parte de esta latencia es el tiempo físico que tarda la luz en propagarse por los cables submarinos.
Lo que ping puede y no puede revelar
Lo que puede revelar
- Accesibilidad: si el host de destino es alcanzable en la red
- RTT (latencia de ida y vuelta): tiempo que tarda el paquete en ir y volver. Permite percibir la "distancia" de la red
- Pérdida de paquetes: porcentaje de paquetes enviados que no recibieron respuesta. Indicador de calidad de la red
- TTL (Time To Live): permite estimar el número de routers que atravesó el paquete. Restando el TTL de la respuesta del valor inicial (normalmente 64 o 128), se obtiene el número de saltos
Lo que no puede revelar
- Ancho de banda: ping solo envía paquetes diminutos (normalmente 64 bytes), por lo que no puede medir la velocidad efectiva de la línea
- Estado del servicio: que responda al ping no significa que el servidor web o la aplicación estén funcionando correctamente
- Ruta exacta: ping no muestra por qué routers pasó el paquete (eso es trabajo de
traceroute)
Que ping "no responda" no siempre significa un fallo
Si ping no recibe respuesta, no necesariamente significa que el destino esté caído. Muchos servidores y firewalls bloquean intencionalmente las solicitudes ICMP Echo Request por razones de seguridad:
- Firewall de Windows: por defecto está configurado para bloquear ICMP Echo Request
- Proveedores de nube: los Security Groups de AWS bloquean ICMP a menos que se permita explícitamente
- Protección contra DDoS: muchas redes limitan o bloquean ICMP para prevenir ataques Ping Flood que usan grandes cantidades de paquetes ICMP
Si ping no responde, intenta conectarte a un puerto específico con curl o telnet, o verifica hasta dónde puedes llegar con traceroute.
Comandos derivados de ping
- traceroute / tracert: muestra la dirección IP y latencia de cada router por el que pasa el paquete hasta llegar al destino. Envía ICMP incrementando el TTL desde 1 y registra la respuesta de cada salto
- mtr (My Traceroute): herramienta que combina ping y traceroute. Muestra en tiempo real y de forma continua la latencia y pérdida de paquetes de cada salto
- fping: puede enviar ping a múltiples hosts simultáneamente. Se utiliza para la monitorización de redes a gran escala
- hping: versión avanzada que puede enviar paquetes con cualquier protocolo: TCP, UDP, ICMP, etc. También se utiliza para pruebas de firewall y escaneo de puertos
El destino de Mike Muuss
Mike Muuss, autor de ping, también es conocido como desarrollador de BRL-CAD (sistema CAD 3D de código abierto). Lamentablemente, falleció en un accidente de tráfico en noviembre de 2000, a los 42 años.
El ping que escribió en una sola noche sigue siendo una herramienta que ingenieros de redes de todo el mundo utilizan a diario, más de 40 años después. Simple, fiable y universal. Quizás sea la forma ideal de un buen software.