Пинг
Пинг (от англ. ping — посылать сигнал, звуковой импульс) — это утилита командной строки для проверки целостности и качества соединений в компьютерных сетях на основе стека протоколов TCP/IP, а также сама процедура отправки эхо-запросов и получения эхо-ответов. Пинг используется для диагностики доступности узла сети (хоста) и измерения времени прохождения пакетов данных от источника до получателя и обратно (RTT, Round-Trip Time).
История
Метод пинга был разработан американским инженером Майком Мууссом (Mike Muuss) в декабре 1983 года. Название утилиты было заимствовано из гидроакустики, где «пинг» обозначает короткий звуковой импульс, посылаемый сонаром для обнаружения объектов. По замыслу автора, утилита должна была работать по аналогии с эхолокацией: отправить пакет и ждать его отражения (ответа) от удалённой системы.
Первая реализация пинга была написана для операционной системы BSD UNIX. Впоследствии утилита стала стандартной для всех Unix-подобных систем, а затем была портирована в Microsoft Windows (начиная с Windows 95) и другие операционные системы. Изначально пинг использовал протокол ICMP (Internet Control Message Protocol, протокол межсетевых управляющих сообщений), что остаётся основным способом его работы.
Принцип работы
Пинг работает на сетевом уровне модели OSI (уровень 3) и использует протокол ICMP. Процесс проверки состоит из нескольких этапов:
- Отправка эхо-запроса (Echo Request). Утилита формирует ICMP-пакет типа 8 (Echo Request) и отправляет его на указанный IP-адрес или доменное имя. Пакет содержит уникальный идентификатор и порядковый номер для отслеживания.
- Обработка маршрутизаторами. Пакет проходит через промежуточные сетевые устройства (маршрутизаторы, коммутаторы), которые перенаправляют его к цели на основе таблиц маршрутизации.
- Приём и ответ (Echo Reply). Если целевой узел доступен и его настройки не блокируют ICMP-трафик, он принимает запрос и немедленно отправляет обратно ICMP-пакет типа 0 (Echo Reply). В ответе дублируются идентификатор и порядковый номер запроса.
- Расчёт времени. Утилита фиксирует время отправки запроса и время получения ответа. Разница между ними составляет время кругового пути (RTT). Обычно отправляется серия из 4–10 пакетов (по умолчанию в Windows — 4, в Linux — до прерывания), после чего выводятся статистические данные.
Параметры и ключи
Большинство реализаций пинга поддерживают набор стандартных параметров командной строки, позволяющих изменять поведение утилиты. Основные из них:
| Параметр (ключ) | Описание |
|---|---|
-t (Windows) / -c <число> (Linux) | Непрерывная отправка пакетов (Windows) или указание количества пакетов (Linux). |
-n <число> (Windows) | Количество отправляемых эхо-запросов. |
-l <размер> (Windows) / -s <размер> (Linux) | Размер отправляемого пакета данных (в байтах). |
-i <TTL> | Установка времени жизни пакета (Time To Live). |
-w <таймаут> (Windows) / -W <таймаут> (Linux) | Время ожидания ответа (в миллисекундах). |
-f | Запрет фрагментации пакета (позволяет определить MTU канала). |
-a (Windows) | Разрешение имён удалённых узлов по их IP-адресам. |
Интерпретация результатов
Вывод утилиты пинг содержит несколько ключевых показателей:
- Время ответа (RTT). Измеряется в миллисекундах (мс). Нормальным для локальной сети считается время менее 1–2 мс, для проводного интернета — 10–50 мс, для спутниковой связи или мобильных сетей — 100–500 мс и выше. Высокий RTT (более 300 мс) может свидетельствовать о проблемах с качеством связи или большой географической удалённости сервера.
- Потеря пакетов (Packet Loss). Процент эхо-запросов, на которые не был получен ответ. Нулевая потеря пакетов — идеальный показатель. Потери в 1–5% указывают на нестабильность соединения, более 10% — на серьёзные проблемы с сетью.
- TTL (Time To Live). Значение, уменьшающееся на единицу при каждом прохождении маршрутизатора. Позволяет косвенно определить количество промежуточных узлов (хопов) до цели. Стандартные начальные значения: 64 (Linux, macOS), 128 (Windows), 255 (сетевое оборудование).
- Статистика. В конце серии пингов выводится сводка: минимальное, максимальное и среднее время ответа, а также среднеквадратическое отклонение (джиттер). Высокий джиттер (разброс значений RTT) свидетельствует о нестабильности канала.
Применение
Пинг является базовым инструментом сетевого администратора и пользователя для решения следующих задач:
- Проверка доступности хоста. Определение, работает ли удалённый сервер или устройство.
- Диагностика DNS. Проверка разрешения доменных имён: если пинг по IP-адресу проходит, а по доменному имени — нет, проблема в DNS-сервере.
- Оценка качества канала. Измерение задержек и потерь пакетов для выявления перегрузок или неисправностей на линии.
- Определение MTU. Путем отправки пакетов разного размера с флагом запрета фрагментации можно найти максимальный размер пакета, который проходит без разбиения.
- Тестирование сетевого стека. Пинг на адрес 127.0.0.1 (loopback) проверяет работу программного стека TCP/IP на локальной машине.
Ограничения и критика
Несмотря на свою полезность, пинг имеет ряд ограничений:
- Блокировка ICMP. Многие администраторы и провайдеры блокируют ICMP-трафик на межсетевых экранах (фаерволах) для защиты от атак (например, Smurf-атаки или ICMP flood). В этом случае пинг не проходит, хотя целевой сервер может быть полностью работоспособен по другим протоколам (HTTP, HTTPS, SSH).
- Не отражает качество работы приложений. Пинг показывает задержки на сетевом уровне, но не учитывает задержки, возникающие на прикладном уровне (например, время обработки запроса веб-сервером).
- Чувствительность к нагрузке. При высокой загрузке сети или самого хоста пакеты могут теряться или задерживаться, что даёт ложную картину неисправности.
Альтернативы
Для более детальной диагностики сети используются другие инструменты:
- Traceroute (tracert). Определяет маршрут прохождения пакетов, показывая все промежуточные узлы (хопы) и время задержки на каждом из них.
- MTR (My Traceroute). Комбинирует функции пинга и traceroute, непрерывно опрашивая каждый хоп и выводя статистику по потерям и задержкам.
- PathPing. Утилита Windows, аналогичная MTR.
- Jperf / iperf. Инструменты для измерения пропускной способности канала (скорости передачи данных).
Источники
- Муусс М. История создания ping (The Story of the PING Program). 1983.
- Стивенс У. Р. TCP/IP. Иллюстрированное руководство. Том 1. Протоколы. — М.: Вильямс, 2003.
- RFC 792 — Internet Control Message Protocol (ICMP). J. Postel, 1981.
- Документация операционных систем Microsoft Windows (ping) и Linux (ping).
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →