ping - посылает пакеты ICMP ECHO_REQUEST узлам сети
НАЗВАНИЕ
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 в рабочее время или в автоматических сценариях.
ОПИСАНИЕ ПАКЕТОВ 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_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>.