Открыть сервис

Ping

Ping — это утилита компьютерных сетей, предназначенная для проверки доступности узла (хоста) в сети и измерения времени, за которое пакет данных проходит от отправителя к получателю и обратно. Название утилиты произошло от английского термина «ping», который звукоподражательно описывает импульс, используемый в гидроакустических системах (сонарах). Основной принцип работы утилиты основан на отправке узлу специального запроса (эхо-запроса) протокола ICMP (Internet Control Message Protocol) и ожидании ответа (эхо-ответа) от него.

История

Метод проверки связности с помощью ICMP-пакетов был впервые реализован в начале 1980-х годов. Утилита ping была написана Майком Мууссом (Mike Muuss) в декабре 1983 года для операционной системы BSD (Berkeley Software Distribution). По легенде, название было заимствовано из звуков, издаваемых гидроакустическим оборудованием подводных лодок, которое использовалось для обнаружения объектов. В 1983 году он работал в Лаборатории баллистических исследований США (U.S. Army Ballistic Research Laboratory). Изначально утилита была написана для отладки сетевых протоколов и обнаружения неисправностей на ранних этапах развития стека протоколов TCP/IP.

Впоследствии утилита ping стала стандартной для большинства операционных систем, включая Unix-подобные системы (Linux, macOS) и семейство Windows. В различных ОС могут существовать незначительные отличия в ключах и параметрах запуска, но базовый набор функций остаётся неизменным на протяжении десятилетий.

Принцип работы

Ping использует протокол ICMP (Internet Control Message Protocol). Утилита отправляет на целевой хост пакет ICMP Echo Request (тип 8, код 0). Если целевой узел активен и не блокирует такие запросы, он отвечает пакетом ICMP Echo Reply (тип 0, код 0). Утилита засекает время между отправкой запроса и получением ответа, вычисляя задержку (latency, или RTT — round-trip time).

Процесс выполнения

  1. Отправляется ICMP-пакет определённого размера (по умолчанию 32 или 56 байт данных + заголовки).
  2. Утилита ожидает ответ. Время ожидания по умолчанию, как правило, составляет несколько секунд.
  3. При получении ответа выводится информация: размер пакета, IP-адрес (или доменное имя) узла, номер ICMP-секвенции и время RTT (в миллисекундах).
  4. При потере пакета (ответ не получен в отведённое время) фиксируется тайм-аут.
  5. По окончании тестирования (обычно после отправки 4–10 пакетов) выводится статистика: количество отправленных/полученных пакетов, процент потерь (packet loss) и минимальное, среднее, максимальное значения RTT.

Параметры

Большинство реализаций ping поддерживают широкий набор опций (ключей). Наиболее употребимые:

Интерпретация результатов

Время прохождения (RTT)

Потери пакетов (Packet Loss)

Считается процент пакетов, на которые не был получен ответ. Допустимая потеря пакетов для многих приложений — 0–1%. Высокий процент потерь (более 5–10%) указывает на серьёзные проблемы с доступностью узла или каналом связи. Если потери пакетов отсутствуют, но RTT очень высок, проблема может быть в узком канале связи или высокой задержке.

Коды ICMP в ответах

Вместо обычного ответа ping может получить сообщение от другого сетевого устройства (роутера) с определённым кодом ICMP:

Практическое применение

Диагностика сети

Мониторинг сети

В системах мониторинга (например, Nagios, Zabbix, PRTG) ping используется как базовый сервис проверки доступности узлов. Процент потерь и время отклика являются ключевыми метриками для оценки качества канала (SLA — Service Level Agreement).

Сетевые игры и VoIP

В реальном времени качество связи напрямую зависит от RTT. Высокий пинг (более 100–150 мс) вызывает задержки и неприятные ощущения («лагание») в сетевых играх, а также искажения и эхо в голосовых приложениях (VoIP). Ping-тесты помогают пользователям оценить качество подключения к конкретному игровому серверу. Часто игроки используют утилиту для выбора наименее удалённого сервера.

Критика и ограничения

  1. Неточность замера: Ping не предоставляет точного времени прохождения пакета в одну сторону (one-way delay), а только двойное время (RTT). Для точного одностороннего измерения требуются синхронизированные часы на обоих концах (по протоколу NTP).
  2. Не отражает реальную производительность: Низкий пинг не всегда означает высокую скорость передачи данных. Ping-пакеты обрабатываются ядром ОС, часто с более высоким приоритетом, чем пользовательские данные. Сеть может быть загружена, но пинг останется низким.
  3. Фильтрация ICMP: Многие администраторы и провайдеры блокируют ICMP-пакеты на межсетевых экранах (firewall) для защиты от DoS-атак (например, ICMP flood). В таких случаях ping может не получить ответа, хотя узел доступен по другим протоколам (HTTP, SSH, RDP).
  4. Использование для атак: Утилита ping с ключом -f (flood) может использоваться для генерации большого трафика, что является формой DoS-атаки (Ping of Death, Smurf attack — хотя они имеют различные реализации, утилита стала инструментом злоумышленников). Из-за этого на многих системах обычному пользователю запрещён цикл отправки с нулевым интервалом.

Альтернативы

Для более углублённой диагностики сети, не ограничивающейся простым RTT, используются другие утилиты:

Источники

  1. RFC 792 — Internet Control Message Protocol (ICMP).
  2. RFC 1122 — Requirements for Internet Hosts — Communication Layers.
  3. Mike Muuss. The Story of the PING Program (1983).
  4. Документация к утилите ping из состава iputils (Linux) — man-страница.
  5. Документация к утилите ping из состава Windows — справка Microsoft.

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →