Что такое пинг? Как работает утилита Ping

Что такое пинг, как работает ICMP Echo Request и Reply, что означает RTT и потери пакетов. Разбираем команду ping с примерами для Windows и Linux.

Что такое пинг? Как работает утилита Ping

Пинг (ping) это утилита командной строки для проверки доступности узла в IP-сети и измерения времени отклика. Запустив одну команду, вы узнаёте, отвечает ли удалённый сервер и сколько миллисекунд занимает путь пакета туда и обратно. Проверить задержку можно и без терминала, например через онлайн-инструмент ping от Dig Trace.

Что такое пинг на самом деле

Частое заблуждение: ping считают протоколом. На самом деле это обычная программа, которая опирается на служебный протокол ICMP (Internet Control Message Protocol). ICMP работает на сетевом уровне стека TCP/IP и предназначен для сообщений об ошибках и диагностики, а не для передачи пользовательских данных. У него нет портов, и приложения им напрямую не пользуются.

Название пришло из гидролокации: сонар посылает звуковой импульс и по эху определяет расстояние до объекта. Первая реализация утилиты появилась в BSD UNIX в 1983 году, и с тех пор ping входит в состав практически каждой операционной системы. Если интересно, как устроены смежные базовые понятия, у нас есть отдельные материалы о межсетевых экранах и работе DNS.

Как работает пинг

Утилита формирует ICMP Echo Request (сообщение типа 8 в IPv4): заголовок с идентификатором и номером последовательности плюс небольшой блок данных, обычно 56 байт. Пакет заворачивается в IP-датаграмму и отправляется к цели. Транспортный уровень не задействован, поэтому никакие порты не открываются.

Получив запрос, сетевая подсистема ОС на удалённом хосте сразу отвечает Echo Reply (тип 0) с теми же данными. Отправитель сверяет идентификатор и номер последовательности, чтобы сопоставить ответ с запросом, вычисляет разницу между timestamp и получает RTT (Round Trip Time), круговую задержку в миллисекундах.

По умолчанию Windows отправляет 4 запроса, Linux и macOS пингуют непрерывно до прерывания. В конце выводится статистика: минимальная, средняя и максимальная задержка, процент потерь и TTL, по которому можно судить о числе «хопов» до цели.

Отсутствие ответа ещё не значит, что сервер лежит. Многие администраторы блокируют ICMP на firewall по соображениям безопасности, при этом TCP-сервисы на том же хосте работают нормально.

Пинг на практике

Базовый вызов выглядит одинаково на всех платформах:

ping digtrace.net

Типичный вывод в Linux:

PING digtrace.net (104.21.5.12) 56(84) bytes of data.
64 bytes from digtrace.net (104.21.5.12): icmp_seq=1 ttl=57 time=12.4 ms
64 bytes from digtrace.net (104.21.5.12): icmp_seq=2 ttl=57 time=11.8 ms
64 bytes from digtrace.net (104.21.5.12): icmp_seq=3 ttl=57 time=13.1 ms

--- digtrace.net ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2003ms
rtt min/avg/max/mdev = 11.805/12.433/13.106/0.537 ms

Полезные флаги:

# Ограничить число запросов (Linux/macOS)
ping -c 4 example.com

# Задать интервал в 0.2 секунды
ping -i 0.2 example.com

# Пинг по IPv6 (в некоторых системах отдельная команда ping6)
ping -6 example.com

# В Windows число запросов задаётся флагом -n
ping -n 4 example.com

Парсинг имён доменов происходит через DNS, а маршрут до цели ping не показывает. Для этого нужен traceroute или MTR: они манипулируют полем TTL и собирают ICMP Time Exceeded от каждого промежуточного роутера.

Пинг и смежные инструменты

Ping отвечает на два вопроса: доступен ли хост и какова задержка. Он не измеряет пропускную способность канала, для скорости нужны iperf или speedtest. ICMP-пакеты часто деприоритизируются роутерами, поэтому в VPN- и прокси-сценариях ICMP-пинг может не отражать реальную задержку приложения, там уместнее TCP-тест к конкретному порту.

При диагностике сложных случаев MTR объединяет возможности ping и traceroute: непрерывно опрашивает все хопы на пути и показывает, где именно растут задержки или происходят потери. Утилита поддерживает и IPv4, и IPv6, структура ICMP-пакета похожа, отличаются только заголовки IP.

Какие значения пинга считать нормой

Ориентиры для интерактивных задач: до 50 мс, комфортно для игр и VoIP, 50–100 мс, приемлемо, свыше 150 мс задержка уже заметна в звонках и онлайн-играх. В 5G-сетях типичный пинг составляет 1–5 мс против 30–50 мс в 4G, что важно для real-time-приложений.

Важна не только задержка, но и стабильность. Потери даже в 2–3% хуже ощущаются, чем стабильно высокий, но ровный пинг. Причиной задержки часто бывает не «медленный интернет», а Wi-Fi, загруженный канал или физически удалённый сервер. Полезный контекст на тему доступности серверов и ICMP-блокировок есть, например, в справке AWS по ICMP и в статье Wikipedia об утилите ping.

Пинг в общей картине сетевой диагностики

Ping остаётся первым инструментом, к которому обращаются при любых проблемах со связью: он быстрый, есть везде и даёт мгновенный ответ на вопрос «жив ли хост». Но это лишь отправная точка. Быстрая проверка доступности, затем traceroute для поиска проблемного участка пути, затем TCP-проверка конкретного порта, если ICMP заблокирован.

Для системного администрирования стоит освоить MTR и мониторинг задержки в динамике: разовый замер мало что говорит о качестве канала. Понимание того, как ICMP устроен на уровне пакетов, помогает и в вопросах безопасности: ICMP-flood, классический вектор DDoS, поэтому на граничных устройствах трафик Echo Request часто ограничивают rate-limit'ом.