PING(8)

НАЗВАНИЕ
ping, ping6 - посылает пакеты ICMP ECHO_REQUEST узлам сети

СИНТАКСИС
ping [-aAbBdDfhLnOqrRUvV] [-c количество] [-F идентификатор потока] [-i интервал] [-I адрес] [-l преднагрузка] [-m метка] [-M параметр стратегии обнаружения маршрута] [-N парматр запросов информационного узла] [-w ограничение на время работы] [-W время ожидания ответа] [-p шаблон] [-Q тип обслуживания] [-s размер пакета] [-S буфер отправки] [-t ttl] [-T параметр временной метки] [переход ...] назначение

ОПИСАНИЕ

ping использует обязательные датаграммы ECHO_REQUEST протокола ICMP для получения по этому протоколу ответов ECHO_RESPONSE от узла или шлюза. Датаграммы ECHO_REQUEST (“пинги”) состоят из заголовков IP и ICMP, структуры данных времени и произвольного числа несмысловых байтов для “заполнения” пакета.

ping6 является IPv6 версией ping и также может посылать информационные запросы (RFC4620). Промежуточные переходы могут не допускаться, если IPv6 машрутизация источника не предусмотрена (RFC5095).

ПАРАМЕТРЫ

-a  Сопровождать работу программы звуком.

-A  Адаптировать интервал между отправками пакетов к длительности их доставки и возврата. Таким образом, если только не выполняется преднагрузка, в любой момент времени может быть не больше одного пакета, на который не получен ответ. Минимальный интервал для не администратора - 200 мс. В сетях с низким rtt данный режим эквивалентен лавинообразному.

-b  Разрешить использование широковещательного адреса в качестве целевого.

-B  Запретить изменение исходного адреса для пакетов во время работы программы. Исходный адресопределяется в начале работы ping.

-c количество
    Остановить работу после передачи заданного количества пакетов ECHO_REQUEST. Если задано ограничение на время работы, программа будет ждать указанное количество ответных пакетов ECHO_REPLY в указанный период.

-d  Устанавливает параметр SO_DEBUG на используемый сокет. Примечание: этот параметр не используется ядром Linux.

-D  Отображать время (с учетом микросекунд, как установленно в gettimeofday) в каждой стоке.

-f  Лавинообразный режим. Для каждого пакета ECHO_REQUEST выводится точка “.”, для каждого ответного пакета ECHO_REPLY - забой (удаление последней точки). Это позволяет наглядно представлять число потерянных пакетов. Если интервал между отправками не задан, последние производятся с наибольшей скоростью (по мере получения ответов) или со скоростью 100 раз в секунду, в зависимости от того, в каком случае получается большая скорость. Задавать нулевой интервал между отправками может только суперпользователь.

-F идентификатор потока
    Устанавливать 20 битный идентификатор потока в отправляемых пакетах (только для ping6). Если указан ноль, идентификатор потока будет генерироваться случайно ядром.

-h  Выдать подсказку на стандартный вывод и успешно завершиться.

-i интервал
    Интервал в секундах между отправкой пакетов. По умолчанию между отправкой пакетов делается пауза в 1 секунду, либо, в случае лавинообразного режима, отправка производится без пауз. Задавать значения меньше 0.2 секунды может только суперпользователь.

-I адрес
    Установить адрес источника в указанный. В качестве аргумента может выступать числовой IP-адрес или имя устройства. Для ping6 при отправке запросов на адрес области локального соединения обязательно требуется уточнение связи (через данный параметр или комментарий '%' при назначении).

-l преднагрузка
    Послать с максимальной скоростью указанное количество пакетов, не дожидаясь ответов, и затем перейти в обычный режим работы. Значения больше 3 может указывать только суперпользователь.

-L  Подавлять циклические петли для широковещательных пакетов. Этот ключ применяется только если в качестве целевого адреса указан широковещательный.

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

-M параметр стратегии обнаружения маршрута
    Стратегия обнаружения маршрута MTU. Возможные значения: do (запретить фрагментацию, даже локальную), want (выполнять обнаружение PMTU, фрагментировать локально если размер пакета слишком большой) и dont (не устанавливать флаг DF).

-n  Только цифровой вывод. Не расшифровывать имена (символьный вид) адресов.

-N парматр запросов информационного узла
    Только для ping6. Посылает ICMPv6 запросы информационного узла (RFC4620), вместо запроса отклика.

    help
        Выдает подсказку для NI поддержке.

    name
        Запросы узловых имен.

    ipv6
        Запросы IPv6 адресов. Существет несколько IPv6 специальных флагов.

        ipv6-global
            Запрос IPv6 адресов глобальных областей.

        ipv6-sitelocal
            Запрос IPv6 сайт-местных адресов.

        ipv6-linklocal
            Запрос IPv6 адресов локальных соединений.

        ipv6-all
            Запрос IPv6 адресов для других интерфейсов.

    ipv4
        Запросы для IPv4 адресов. Существует только один IPv4 специальный флаг.

        ipv4-all
            Запрос IPv4 адресов для других интерфейсов.

    subject-ipv6=ipv6addr
        IPv6 адрес субьекта.

    subject-ipv4=ipv4addr
        IPv4 адрес субьекта.

    subject-name=nodename
        Имя субьекта. Если содержит более, чем одну точку, предполагается полное доменное имя.

    subject-fqdn=nodename
        Имя. Всегда предполагается полное доменное имя.

-O  Отображать поступающий ICMP ECHO ответ до предачи следующего пакета. Это удобно использовать при записи в файл диагностики и при поиске ответов вместе с параметром отображения времени -D.

-p шаблон
    Можно указать до 16 несмысловых байтов для “заполнения” пакетов. Это полезно при диагностике проблем в сети. Например, -p ff заполнит все пакеты символами единицы.

-q  Тихий вывод. Выводить только начальные и итоговые данные (не выводить информацию об отдельных запросах).

-Q тип обслуживания
    Установить разряды байта QoS (Quality of Service - качество обслуживания) для датаграмм ICMP. Параметр может быть либо десятичным либо шестнадцатеричным числом.

    В RFC 2474 эта область интерпретируется как 8 бит дифференцированного обслуживания (Differentiated Services - DS) и составлена из: битов 0-1 (2 нижних бита) изолированных данных, и битов 2-7 (6 верхних битов) точки кода дифференцированных служб (Differentiated Services Codepoint - DSCP). В  RFC2481 и RFC3168 биты 0-1 используются для ECN.

    Исторически (RFC1349 было отменено RFC2474) область интерпретировалась как: бит 0 (нижний бит) резрвный (недавно переопределенный для контроля перезагрузки), биты 1-4 определяющие тип обслуживания и биты 5-7 (верхние биты) как приоритетные.

-R  только ping. Записывать маршрут. Для пакетов ECHO_REQUEST будет включен параметр RECORD_ROUTE и на экран будет выведен буфер маршрута для возвращенных пакетов. Заметим, что в заголовок IP помещается не больше 9 таких маршрутов. Многие узлы игнорируют или отбрасывают этот параметр.

-r  Не использовать обычные таблицы маршрутизации и передавать данные прямо на компьютер, подключенный к интерфейсу. Если компьютер не находится в сети с прямым подключением, то возвращается сообщение об ошибке. Этот параметр может использоваться вместе с -I для проверки локальной системы через интерфейс, по которому не идет маршрутизация.

-s размер пакета
    Размер пакетов для пересылки. По умолчанию - 56, что соответствует размеру 64 байта после добавления 8 байтов заголовка ICMP.

-S буфер отправки
    Размер буфера отправки соединения. По умолчанию буферизируется не больше одного пакета.

-t ttl
    только ping. Время актуальности пакета IP (ttl - Time to Live).

-T параметр временной метки
    Параметры временной метки IP. Возможные значения параметра временной метки: tsonly (только временная метка), tsandaddr (временная метка и адреса) и tsprespec узел1 [узел2 [узел3 [узел4]]] (отмечать переходы).

-U  Выводить полное время прохода (старое поведение). По умолчанию выводится сетевое время прохода, которое может отличаться от реального, например из-за ошибок DNS.

-v  Выводить подробную информацию.

-V  Вывести информацию о версии и закончить работу.

-w ограничение на время работы
    Время, по истечении которого ping завершит свою работу независимо от количества посланных и принятых пакетов. При указании этого параметра время ожидания для одного пакета игнорируется и работа может быть завершена ранее указанного срока только в случае получения информации об ошибке (т.е. уведомления о том, что ответных пакетов точно не будет).

-W время ожидания ответа
    Время ожидания (в секундах) ответного пакета. Принимается во внимание только если не было принято ни одного ответа. В противном случае программа ожидает получения двух ответов.

При использовании команды ping для локализации неполадки сначала запустите ее с адресом локального хоста для проверки работоспособности локального сетевого интерфейса. Затем проверяйте связь посредством ping со все более удалёнными компьютерами и шлюзами. Время прохождения сигналов в обе стороны и потери пакетов подсчитываются и анализируются позднее. Если принимаются дублированные пакеты, то они не включаются в статистику утерянных пакетов, хотя время прохода таких пакетов включается в статистику минимального/среднего/максимального времени. После отправки и получения указанного количества пакетов или при прерывании работы программы сигналом SIGINT выводится краткий итог работы. Более краткую статистику можно получить без прерывания процесса с помощью сигнала SIGQUIT.

Если ответные пакеты не будут получены, то программа завершит работу с кодом выхода 1. Если указаны количество пакетов и ограничение на время работы, но по истечении этого времени принято менее запрошенного числа пакетов, то программа также завершит работу с кодом выхода 1. При других ошибках выход будет произведен с кодом 2. Иначе программа завершает работу с кодом 0. Эти значения позволяют использовать коды выхода для определения доступности серверов и компьютеров в сети.

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

ОПИСАНИЕ ПАКЕТОВ ICMP

Заголовок IP без параметров имеет размер 20 байтов. Пакет ICMP ECHO_REQUEST содержит дополнительные 8 байтов, предназначенные для заголовка ICMP, и произвольное количество заполняющих байтов (для обеспечения требуемого размера пакета), определяемое аргументом размер пакета данных (по умолчанию 56). Поэтому количество полученных данных из пакета IP типа ICMP ECHO_REPLY всегда будет на 8 байтов (заголовок ICMP) больше, чем задаваемое.

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

ПОВТОРЯЮЩИЕСЯ И ПОВРЕЖДЕННЫЕ ПАКЕТЫ

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

Поврежденные пакеты являются прямым свидетельством неполадок в аппаратной части на одном из участков сети, через который проходили пакеты (в сети или на ее узлах).

ТЕСТИРОВАНИЕ НА РАЗЛИЧНЫХ ДАННЫХ

(Меж)сетевая часть механизма передачи данных не должна обрабатывать пакеты по-разному, в зависимости от содержащихся в них данных. К сожалению такие проблемы часто встречаются в сетях и остаются невыявленными достаточно долго. Во многих случаях оказывается, что некорректно обрабатывается некоторый вырожденный шаблон, например, состоящий из одних нулей или единиц, либо близкий к нему. Простой проверки по вырожденным шаблонам данных недостаточно, т.к речь идёт о данных на уровне канала данных, которые могут соотноситься с указываемыми вами данными самым сложным образом.

В любом случае, такие проблемы означают, что вам предстоит очень много работ по тестированию и выявлению вышедшего из строя элемента. Если вам повезет, то вы найдёте файл, который вообще не будет передаваться по сети, или будет передаваться очень долго (по сравнению с файлами такого же размера), и затем сможете исследовать его на предмет возможных проблемных шаблонов, проверить которые можно с помощью ключа -p программы ping.

ВРЕМЯ АКТУАЛЬНОСТИ (TTL)

Значение TTL для пакетов IP задаёт максимальное количество IP-маршрутизаторов, через которое пакет еще будет доставляться, а не считаться утерянным. Сейчас каждый маршрутизатор в Интернете уменьшает поле TTL при обработке пакета на единицу.

Согласно спецификации TCP/IP значение поля TTL для пакетов TCP должно быть равно 60, но многие системы используют меньшие значения (4.3 BSD использует 30, 4.2 использует 15).

Максимальное значение данного поля равно 255, и многие Unix-системы устанавливают поле TTL для пакетов ICMP ECHO_REQUEST в 255. Поэтому иногда получается, что вы можете проверить связь командой “ping” до некоторых компьютеров, но не можете связаться с ними программами telnet(1) или ftp(1).

В обычном режиме ping выводит значения времени актуальности принятых (возвращенных) пакетов. При приеме пакета удаленной системой она может выполнить одно из трех возможных действий с полем TTL в ответ:

•   Не изменять его; это делали системы Berkeley Unix до выпуска BSD 4.3 Tahoe. TTL в принятом пакете будет 255 минус количество пройденных маршрутизаторов на пути в обе стороны.

•   Установить его в 255: это то, что системы Berkeley Unix делают сейчас. В этом случае значение TTL в принятом пакете будет 255 минус количество пройденных маршрутизаторов от удаленной системы до исходной.

•   Установить его в какое-либо другое значение. Некоторые машины устанавливают его равным используемому для TCP пакетов, например, либо 30 либо 60. Другие системы могут использовать вообще непредсказуемые значения.

НЕДОРАБОТКИ (BUGS)

•   Многие узлы и шлюзы игнорируют параметр RECORD_ROUTE.

•   Максимальная длина заголовка IP слишком мала для полноценной работы таких параметров, как RECORD_ROUTE. Однако, мало что можно сделать по этому поводу.

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

СМОТРИ ТАКЖЕ

netstat(1), ifconfig(8).

ИСТОРИЯ

Команда ping впервые появилась в 4.3BSD.

Настоящим документом описывается адаптированная для Linux версия программы.

БЕЗОПАСНОСТЬ

Для ping требуется функция CAP_NET_RAWIO. На программу может быть установлен бит set-uid root.

РАСПРОСТРАНЕНИЕ

ping является частью пакета iputils, исходный код последней версии которой доступен по адресу http://www.skbuff.net/iputils/iputils-current.tar.bz2.

ПЕРЕВОД
Перевод на русский язык выполнил Николай Шафоростов <shafff@ukr.net> 2007. Конвертирование в формат man выполнил Артур Юнусов <mcroodberg@mail.ru> 2010. Дополнение в соответствии с iputils-121221 Astra Linux 2015.