Отправка ICMP-пакетов ECHO_REQUEST хостам в сети (UNIX)
ping [-aDdfLnoPQqRrv] [-c количество] [-E политика] [-g шлюз] [-h хост] [-I адрес_интерфейса] [-i интервал] [-l предварительная_нагрузка] [-p шаблон] [-s размер_пакета] [-t тип_обслуживания] [-T предельное_время_существования] [-w максимальный_период_ожидания] хост
SO_DEBUG
для используемого сокета.Только пользователь с полномочиями суперпользователя (root) может использовать опцию -f. Тем не менее, применять ее следует с осторожностью, поскольку это может повлечь за собой возникновение высокой нагрузки на сеть. |
ЗОСРВ «Нейтрино»
aarch64, arm, armv7, e2k, mips, ppc, x86
Утилита ping для получения ICMP-пакетов ECHO_RESPONSE от указанного хоста или шлюза использует обязательную дейтаграмму ECHO_REQUEST протокола ICMP. В дейтаграммах ECHO_REQUEST, называемых ping-запросами, содержится заголовок IP и ICMP, за которым следует struct timeval и произвольное количество заполняющих байтов, используемых для заполнения пакета.
Для этой утилиты в полномочиях пользователя необходимо установить бит Setuid ("set user ID" (установить идентификатор пользователя)). В случае использования утилит mkefs, mketfs или mkifs на хосте Windows для добавления этой утилиты в образ необходимо задать атрибут perms для явного определения полномочий, а также атрибуты uid и gid для корректной настройки принадлежности. |
При использовании утилиты ping для выявления неисправностей следует сначала запустить ее на локальном хосте для проверки доступности и работоспособности локального сетевого интерфейса. После этого следует выполнить команду ping для удаленных на различное расстояние хостов и шлюзов. Во время работы утилиты вычисляется время на передачу и прием пакетов и статистика по потере пакетов. Полученные дублирующие пакеты не учитываются при вычислении статистики по потере пакетов, однако время на передачу и прием таких пакетов используется для подсчета минимальных/средних/максимальных значений времени на передачу и прием. После отправки (и получения) указанного количества пакетов или в случае завершения работы утилиты ping с помощью сигнала SIGINT
выводится краткая сводная информация.
Утилита ping предназначена для тестирования, оценки сетей и управления ими. С учетом нагрузки на сеть, которая может возникнуть во время ее работы, не следует использовать утилиту ping во время работы в нормальном режиме или в автоматических сценариях. |
Отладка
Утилиту ping можно применять для определения наличия связи с другими хостами. Предположим, был настроен канал "точка-точка" (PPP; Point-to-Point Protocol), но маршрут по умолчанию указан не был. Для определения наличия соединения с дальним концом линии связи можно ввести следующую команду:
ping isp.com
Если запрос выполнен успешно, утилита ping выводит информацию, аналогичную следующей:
PING isp.com (10.0.0.1): 56 data bytes 64 bytes from 10.0.0.1: icmp_seq=0 ttl=255 time=0 ms 64 bytes from 10.0.0.1: icmp_seq=1 ttl=255 time=0 ms 64 bytes from 10.0.0.1: icmp_seq=2 ttl=255 time=0 ms 64 bytes from 10.0.0.1: icmp_seq=3 ttl=255 time=0 ms 64 bytes from 10.0.0.1: icmp_seq=4 ttl=255 time=0 ms 64 bytes from 10.0.0.1: icmp_seq=5 ttl=255 time=0 ms 64 bytes from 10.0.0.1: icmp_seq=6 ttl=255 time=0 ms
Вывод отчета продолжается до завершения работы утилиты ping. Для завершения работы утилиты ping нажмите Ctrl - C
. На экран будет выведен следующий отчет:
--- isp.com ping statistics --- 7 packets transmitted, 7 packets received, 0% packet loss round-trip min/avg/max = 0/0/0 ms
Ошибки в работе утилиты ping могут возникать по различным причинам:
Информация об ICMP-пакетах
Без учета опций размер заголовка IP-пакета составляет 20 байтов. В ICMP-пакете ECHO_REQUEST содержатся дополнительные 8 байтов, соответствующие заголовку ICMP, за которыми следует произвольный объем данных. (Размер этого дополнительного блока данных определяется с помощью аргумента размер_пакета опции -s. Значение по умолчанию – 56
.) Таким образом, объем данных, получаемых в IP-пакете типа ECHO_REPLY ICMP, всегда на 8 байтов превышает требуемое пространство данных (заголовок ICMP).
Если размер пространства данных составляет минимум 8 байтов, утилита ping использует первые 8 байтов данного пространства для добавления метки времени, используемой при вычислении времени оборота. Если указанное количество заполняющих байтов составляет менее 8 (опция -p), то информация относительно времени на передачу и прием пакетов не выводится.
Дублированные и поврежденные пакеты
Утилита ping выводит информацию о дублированных и поврежденных пакетах.
Несмотря на то, что подобные ситуации возникать не должны, дублирование пакетов может появиться в различных случаях, а причиной этому может служить некорректная повторная передача на канальном уровне. Несмотря на то, что наличие дублированных пакеты редко (если когда-либо вообще) можно интерпретировать как хороший знак, незначительное количество дублированных пакетов не всегда является основанием для паники.
С другой стороны, поврежденные пакеты свидетельствуют о серьезных проблемах и часто указывают на наличие неисправности оборудования в определенном сегменте маршрута передачи пакета, отправленного утилитой ping (в сети или на хостах).
Применение различных шаблонов данных
Обработка пакетов на (меж)сетевом уровне в любом случае должна осуществляться вне зависимости от того, какие данные содержатся в информационной части пакета. К сожалению, известно, что в сетях возникают и долгое время оставаются необнаруженными проблемы, связанные с передачей данных. Во многих случаях шаблоны, вызывающие проблемы, не имеют достаточного количества "переходов" (например, шаблоны "все единицы" или "все нули") либо находятся в "приграничном" состоянии (например, шаблоны "почти все нули"). Таким образом, не всегда бывает достаточно указать шаблон данных "все нули", например, в командной строке, поскольку требуемый шаблон находится на уровне передачи данных (канальном уровне) – связь между данными, вводимыми пользователем, и данными, передаваемыми контроллерами, может быть весьма сложной.
По этой причине для обнаружения возникших проблем с передачей данных может потребоваться большой объем тестирования. При удачном стечении обстоятельств можно найти такой файл, который вообще невозможно передать по сети, либо файл, передача которого занимает значительно дольше, чем передача других файлов аналогичного размера. После этого можно проверить данный файл на наличие повторяющихся шаблонов, что можно сделать с использованием опции -p.
Информация о TTL
Значение предельного времени существования IP-пакета определяет максимальное количество IP-маршрутизаторов, через которые может пройти данный пакет перед его отклонением. С учетом современных методов обработки пакетов можно ожидать, что на каждом маршрутизаторе в сети Интернет значение поля TTL будет уменьшаться на единицу. Согласно спецификации TCP/IP для поля TTL TCP-пакетов следует установить значение 60, но во многих системах используется меньшее значение (в BSD версии 4.3 используется значение 30, в версии 4.2 – 15).
Максимально возможное значение данного поля – 255, и в большинстве систем UNIX (включая ЗОСРВ «Нейтрино») поле TTL ICMP-пакетов ECHO_REQUEST установлено в значение 255. Поэтому может возникнуть ситуация, в которой передача ping-запросов некоторым хостам будет успешной, но эти хосты будут недоступны при работе по telnet или ftp.
В нормальном режиме работы утилита ping выводит значение поля TTL получаемых пакетов. После поступления ping-пакета в удаленную систему поле TTL при отправке ответа может быть обработано одним из следующих трех способов:
Базовые подсистемы ЗОСРВ «Нейтрино», UNIX, NetBSD
ifconfig, io-pkt-*, netstat, ping6
Предыдущий раздел: Утилиты