Раздел помощи SpaceWeb

Команда Ping

14 май, 2024

В этой статье мы расскажем, что такое утилита Ping, как пинговать сайт и какие параметры могут быть вам полезными при работе с этой командой.  

Команда Ping

Ping – это утилита командной строки, которая используется для проверки доступности узла в сети и измерения времени, необходимого для передачи данных к этому узлу и обратно. Она считается одной из наиболее распространённых и удобных средств диагностики сети. 

Как работает и что делает команда Ping:

  1. Пользователь вводит команду Ping в командной строке, указывая IP-адрес или доменное имя узла, к которому он хочет выполнить проверку доступности.
  2. Ping создаёт специальный сетевой пакет под названием ICMP (Internet Control Message Protocol), который содержит небольшое количество информации (например, временную метку отправки).
  3. Сформированный ICMP-пакет отправляется на указанный узел через сеть. В пакете нет данных, но у него есть заголовок, который содержит информацию о типе и коде сообщения, а также идентификатор и последовательный номер.
  4. После отправки пакета утилита Ping ожидает ответа от узла. Если узел доступен и правильно настроен, он отправит обратно ICMP-сообщение для подтверждения (эхо-ответ).
  5. При получении эхо-ответа утилита Ping фиксирует время, которое прошло с момента отправки запроса до получения ответа. Это время называется пингом и измеряется в миллисекундах. Пинг также может использоваться для оценки задержки в сети.
  6. После завершения процесса Ping отображает результаты проверки доступности узла, включая количество отправленных и полученных пакетов, а также среднее время отклика.

Какие функции выполняет команда Ping:

  • проверка доступности,
  • измерение времени задержки,
  • поиск потерянных пакетов,
  • трассировка маршрута,
  • диагностика сетевых проблем,
  • автоматизация мониторинга.

Синтаксис команды Ping в Linux 

ping [параметр] [адрес-назначения] 

Где:

  • ping – это ключевое слово, которое указывает операционной системе на необходимость запуска утилиты Ping.
  • [параметры] – это дополнительные опции, которые можно использовать для настройки утилиты Ping. Например, параметры могут определять количество запросов, размер пакета, интервал между запросами и другие характеристики.
  • [адрес-назначения] – это IP-адрес или доменное имя узла, к которому вы хотите выполнить проверку доступности в сети. Если адрес не указан, Ping будет отправлять запросы локально, к собственному устройству – localhost.

Параметры Ping для Linux (Ubuntu)

Важно! В зависимости от дистрибутива Linux параметры могут меняться. Чтобы просмотреть доступные параметры и их описания, можно выполнить команду:

ping -help

Ниже приведены параметры, которые доступны на Ubuntu 22.04 LTS:

Параметр

Описание

-a

Включает звуковой сигнал при получении эхо-ответа от хоста.

-A

Включает адаптивный режим, в котором интервал между отправками пакетов корректируется в зависимости от времени их передачи и приёма, при этом не опускаясь ниже 200 миллисекунд.

-B

Осуществляет привязку к исходному адресу.

-c <число>

Определяет количество отправляемых ICMP эхо-запросов. 

-D

Добавляет метку времени до каждого эхо-ответа, позволяя отслеживать точное время получения каждого ответа.

-d

Устанавливает флаг SO_DEBUG на сокете, который используется для ICMP-запросов, что позволяет получать информацию о состоянии сетевого соединения для целей отладки.

-f

Режим непрерывной передачи, при котором пакеты отправляются без каких-либо задержек. Этот режим может быть применён для осуществления DoS-атак на конкретные узлы сети. Количество отображаемых утилитой точек указывает на число потерянных пакетов.

-h

Выводит справочную информацию и завершает работу.

-I <интерфейс>

Устанавливает сетевой интерфейс для отправки ICMP-запросов.

-i <интервал>

Устанавливает интервал между отправкой запросов.

-L

Препятствует изменению маршрута пакетов (например, маршрутизации через разные интерфейсы) после начала отправки пакетов.

-l <число>

Устанавливает количество отправляемых пакетов до получения первого отклика.

-m <маркировка>

Устанавливает метку для каждого отправляемого пакета.

-M <pmtud opt>

Указывает режим Path MTU Discovery. Поддерживаемые значения: «do» (вынуждает фрагментацию), «dont» (запрещает фрагментацию), «want» (обычный режим).

-n

Позволяет пропустить процесс разрешения DNS-имён в IP-адреса, выводя только числовые адреса.

-O

Включает трассировку маршрута, позволяя увидеть изменения в маршрутизации ICMP-пакетов во время работы команды.

-p <шаблон>

Определяет шаблон данных для отправки.

-q

Тихий режим: выводит только итоговую статистику, а не информацию о каждом пакете.

-Q <класс>

Устанавливает класс трафика для отправляемых пакетов.

-s <размер>

Устанавливает размер пакета в байтах.

-S <размер>

Устанавливает размер буфера отправки сокета.

-t <TTL>

Устанавливает TTL (время жизни пакета).

-U

Показывает время безответной работы.

-v

Включает вербозный режим: выводит подробную информацию о каждом отправленном пакете.

-V

Выводит версию Ping и завершает работу.

-w <время_ожидания>

Определяет время ожидания до завершения выполнения команды.

-W <время_ожидания>

Устанавливает максимальное время ожидания ответа в секундах.

-4

Принудительно использует протокол IPv4 для отправки запросов.

-b

Разрешает пинг на широковещательный адрес.

-R

Включает запись маршрута в пакеты.

-T <временная_метка>

Устанавливает тип метки времени в пакетах. Доступные опции: «tsonly» (только метки времени), «tsandaddr» (метки времени и адреса) и «tsprespec» (заранее заданные метки времени).

-6

Принудительно использует протокол IPv6.

-F <метка_потока>

Устанавливает метку потока для отправляемых пакетов. Метка потока используется в IPv6 для обозначения пакетов принадлежащих конкретному потоку данных 

-N <nodeinfo opt>

Выбирает тип информации об узле для IPv6 пакетов. Доступные значения: «nodeaddr» (запрашивает адреса узла), «name» (запрашивает имя узла).

Синтаксис команды Ping в Windows

ping [-t] [-a] [-n <число>] [-l <размер>] [-f] [-i <TTL>] [-v <TOS>] [-r <число>] [-s <число>] [[-j <список_узлов>] | [-k <список_узлов>]] [-w <время_ожидания>] [-R] [-S <адрес_источника>] [-c секция] [-p] [-4] [-6] конечный_узел

Чтобы получить справку о командах Ping в командной строке (cmd), выполните следующую команду:

ping /?

Это позволит вывести список доступных параметров и их описания для команды Ping. 

Параметры Ping для Windows

Параметр

Описание

-t

Постоянно проверяет связь с указанным узлом, продолжая отправлять запросы, пока пользователь не прервёт процесс. Для отображения статистики и продолжения проверки нажмите клавиши CTRL+BREAK; для завершения нажмите CTRL+C.

-a

Позволяет отображать адреса в имена узлов в результатах проверки связи.

-n <число>

Устанавливает количество запросов проверки связи, отправляемых на узел.

-l <размер>

Определяет размер буфера данных для отправки.

-f

Включает флаг, который предотвращает фрагментацию пакетов (для IPv4).

-i <TTL>

Устанавливает максимальное количество прыжков (TTL) для пакетов.

-v <TOS>

Устанавливает тип обслуживания (TOS) для пакетов (только IPv4).

-r <число>

Определяет количество записей маршрутизации для отслеживания (только IPv4).

-s <число>

Устанавливает временную метку для определенного количества прыжков (только IPv4).

-j <список_узлов>

Позволяет выбрать свободный маршрут через указанный список узлов (только IPv4).

-k <список_узлов>

Указывает конкретный маршрут через указанный список узлов (только IPv4).

-w <время_ожидания>

Устанавливает время ожидания ответа от каждого пакета в миллисекундах.

-R

Использует заголовок маршрута для проверки и обратного маршрута (только IPv6).

-S <адрес_источника>

Устанавливает адрес источника для отправляемых пакетов.

-c секция

Устанавливает идентификатор секции маршрутизации.

-p

Позволяет проверить связь с сетевым адресом поставщика виртуализации Hyper-V.

-4

Принудительно использует протокол IPv4 для проверки связи.

-6

Принудительно использует протокол IPv6 для проверки связи.

Как проверить пинг через командную строку

  1. Чтобы проверить доступность сервера, откройте терминал или командную строку. 
  2. Если у вас Windows, то зажмите сочетание клавиш Win + R, введите «cmd» и нажмите Enter. Если вы пользователь Linux, откройте терминал или воспользуйтесь горячими клавишами Ctrl+Alt+T.
  3. Открыв командную строку, введите «ping» и адрес или доменное имя целевого сервера. Например:
ping sweb.ru 
  1. После ввода команды нажмите Enter. Начнётся отправка эхо-запросов к указанному серверу. По мере получения ответов вы увидите информацию о времени отклика и потерянных пакетах. Процесс продолжится до тех пор, пока вы не прервёте его вручную (обычно с помощью Ctrl+C).

В ответе вы увидите набор строк с информацией о времени отклика от целевого устройства или сайта, количество отправленных и полученных пакетов, а также процент потерь пакетов. Если все пакеты успешно доставлены и получены обратно, это означает, что связь с целевым устройством или сайтом установлена.

Изменение интервала между отправкой пакетов в команде Ping 

Общий синтаксис:

ping -i [количество-секунд] [IP-адрес или доменное-имя]

Интервал между отправкой пакетов в команде Ping определяет время задержки между каждой последовательной отправкой эхо-запроса к целевому узлу в сети. Устанавливая этот интервал, пользователь может контролировать частоту отправки пакетов и, таким образом, регулировать нагрузку на сеть и скорость выполнения проверки связи.

Настройка интервала между отправкой пакетов может быть полезной в различных сценариях сетевой диагностики и тестирования. Например, при тестировании надёжности и производительности сети можно увеличить интервал для симуляции условий реальной работы сети с более низкой интенсивностью трафика. Также уменьшение интервала может помочь выявить возможные проблемы с задержкой или потерей пакетов в сети.

По умолчанию команда Ping отправляет пакеты к целевому хосту каждую секунду. Однако при необходимости вы можете изменить это время. Чтобы настроить интервал между отправкой эхо-запросов, используйте параметр «-i» и укажите количество секунд, которое вы хотите задать. 

Например:

ping -i 10 sweb.ru 

Теперь эхо-запросы будут отправляться каждые 10 секунд к целевому хосту sweb.ru.

Важно! Чтобы задать интервал отправки меньше 0.2 секунды, необходимо иметь привилегии суперпользователя – sudo.

Непрерывная отправка пакетов

Общий синтаксис: 

ping -t [IP-адрес или доменное-имя]

Непрерывная отправка пакетов в команде Ping подразумевает постоянную передачу эхо-запросов к целевому узлу без остановки. Для этого используется параметр -t, который указывает утилите Ping отправлять эхо-запросы бесконечно до тех пор, пока процесс не будет прерван пользователем. Он позволяет непрерывно мониторить состояние связи с целевым узлом в реальном времени.

Непрерывная отправка пакетов особенно полезна для длительных тестов сетевой связи, мониторинга стабильности соединения или отслеживания изменений в производительности сети в течение продолжительного времени. Этот режим также позволяет оперативно обнаруживать и реагировать на возможные сбои или проблемы сети.

Для запуска непрерывной отправки пакетов достаточно выполнить команду Ping с опцией -t и указать IP-адрес или доменное имя целевого узла. Например:

ping -t sweb.ru

Команда запустит бесконечный пинг к узлу sweb.ru до тех пор, пока пользователь не прервёт выполнение команды.

Чтобы завершить его, зажмите сочетание клавиш Ctrl+C. После этого перед вами появится статистика отправленных пакетов. 

Изменение размера пакета 

Общий синтаксис:

ping -s [размер-пакета] [IP-адрес или доменное-имя]

Изменение размера пакета в команде Ping позволяет пользователю настраивать объём данных, отправляемых в каждом эхо-запросе к целевому узлу. Для этого используется опция -s.

Например, если вам нужно отправить пакет размером 100 байт, команда будет выглядит следующим образом:

ping -s 100 sweb.ru

Увеличение размера пакета позволяет проверить работу сети с большими объемами данных и выявить возможные проблемы с фрагментацией или потерей пакетов при передаче больших файлов. А уменьшение размера пакета может помочь определить проблемы сетевой пропускной способности или маршрутизации пакетов в сети с ограниченной пропускной способностью.

Настройка размера пакета позволяет пользователю гибко адаптировать процесс проверки связи под конкретные требования и условия сетевого окружения, обеспечивая более точные и информативные результаты тестирования.

Установка времени ожидания на получение пакета

Общий синтаксис:

ping -W [время-ожидания] [IP-адрес или доменное-имя]

Установка времени ожидания на получение пакета в команде Ping осуществляется с помощью параметра -W. Этот параметр позволяет указать максимальное время ожидания ответа на эхо-запрос от целевого узла.

Например:

ping -W 10 sweb.ru 

Теперь команда Ping будет ожидать ответа на каждый эхо-запрос в течение 10 секунд. Если в течение этого времени ответ от целевого узла не будет получен, то Ping продолжит отправлять следующие эхо-запросы.

Установка времени ожидания позволяет контролировать время, в течение которого команда Ping будет ждать ответа от целевого узла, что может быть полезно при проверке связи с узлами с различной производительностью или при обнаружении сетевых проблем.

Ограничение количества эхо-запросов

Общий синтаксис:

ping -c [число] [IP-адрес или доменное-имя]

Ограничение количества эхо-запросов в утилите Ping позволяет пользователю указать конкретное количество пакетов, которые должны быть отправлены к целевому узлу, прежде чем утилита завершит свою работу. Для этого используется опция -c, за которой следует число пакетов, которые вы хотите отправить.

Например, команда

ping -c 10 sweb.ru 

означает отправку только 10 эхо-запросов к указанному хосту. После отправки указанного количества пакетов утилита Ping завершит свою работу и выведет сводную статистику о произвёденных запросах.

Это полезная опция для быстрой проверки связи с целевым узлом или сайтом, когда вам необходимо ограничить количество отправляемых пакетов.

Тестирование нагрузки 

Важно! Чтобы протестировать нагрузку, у вас должны быть привилегии суперпользователя – sudo.

Общий синтаксис:

ping -f [IP-адрес или доменное-имя]

Тестирование нагрузки с Ping позволяет проверить устойчивость сетевого оборудования и сети в целом путём создания высокой нагрузки на сеть. 

Например, выполнение команды «ping -f sweb.ru» приведёт к отправке сотен тысяч запросов в секунду к указанному хосту, в зависимости от производительности сетевого оборудования и пропускной способности канала связи. Такой поток запросов будет значительной нагрузкой на сеть и сетевое оборудование, что позволяет оценить его производительность и устойчивость к высоким нагрузкам.

Тестирование нагрузки с помощью команды Ping – это полезный метод для выявления уязвимых мест в сети (перегруженные маршрутизаторы или сетевые адаптеры), а также для оценки эффективности механизмов обработки трафика и балансировки нагрузки в сети. 

Вывод статистики ping

Общий синтаксис:

ping -c [количество-запросов] -q [IP-адрес или доменное-имя]

Вывод статистики в команде Ping позволяет получить краткую сводку результатов после завершения отправки эхо-запросов. Для этого используется опция -q, которая подавляет вывод информации о каждом отправленном и полученном пакете, оставляя только общую статистику.

Например, выполнение команды «ping -c 5 -q sweb.ru» означает отправку 5 эхо-запросов к указанному хосту «sweb.ru» и выводит только сводную статистику о выполненных запросах после их завершения. Сюда относятся количество отправленных и полученных пакетов, процент потерь и среднее время отклика.

Использование вывода статистики вместо детальной информации о каждом пакете полезно, когда требуется быстро оценить качество связи с целевым хостом, не вдаваясь в подробности каждого эхо-запроса.

Какими могут быть ответы на эхо-запросы ping

При получении эхо-запроса команда Ping может получить различные ответы от целевого устройства, которые отражают его состояние и результаты обработки запроса. 

Наиболее распространённые ответы на эхо-запросы:

  • Echo Reply (ICMP Type 0) указывает на успешное получение пакета и ответ от целевого устройства. Он подтверждает, что связь с узлом установлена, и устройство работает нормально.
  • Destination Unreachable (ICMP Type 3) означает, что целевое устройство или промежуточный маршрутизатор не может доставить пакет до указанного пункта назначения. Этот вывод может быть вызван различными причинами – например, отсутствием маршрута к целевому узлу или блокировкой маршрутизатором.
  • Time Exceeded (ICMP Type 11) указывает на то, что время жизни (TTL) пакета истекло до того, как он достиг целевого узла. Обычно это происходит, когда пакет проходит через сетевые узлы и превышает максимальное количество прыжков (TTL), установленное в пакете.