# Linux commands: ping

> Learn how the Linux ping command checks if a host is reachable over the ICMP protocol, reports round-trip time and packet loss, and limits tries with -c.

Author: [Flavio Copes](https://flaviocopes.com/about/) | Published: 2020-10-11 | Topics: [CLI](https://flaviocopes.com/tags/cli/) | Canonical: https://flaviocopes.com/linux-command-ping/

The `ping` command pings a specific network host, on the local network or on the Internet.

You use it with the syntax `ping <host>` where `<host>` could be a domain name, or an IP address.

Here's an example pinging `google.com`:

![Terminal showing successful ping to google.com with 5 packets sent and received, displaying response times and statistics](https://flaviocopes.com/images/linux-command-ping/Screen_Shot_2020-09-09_at_15.21.46.png)

The commands sends a request to the server, and the server returns a response.

`ping` keep sending the request every second, by default, and will keep running until you stop it with `ctrl-C`, unless you pass the number of times you want to try with the `-c` option: `ping -c 2 google.com`.

Once `ping` is stopped, it will print some statistics about the results: the percentage of packages lost, and statistics about the network performance.

As you can see the screen prints the host IP address, and the time that it took to get the response back.

Not all servers support pinging, in case the requests times out:

![Terminal showing ping timeouts to flaviocopes.com with request timeout messages and 100% packet loss statistics](https://flaviocopes.com/images/linux-command-ping/Screen_Shot_2020-09-09_at_15.21.27.png)

Sometimes this is done on purpose, to "hide" the server, or just to reduce the load. The ping packets can also be filtered by firewalls.

`ping` works using the **ICMP protocol** (_Internet Control Message Protocol_), a network layer protocol just like TCP or UDP.

The request sends a packet to the server with the `ECHO_REQUEST` message, and the server returns a `ECHO_REPLY` message. I won't go into details, but this is the basic concept.

Pinging a host is useful to know if the host is reachable (supposing it implements ping), and how distant it is in terms of how long it takes to get back to you. Usually the nearest the server is geographically, the less time it will take to return back to you, for simple physical laws that cause a longer distance to introduce more delay in the cables.

The `ping` command works on Linux, macOS, WSL, and anywhere you have a UNIX environment
