ping(8)
| PING(8) | Руководство системного администратора: iputils | PING(8) |
ИМЯ
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, структуры данных struct timeval и произвольного числа несмысловых байтов для заполнения пакета.
ОПЦИИ
- -a
- Сопровождать работу программы звуком.
- -A
- Адаптировать интервал между отправками пакетов к длительности их доставки и возврата. Таким образом, если только не выполняется преднагрузка, в любой момент времени может быть не больше одного пакета, на который не получен ответ. Минимальный интервал для не администратора - 200 мс. В сетях с низким rtt данный режим эквивалентен лавинообразному.
- -b
- Разрешить использование широковещательного адреса в качестве целевого.
- -B
- Запретить изменение исходного адреса для пакетов во время работы программы. Исходный адрес определяется в начале работы ping.
- -c количество
- Остановить работу после передачи заданного количества пакетов ECHO_REQUEST. Если задано ограничение-на-время-работы, программа будет ждать указанное количество ответных пакетов ECHO_REPLY в указанный период.
- -d
- Устанавливает параметр SO_DEBUG на используемый сокет. Примечание: этот параметр не используется ядром Linux.
- -F идентификатор-потока
- Устанавливать идентификатор-потока в отправляемых пакетах (только для 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 этот байт переопределён как DS (Differentiated Services - дифференцированные службы): разряды 0-1 отведены для отдельных данных (тут будет использоваться ECN) разряды 2-7 для DSCP (Differentiated Services Codepoint - точка кода дифференцированных служб)
- -q
- Выводить только начальные и итоговые данные (не выводить информацию об отдельных запросах).
- -R
- Записывать маршрут. Для пакетов ECHO_REQUEST будет включен параметр RECORD_ROUTE и на экран будет выведен буфер маршрута для возвращённых пакетов. Заметим, что в заголовок IP помещается не больше 9 таких маршрутов. Многие узлы игнорируют или не отбрасывают этот параметр.
- -r
- Не использовать обычные таблицы маршрутизации и передавать данные прямо на компьютер, подключенный к интерфейсу. Если компьютер не находится в сети с прямым подключением, то возвращается сообщение об ошибке. Этот параметр может использоваться вместе с -I для проверки локальной системы через интерфейс, по которому не идет маршрутизация (например после того, как интерфейс был сброшен routed(8)).
- -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 время-ожидания-ответа
- Время ожидания (в секундах) ответного пакета. Принимается во внимание только если не было принято ни одного ответа. В противном случае программа ожидает получения двух ответов.
При использовании команды ping для локализации неполадки сначала запустите её с адресом локального хоста для проверки работоспособности локального сетевого интерфейса. Затем проверяйте связь посредством ping со всё более удалёнными компьютерами и шлюзами. Время прохождения сигналов в обе стороны и потери пакетов подсчитываются и анализируются позднее. Если принимаются дублированные пакеты, то они не включаются в статистику утерянных пакетов, хотя время прохода таких пакетов включается в статистику минимального/среднего/максимального времени. После отправки и получения указанного количества пакетов или при прерывании работы программы сигналом выводится краткий итог работы. Более краткую статистику можно получить без прерывания процесса с помощью сигнала SIGQUIT.
Если ответные пакеты не будут получены, то программа завершит работу с кодом выхода 1. Если указаны количество пакетов и ограничение-на-время-работы, но по истечении этого времени принято менее запрошенного числа пакетов, то программа также завершит работу с кодом выхода 1. При других ошибках выход будет произведен с кодом 2. Иначе программа завершает работу с кодом 0. Эти значения позволяют использовать коды выхода для определения доступности серверов и компьютеров в сети.
Эта программа предназначена для тестирования сетей, управления сетями и измерения производительности. Из-за нагрузок, которые она создаёт в сети, неразумно использовать ping в рабочее время или в автоматических сценариях.
ОПИСАНИЕ ПАКЕТОВ ICMP
Заголовок IP без параметров имеет размер 20 байтов. Пакет ICMP ECHO_REQUEST содержит дополнительные 8 байтов, предназначенные для заголовка ICMP, и произвольное количество заполняющих байтов (для обеспечения требуемого размера пакета), определяемое аргументом размер-пакета данных (по умолчанию 56). Поэтому количество полученных данных из пакета IP типа ICMP ECHO_REPLY всегда будет на 8 байтов (заголовок ICMP) больше, чем задаваемое.
Если заданный размер данных не меньше размера struct timeval, то программа включает в них временную метку, используемую для измерения времени прохода сигнала в обе стороны. В противном случае такое время не будет измеряться.
ПОВТОРЯЮЩИЕСЯ И ПОВРЕЖДЁННЫЕ ПАКЕТЫ
Программа выводит сообщения о дублированных и повреждённых пакетах. Дублированные пакеты свидетельствуют о ненадёжной связи на уровне канала. Они могут появляться в разных ситуациях и если это происходит с небольшой частотой, то на это можно не обращать внимания.
Повреждённые пакеты являются прямым свидетельством неполадок в аппаратной части на одном из участков сети, через который проходили пакеты.
ТЕСТИРОВАНИЕ НА РАЗЛИЧНЫХ ДАННЫХ
(Меж)сетевая часть механизма передачи данных не должна обрабатывать пакеты по-разному, в зависимости от содержащихся в них данных. К сожалению такие проблемы часто встречаются в сетях и остаются невыявленными достаточно долго. Во многих случаях оказывается, что некорректно обрабатывается некоторый вырожденный шаблон, например, состоящий из одних нулей или единиц, либо близкий к нему. Простой проверки по вырожденным шаблонам данных недостаточно, т.к речь идёт о данных на уровне канала данных, которые могут соотноситься с указываемыми вами данными самым сложным образом.
В любом случае, такие проблемы означают, что вам предстоит очень много работ по тестированию и выявлению вышедшего из строя элемента. Если вам повезёт, то вы найдёте файл, который вообще не будет передаваться по сети, или будет передаваться очень долго (по сравнению с файлами такого же размера), и затем сможете исследовать его на предмет возможных проблемных шаблонов, проверить которые можно с помощью ключа -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. Другие системы могут использовать вообще непредсказуемые значения.
ИЗВЕСТНЫЕ ОШИБКИ
- •
- Многие узлы и шлюзы игнорируют параметр RECORD_ROUTE.
- •
- Максимальная длина заголовка IP слишком мала для полноценной работы таких параметров, как RECORD_ROUTE.
- •
- Использовать лавинообразный режим вообще не рекомендуется, а в случаях когда целью является широковещательный адрес, лавинообразный режим следует применять в условиях тщательного контроля.
СМ. ТАКЖЕ
netstat(1), ifconfig(8).
ИСТОРИЯ
Команда ping впервые появилась в 4.3BSD.
Настоящим документом описывается адаптированная для Linux версия программы.
БЕЗОПАСНОСТЬ
Для ping требуется функция CAP_NET_RAWIO. На программу может быть установлен бит set-uid root.
РАСПРОСТРАНЕНИЕ
ping является частью пакета iputils, который доступен по адресу ftp://ftp.inr.ac.ru/ip-routing/iputils-current.tar.gz.
ПЕРЕВОД
Николай Шафоростов <shafff@ukr.net> 2007
| 27 сентября 2002 | iputils-020927 |
