A Brief History of Ping or How a Thousand Lines of Code Changed Networking Forever
Originally published on April 05, 2017 by Brandy Mauff
Last updated on February 10, 2020 • 4 minute read
You've heard of it. You've probably used it countless times. You probably couldn't do without it anymore. But have you ever actually thought about how this simple yet incredibly useful network troubleshooting tool came to be?
While attending a DARPA meeting in Norway in 1983, Mike Muuss overheard a comment from Dr. Dave Mills on his efforts to measure path latency by using timed ICMP Echo packets. Muuss noted the comment and returned to work at the Ballistic Research Laboratory (BRL), then, the center for the United States Army's ballistics research and vulnerability analysis. A few months later, he noticed that the IP network at BRL was behaving strangely and he remembered Dr. Mills' comment. So he sat down that evening and wrote a program that he named PING, based on the sound of sonar.
Much like the way sonar emits pulses of sound and listens for echoes to determine the distance between objects in or under the water's surface, PING uses timed IP/ICMP ECHO_REQUEST and ECHO_REPLY packets to determine if a target machine is responding and how long it takes to respond, or the "distance" to the machine.
The network problem was solved before he could send his first PING but his efforts were not in vain. PING turned out to be so useful that it would be implemented in most operating systems and, therefore, in nearly every computer in the world. Although Muuss wrote other significant programs and made great contributions - not just in networking - the thousand-line "hack" (as he called it) would prove to be the one he was most known for.
And for a good reason, too. PING is one of, if not the, most practical network tool available if used appropriately, especially in regard to dependencies when monitoring a network. For example, if you monitor several performance indicators of a virtual machine, the monitoring should rely on whether or not the host of the virtual machine still responds to PING requests. If it doesn't, all other requests to that machine will fail as well. If configured accordingly, you will receive just one notification for the host when it is down and not dozens of notifications for an unavailable virtual machine. PING can also be very helpful in high availability and failover scenarios because it is a good indicator of whether paths to hosts or to the internet are functioning properly.
So the next time you're having network issues, maybe you'll appreciate PING just a tiny bit more. Did you know? Our apps have built-in network tools that let you check a host from your smartphone. PING is one of them.