ping, ping6 − посылает пакеты ICMP ECHO_REQUEST узлам сети
ping [−aAbBdDfhLnOqrRUvV] [−c количество] [−F метка_потока] [−i интервал] [−I интерфейс] [−l преднагрузка] [−m метка] [−M опция_pmtudisc] [−N опция_nodeinfo] [−w ограничение_срока] [−W время_ожидания_ответа] [−p шаблон] [−Q tos] [−s размер_пакета] [−S буфер_отправки] [−t время_жизни] [−T опция_отметки_времени] [скачки ...] получатель
ping использует обязательные датаграммы ECHO_REQUEST протокола ICMP для получения по этому протоколу ответов ECHO_RESPONSE от узла или шлюза. Датаграммы ECHO_REQUEST ("пинги") состоят из заголовков IP и ICMP, структуры данных времени и произвольного числа дополнительных байтов для заполнения пакета.
ping6 − это IPv6−версия ping, которая также может отправлять запросы информации об узле (Node Information Queries, RFC4620). Промежуточные прыжки могут быть запрещены, поскольку в IPv6 маршрутизация от источника была объявлена устаревшей (RFC5095).
−a |
Сопровождать работу программы звуком. |
||
−A |
Адаптивный ping. Адаптировать интервал между отправками пакетов к длительности их доставки и возврата. Таким образом, если только не выполняется преднагрузка, в любой момент времени может быть не больше одного пакета, на который не получен ответ. Минимальный интервал для не администратора − 200 мс. В сетях с низким rtt данный режим эквивалентен лавинообразному. |
||
−b |
Разрешить использование широковещательного адреса в качестве целевого. |
||
−B |
Запретить изменение исходного адреса для пакетов во время работы программы. Исходный адрес определяется в начале работы ping. |
−c количество
Остановить работу после передачи заданного количества пакетов ECHO_REQUEST. Если задано ограничение на время работы, программа будет ждать указанное количество ответных пакетов ECHO_REPLY в указанный период.
−d |
Устанавливает параметр SO_DEBUG на используемый сокет. Примечание: этот параметр не используется ядром Linux. |
||
−D |
Показывать отметки времени (время unix + микросекунды, как в gettimeofday) перед каждой строкой. |
||
−f |
Лавинообразный режим. Для каждого пакета ECHO_REQUEST выводится точка ".", для каждого ответного пакета ECHO_REPLY − забой (удаление последней точки). Это позволяет наглядно представлять число потерянных пакетов. Если интервал между отправками не задан, последние производятся с наибольшей скоростью (по мере получения ответов) или со скоростью 100 раз в секунду, в зависимости от того, в каком случае получается большая скорость. Задавать нулевой интервал между отправками может только суперпользователь. |
−F идентификатор потока
Только для ping6. Выделить и установить 20−битный идентификатор потока (в шестнадцатеричном виде) в отправляемых пакетах. Если указан ноль, идентификатор потока будет генерироваться случайно ядром.
−h |
Отобразить справку. |
−i интервал
Интервал в секундах между отправкой пакетов. По умолчанию между отправкой пакетов делается пауза в 1 секунду, либо, в случае лавинообразного режима, отправка производится без пауз. Задавать значения меньше 0.2 секунды может только суперпользователь.
−I интерфейс
Интерфейс может быть адресом или именем интерфейса. Если интерфейс − это адрес, он задаёт адрес интерфейса−источника. Если интерфейс − это имя интерфейса, оно задаёт имя интерфейса−источника. При попытках пинговать адреса из диапазона, необходимо указывать ping6 связь (при помощи формы записи с ’%’ в получателе или при помощи этой опции).
−l преднагрузка
Послать с максимальной скоростью указанное количество пакетов, не дожидаясь ответов, и затем перейти в обычный режим работы. Значения больше 3 может указывать только суперпользователь.
−L |
Подавлять циклические петли для широковещательных пакетов. Этот ключ применяется только если в качестве целевого адреса указан широковещательный. |
−m метка
Воспользуйтесь меткой для того, чтобы пометить исходящие пакеты. Это бывает полезно, например, для выбора нужного маршрута, если используется маршрутизация по политикам.
−M опция_pmtudisc
Стратегия обнаружения маршрута MTU. Возможные значения: do (запретить фрагментацию, даже локальную), want (выполнять обнаружение PMTU, фрагментировать локально если размер пакета слишком большой) и dont (не устанавливать флаг DF).
−N опция_nodeinfo
Только ping6. Отправлять запросы информации об узле ICMPv6 (Node Information Queries − RFC4620), вместо эхо−запросов.
help |
Показать справку о поддержке NI. |
||
name |
Запросы имён узла (Node Names). |
||
ipv6 |
Запросы адресов IPv6. Существует несколько опций, специфичных для IPv6. |
ipv6−global
Запрашивать адреса IPv6 в глобальном пространстве.
ipv6−sitelocal
Запрашивать адреса IPv6 в локальном пространстве.
ipv6−linklocal
Запрашивать адреса IPv6 локального соединения.
ipv6−all
Запрашивать адреса IPv6 на других интерфейсах.
ipv4 |
Запрашивать адреса IPv4. Эта опция специфична для IPv4. |
ipv4−all
Запрашивать адреса IPv4 на других интерфесах.
subject−ipv6=адрес_ipv6
Данный адрес IPv6.
subject−ipv4=адрес_ipv4
Данный адрес IPv4.
subject−name=имя_узла
Данное имя. Если оно содержит больше одной точки, подразумевается полное доменное имя.
subject−fqdn=имя_узла
Данное имя. Всегда подразумевается полное доменное имя.
−n |
Только цифровой вывод. Не выполнять просмотр символьных имён адресов узла. |
||
−O |
Доложить об исходящем ответе ICMP ECHO перед отправкой следующего пакета. Эта опция полезна вместе с отметками времени −D для ведения файла диагностики и поиска пропущенных ответов. |
−p шаблон
Можно указать до 16 дополнительных байтов для "заполнения" пакетов. Полезно при диагностике сетевых проблем, связанными с данными. Например, −p ff заполнит все пакеты единицами.
−q |
Тихий вывод. Выводить только начальные и итоговые данные (не выводить информацию об отдельных запросах). |
−Q тип обслуживания
Задать бит, относящиеся к качеству обслуживания (Quality of Service) в пакете ICMP. Тип обслуживания может быть десятичным (только ping) или в шестнадцатеричном виде.
В RFC2474 эти поля интерпретируются как 8−битные различители сервисов (Differentiated Services, DS), состоящие из: битов 0−1 (2 младших бита) отделения данных, и битов 2−7 (6 старших битов) кодов различителей сервисов (Differentiated Services Codepoint, DSCP). В RFC2481 и RFC3168, битя 0−1 используются для ECN.
Исторически (в соответствии с RFC1349, который замещён RFC2474), они интерпретировались как: бит 0 (младший бит) зарезервирован (в настоящее время переопределён как управление перегрузкой), 1−4 биты для типа сервиса (Type of Service) и биты 5−7 (старшие биты) для приоритета (Precedence).
−r |
Не использовать обычные таблицы маршрутизации и передавать данные прямо на компьютер, подключенный к интерфейсу. Если компьютер не находится в сети с прямым подключением, то возвращается сообщение об ошибке. Этот параметр может использоваться вместе с −I для проверки локальной системы через интерфейс, по которому не идет маршрутизация. |
||
−R |
Только ping. Записывать маршрут. Для пакетов ECHO_REQUEST будет включен параметр RECORD_ROUTE и на экран будет выведен буфер маршрута для возвращенных пакетов. Заметим, что в заголовок IP помещается не больше 9 таких маршрутов. Многие узлы игнорируют или отбрасывают этот параметр. |
−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 ожидает получения ответа в течение двух интервалов RTT.
При использовании команды ping для локализации неполадки сначала запустите ее с адресом локального хоста для проверки работоспособности локального сетевого интерфейса. Затем проверяйте связь посредством ping со все более удалёнными компьютерами и шлюзами. Время прохождения сигналов в обе стороны и потери пакетов подсчитываются и анализируются позднее. Если принимаются дублированные пакеты, то они не включаются в статистику утерянных пакетов, хотя время прохода таких пакетов включается в статистику минимального/среднего/максимального времени. После отправки и получения указанного количества пакетов или при прерывании работы программы сигналом SIGINT выводится краткий итог работы. Более краткую статистику можно получить без прерывания процесса с помощью сигнала SIGQUIT.
Если ответные пакеты не будут получены, то программа завершит работу с кодом выхода 1. Если указаны количество пакетов и ограничение на время работы, но по истечении этого времени принято менее запрошенного числа пакетов, то программа также завершит работу с кодом выхода 1. При других ошибках выход будет произведен с кодом 2. Иначе программа завершает работу с кодом 0. Эти значения позволяют использовать коды выхода для определения доступности серверов и компьютеров в сети.
Эта программа предназначена для тестирования сетей, управления сетями и измерения производительности. Из−за нагрузок, которые она создаёт в сети, неразумно использовать ping в рабочее время или в автоматических сценариях.
Заголовок IP без параметров имеет размер 20 байтов. Пакет ICMP ECHO_REQUEST содержит дополнительные 8 байтов, предназначенные для заголовка ICMP, и произвольное количество заполняющих байтов (для обеспечения требуемого размера пакета), определяемое аргументом размер пакета данных (по умолчанию 56). Поэтому количество полученных данных из пакета IP типа ICMP ECHO_REPLY всегда будет на 8 байтов (заголовок ICMP) больше, чем задаваемое.
Если заданный размер данных не меньше размера структуры данных времени, то программа включает в них временную метку, используемую для измерения времени прохода сигнала в обе стороны. В противном случае такое время не будет измеряться.
Программа выводит сообщения о дублированных и поврежденных пакетах. Дублированные пакеты свидетельствуют о ненадежной связи на уровне канала. Дубликаты могут появляться в разных ситуациях и если это происходит редко (если вообще происходит), то это хороший знак, потому что небольшое количество дубликатов не является причиной для беспокойства.
Поврежденные пакеты являются прямым свидетельством неполадок в аппаратной части на одном из участков сети, через который проходили пакеты (в сети или на ее узлах).
(Меж)сетевая часть механизма передачи данных не должна обрабатывать пакеты по−разному, в зависимости от содержащихся в них данных. К сожалению такие проблемы часто встречаются в сетях и остаются не выявленными достаточно долго. Во многих случаях оказывается, что некорректно обрабатывается некоторый вырожденный шаблон, например, состоящий из одних нулей или единиц, либо близкий к нему. Простой проверки по вырожденным шаблонам данных недостаточно, т.к речь идёт о данных на уровне канала, которые могут соотноситься с указываемыми вами данными самым сложным образом.
В любом случае, такие проблемы означают, что вам предстоит очень много работ по тестированию и выявлению вышедшего из строя элемента. Если вам повезет, то вы найдёте файл, который вообще не будет передаваться по сети, или будет передаваться очень долго (по сравнению с файлами такого же размера), и затем сможете исследовать его на предмет возможных проблемных шаблонов, проверить которые можно с помощью ключа −p программы ping.
Значение 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. Другие системы могут использовать вообще непредсказуемые значения. |
• |
Многие узлы и шлюзы игнорируют параметр RECORD_ROUTE. |
||
• |
Максимальная длина заголовка IP слишком мала для полноценной работы таких параметров, как RECORD_ROUTE. Однако, мало что можно сделать по этому поводу. |
||
• |
Использовать лавинообразный режим вообще не рекомендуется, а в случаях когда целью является широковещательный адрес, лавинообразный режим следует применять в условиях тщательного контроля. |
netstat(1), ifconfig(8).
Команда ping впервые появилась в 4.3BSD.
Настоящим документом описывается адаптированная для Linux версия программы.
Для ping требуется функция CAP_NET_RAW. На программу может быть установлен бит set−uid root.
ping является частью пакета iputils, исходный код последней версии которой доступен по адресу http://www.skbuff.net/iputils/iputils−current.tar.bz2.
Перевод на русский язык выполнил Николай Шафоростов <shafff@ukr.net>.
Конвертирование в формат man выполнил Артур Юнусов <mcroodberg@mail.ru>.
Обновление перевода - Владимир Ступин <vladimir@stupin.su>.