¿Quién de los administradores u operadores de sistemas en red no ha usado la palabra “pingear”?, y no necesariamente me refiero a ser pingos y hacer travesuras. Casi todos hemos tecleado ese famoso comando conocido como “ping”; ya sea para verificar que una computadora puede “ver” a otra, o para validar que tan “lenta” está la red. Este comando se encuentra por omisión en la mayoría de los sistemas operativos que comúnmente usamos y está presente desde que salieron los primeros Unix hace ya bastantes  años.

Pues así como la mayoría de las cosas, el comando “ping” tiene su historia y una muy interesante. ¿Alguna vez se han preguntado por qué se llama así? Bueno, pues el autor de esta historia, Marjorie Flack, escribe por que se le dio ese nombre:

“El nombre viene del sonido que hace un sonar, inspirado por el principio de localización por eco. En la universidad hice mucho modelado de sistemas de sonar y radar, por lo tanto la analogía de “ciberespacio” me pareció muy correcta. Es exactamente el mismo paradigma aplicado a un nuevo dominio del problema: ping usa paquetes ICMP ECHO_REQUEST y ECHO_REPLY enviados con cierta frecuencia para probar la “distancia” entre dos computadoras.”

Existen otras teorías que hacen mención de que algunos clientes de ping antiguos, al recibir el paquete de vuelta, respondían con el mensaje de “pong”, por lo que se presume que el nombre de ping es una alusión al deporte ping-pong. Sin embargo, el mismo autor y desarrollador al que se le atribuye este comando, relata la historia de porque fue programado:

“Mi ímpetu original para programar ping para un sistema 4.2a BSD UNIX vino de un comentario del Dr. Dave Mills en julio de 1983, mientras atendíamos una sesión de DARPA en Noruega, en la cual él describió un trabajo que había hecho en sus sistemas “Fuzzball” LSI-11 para medir el retardo de un camino utilizando paquetes eco ICMP regulares. En Diciembre de 1983 me encontré con un comportamiento extraño de la red IP en BRL. Recordando los comentarios del Dr. Mills, rápidamente programé el programa ping, que consistía en abrir un socket Berkeley ICMP SOCK_RAW AF_INET. El código compiló bien, pero no funcionaba — ¡no había soporte del kernel para sockets ICMP crudos! — Programé entonces el soporte para el kernel y terminé todo el trabajo antes del amanecer. Sin embargo, Chuck Kennedy (alias “Kermit”) había encontrado y arreglado el hardware de red problemático antes de que yo pudiera enviar mi primer paquete “ping”. Pero lo he usado algunas veces desde aquel entonces. Si hubiera sabido que ese programa sería mi más famoso trabajo en la vida, probablemente hubiera trabajado en él por más tiempo y agregado algunas opciones extra.”

Lo que hoy día es cierto, es que este comandito es esencial en sistemas de monitoreo, para detectar el UP/DOWN de un equipo o, como decimos entre colegas, “para validar que la IP esté arriba”

Se han puesto a pensar ¿qué haríamos sin el “ping”?

64 bytes from [email protected] icmp_seq=0 time=16 ms
64 bytes from [email protected] icmp_seq=0 time=9 ms
64 bytes from [email protected] icmp_seq=0 time=3 ms
64 bytes from [email protected] icmp_seq=0 time=3 ms