Ping — утилита командной строки, отправляющая ICMP Echo Request пакеты на целевой хост и фиксирующая время прихода ICMP Echo Reply. Результат — RTT (Round-Trip Time, время двойного пробега) в миллисекундах и процент потерь пакетов. Входит в стандартный инструментарий любого системного администратора и доступна в Windows, Linux и macOS без установки.
Как работает
Утилита формирует ICMP-пакет типа 8 (Echo Request) с полем identifier и sequence number, отправляет на целевой IP. Целевой хост (если ICMP не заблокирован) отвечает пакетом типа 0 (Echo Reply) с теми же идентификаторами. Ping фиксирует разницу времени между отправкой и приёмом — это RTT.
Типичный вывод:
PING 8.8.8.8 (8.8.8.8): 56 data bytes
64 bytes from 8.8.8.8: icmp_seq=0 ttl=115 time=12.4 ms
64 bytes from 8.8.8.8: icmp_seq=1 ttl=115 time=11.8 ms
--- 8.8.8.8 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss
round-trip min/avg/max = 11.8/12.1/12.4 ms
Поле TTL (Time to Live) показывает, сколько хопов осталось до пакета. Начальное TTL у Linux — 64, у Windows — 128, у Cisco IOS — 255. По значению TTL в ответе можно ориентировочно определить ОС цели. Утилита traceroute/tracert использует тот же принцип, манипулируя TTL для обнаружения каждого маршрутизатора на пути.
История
Ping написал Майк Муусс в декабре 1983 года за одну ночь. Программа стала настолько популярной, что Муусс в интервью называл её своим главным вкладом в интернет. Название дано в честь звука гидролокатора — активного сонара, испускающего акустический импульс и слушающего отражение. ICMP определён в RFC 792 (1981). Сам Муусс погиб в автокатастрофе в 2000 году.
Ping в хостинге и мониторинге
Ping — базовая проверка доступности в системах аптайм-мониторинга. Большинство сервисов (UptimeRobot, Pingdom, Zabbix) используют ICMP-пинг каждые 1-5 минут. Потеря пакетов >5% или RTT >200 мс сигнализируют о проблемах на сетевом пути. Важно: ICMP нередко заблокирован на серверах файрволом — тогда мониторинг переключается на TCP-проверку (порт 80 или 443).
Флаги ping:
-c N(Linux) /-n N(Windows) — отправить N пакетов.-s SIZE— размер пакета (по умолчанию 56/64 байта).-i INTERVAL— интервал между пакетами.-f(Linux) — flood ping (нужны права root), максимальная скорость.-4/-6— принудительно IPv4 или IPv6.
На что обращать внимание
Отсутствие ответа на ping не означает недоступность сервера — ICMP может быть заблокирован iptables или внешним файрволом. Высокий RTT (>100 мс) между серверами в одном дата-центре — признак проблемы (норма — <1 мс). Jitter (вариация RTT) важнее среднего значения для real-time приложений: если min=5 мс, max=150 мс — это проблема, даже если avg=20 мс. Latency влияет на SEO: Google учитывает TTFB, который частично определяется сетевой задержкой.
История и стандарты ping
Утилита ping создана Майком Мусом в 1983 году для проверки ICMP-связности. Отправляет ICMP Echo Request и ожидает ICMP Echo Reply. Стандартизирована в RFC 792 (1981, ICMP) и описана в RFC 1122 (1989). Для IPv6 используется утилита ping6 (ICMP v6, RFC 4443). В Windows встроенная команда ping -t пингует бесконечно, в Linux — 4 пакета по умолчанию. Для мониторинга доступности используйте Uptime Robot или Zabbix с ICMP-опросом.
Типичные ошибки
Отсутствие ответа на ping не означает недоступность сервера: iptables или Cloud-брандмауэры часто блокируют ICMP. Для проверки доступности сервиса используйте telnet <ip> <port> или curl -I http://<ip>. Высокий RTT при пинге не всегда означает медленный веб-сайт: кэш CDN может отдавать ресурсы быстро, даже если origin далеко.