ping, ping6 - посылает пакеты ICMP ECHO_REQUEST узлам сети
ping [-LRUbdfnqrvVaAB] [-c количество] [-i интервал] [-l преднагрузка] [-p шаблон] [-s размер пакета] [-t ttl] [-w ограничение на время работы] [-F идентификатор потока] [-I адрес] [-M подсказка] [-Q тип обслуживания] [-S буфер отправки] [-T параметр временной метки] [-W время ожидания ответка] [переход ...] назначение
ping использует обязательные датаграммы ECHO_REQUEST протокола ICMP для получения по этому протоколу ответов ECHO_RESPONSE от узла или шлюза. Датаграммы ECHO_REQUEST (“пинги”) состоят из заголовков IP и ICMP, структуры данных времени и произвольного числа несмысловых байтов для “заполнения” пакета.
При использовании команды ping для локализации неполадки сначала запустите ее с адресом локального хоста для проверки работоспособности локального сетевого интерфейса. Затем проверяйте связь посредством ping со все более удалёнными компьютерами и шлюзами. Время прохождения сигналов в обе стороны и потери пакетов подсчитываются и анализируются позднее. Если принимаются дублированные пакеты, то они не включаются в статистику утерянных пакетов, хотя время прохода таких пакетов включается в статистику минимального/среднего/максимального времени. После отправки и получения указанного количества пакетов или при прерывании работы программы сигналом SIGINT выводится краткий итог работы. Более краткую статистику можно получить без прерывания процесса с помощью сигнала SIGQUIT.
-a Сопровождать работу программы звуком. -A Адаптировать интервал между отправками пакетов к длительности их доставки и возврата. Таким образом, если только не выполняется преднагрузка, в любой момент времени может быть не больше одного пакета, на который не получен ответ. Минимальный интервал для не администратора - 200 мс. В сетях с низким rtt данный режим эквивалентен лавинообразному. -b Разрешить использование широковещательного адреса в качестве целевого. -B Запретить изменение исходного адреса для пакетов во время работы программы. Исходный адрес определяется в начале работы ping. -c количество Остановить работу после передачи заданного количества пакетов ECHO_REQUEST. Если задано ограничение на время работы, программа будет ждать указанное количество ответных пакетов ECHO_REPLY в указанный период. -d Устанавливает параметр SO_DEBUG на используемый сокет. Примечание: этот параметр не используется ядром Linux. -F идентификатор потока Устанавливать 20 битный идентификатор потока в отправляемых пакетах (только для ping6). Если указан ноль, идентификатор потока будет генерироваться случайно ядром. -f Лавинообразный режим. Для каждого пакета ECHO_REQUEST выводится точка “.”, для каждого ответного пакета ECHO_REPLY - забой (удаление последней точки). Это позволяет наглядно представлять число потерянных пакетов. Если интервал между отправками не задан, последние производятся с наибольшей скоростью (по мере получения ответов) или со скоростью 100 раз в секунду, в зависимости от того, в каком случае получается большая скорость. Задавать нулевой интервал между отправками может только суперпользователь. -i интервал Интервал в секундах между отправкой пакетов. По умолчанию между отправкой пакетов делается пауза в 1 секунду, либо, в случае лавинообразного режима, отправка производится без пауз. Задавать значения меньше 0.2 секунды может только суперпользователь. -I адрес Установить адрес источника в указанный. В качестве аргумента может выступать числовой IP-адрес или имя устройства. Этот параметр обязателен при отправке запросов на локально соединенный адрес IPv6. -l преднагрузка Послать с максимальной скоростью указанное количество пакетов, не дожидаясь ответов, и затем перейти в обычный режим работы. Значения больше 3 может указывать только суперпользователь. -L Подавлять циклические петли для широковещательных пакетов. Этот ключ применяется только если в качестве целевого адреса указан широковещательный. -n Только цифровой вывод. Не расшифровывать имена (символьный вид) адресов. -p шаблон Можно указать до 16 несмысловых байтов для “заполнения” пакетов. Это полезно при диагностике проблем в сети. Например, -p ff заполнит все пакеты символами единицы. -Q тип обслуживания Разряды байта QoS (Quality of Service - качество обслуживания) для датаграмм ICMP. Тип обслуживания может быть либо десятичным либо шестнадцатеричным числом. Обычно (согласно RFC 1349) это значение интерпретируется так: младший (нулевой) разряд зарезервирован (сейчас используется для управления событиями при переполнении), разряды 1-4 используются для указания собственно типа обслуживания, и разряды 5-7 для приоритета (IP-предпочтения). Возможные типы обслуживания: минимизация стоимости - 0x02, максимизация надежности - 0x04, максимизация пропускной способности - 0x08, минимизация задержек - 0x10. Одновременно можно указывать только один из четырёх перечисленных разрядов. Возможный диапазон значения приоритета - от приоритетного (0x20) до управляемого сетью (0xe0). Для указания высокого приоритета необходимы права суперпользователем (точнее, должно быть доступна возможность CAP_NET_ADMIN). Разряд 0x01 можно устанавливать только если в ядре включен ECN. В RFC 2474 этот байт переопределен как дифференцированные службы (Differentiated Services - DS): разряды 0-1 отведены для отдельных данных (тут будет использоваться ECN) разряды 2-7 для точки кода дифференцированных служб (Differentiated Services Codepoint - DSCP). -q Тихий вывод. Выводить только начальные и итоговые данные (не выводить информацию об отдельных запросах). -R Записывать маршрут. Для пакетов ECHO_REQUEST будет включен параметр RECORD_ROUTE и на экран будет выведен буфер маршрута для возвращенных пакетов. Заметим, что в заголовок IP помещается не больше 9 таких маршрутов. Многие узлы игнорируют или отбрасывают этот параметр. -r Не использовать обычные таблицы маршрутизации и передавать данные прямо на компьютер, подключенный к интерфейсу. Если компьютер не находится в сети с прямым подключением, то возвращается сообщение об ошибке. Этот параметр может использоваться вместе с -I для проверки локальной системы через интерфейс, по которому не идет маршрутизация. -s размер пакета Размер пакетов для пересылки. По умолчанию - 56, что соответствует размеру 64 байта после добавления 8 байтов заголовка ICMP. -S буфер отправки Размер буфера отправки соединения. По умолчанию буферизируется не больше одного пакета. -t ttl Время актуальности пакета IP (ttl - Time to Live). -T параметр временной метки Параметры временной метки IP. Возможные значения параметра временной метки: tsonly (только временная метка), tsandaddr (временная метка и адреса) и tsprespec узел1 [узел2 [узел3 [узел4]]] (отмечать переходы). -M подсказка Стратегия обнаружения маршрута MTU. Возможные значения: do (запретить фрагментацию, даже локальную), want (выполнять обнаружение PMTU, фрагментировать локально если размер пакета слишком большой) и dont (не устанавливать флаг DF). -U Выводить полное время прохода (старое поведение). По умолчанию выводится сетевое время прохода, которое может отличаться от реального, например из-за ошибок DNS. -v Выводить подробную информацию. -V Вывести информацию о версии и закончить работу. -w ограничение на время работы Время, по истечении которого ping завершит свою работу независимо от количества посланных и принятых пакетов. При указании этого параметра время ожидания для одного пакета игнорируется и работа может быть завершена ранее указанного срока только в случае получения информации об ошибке (т.е. уведомления о том, что ответных пакетов точно не будет). -W время ожидания ответа Время ожидания (в секундах) ответного пакета. Принимается во внимание только если не было принято ни одного ответа. В противном случае программа ожидает получения двух ответов. Если ответные пакеты не будут получены, то программа завершит работу с кодом выхода 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 в ответ:
o Не изменять его; это делали системы Berkeley Unix до выпуска BSD 4.3 Tahoe. TTL в принятом пакете будет 255 минус количество пройденных маршрутизаторов на пути в обе стороны. o Установить его в 255: это то, что системы Berkeley Unix делают сейчас. В этом случае значение TTL в принятом пакете будет 255 минус количество пройденных маршрутизаторов от удаленной системы до исходной. o Установить его в какое-либо другое значение. Некоторые машины устанавливают его равным используемому для TCP пакетов, например, либо 30 либо 60. Другие системы могут использовать вообще непредсказуемые значения.
o Многие узлы и шлюзы игнорируют параметр RECORD_ROUTE. o Максимальная длина заголовка IP слишком мала для полноценной работы таких параметров, как RECORD_ROUTE. Однако, мало что можно сделать по этому поводу. o Использовать лавинообразный режим вообще не рекомендуется, а в случаях когда целью является широковещательный адрес, лавинообразный режим следует применять в условиях тщательного контроля.
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-071127 | PING (8) | 09 декабря 2007 г. |