--- tags: [networks, procedural] created: Monday, January 13, 2025 --- # Ping `ping` is perhaps the most basic network debugging tool. It sends [ICMP](ICMP_Protocol.md) echo request packets to a recipient host. If the recipient receives the packet and is configured to reply, it sends an ICMP echo response packet in return. For example: ``` $ ping google.com PING google.com (142.250.200.14) 56(84) bytes of data. 64 bytes from lhr48s29-in-f14.1e100.net (142.250.200.14): icmp_seq=1 ttl=116 time=19.1 ms 64 bytes from lhr48s29-in-f14.1e100.net (142.250.200.14): icmp_seq=2 ttl=116 time=19.2 ms 64 bytes from lhr48s29-in-f14.1e100.net (142.250.200.14): icmp_seq=3 ttl=116 time=19.1 ms 64 bytes from lhr48s29-in-f14.1e100.net (142.250.200.14): icmp_seq=4 ttl=116 time=21.1 ms ``` The first indicates the IP address of the host you are pinging (once per second, by default). The subsequent lines are the response packets, echoed back from this host. The `icmp_seq` is the number of the request in the sequence. If there was to be a gap in the sequence, this would be the clearest indication of a connection problem.The packets should not arrive out of order since there is only one packet being sent per second. `time` is the round-trip time - from the sending of the packet to its return to the sender. If the packet cannot reach the destination host, the final router to see the packet retunes a "host unreachable" packet to `ping`.