PING
Updated: iputils-ss001110
Index Return to Main Contents
November 10, 2000
НАЗВАНИЕ
ping - посылает пакеты ICMP ECHO_REQUEST на сетевой компьютерСИНТАКСИС
ping [-LRUbdfnqrvV ] [-c count ] [-i interval ] [-l preload ] [-p pattern ] [-s packetsize ] [-t ttl ] [-w deadline ] [-I interface address ] [-T timestamp option ] [-Q tos ] [-M hint ] hostОПИСАНИЕ
Ping использует обязательные ECHO_REQUEST датаграммы для получения ICMP протоколом ответа ICMP ECHO_RESPONSE с узла или шлюза. ECHO_REQUEST датаграммы (``pings'') имеют IP и ICMP заголовок, сопровождаемый структурой “struct timeval” и затем случайными байтами, используемыми для заполнения пакета. Параметры могут быть такими:- -b
- Разрешает проверку широковещательного адреса.
- -c count
- Остановить работу после передачи count пакетов ECHO_REQUEST deadline , ping ждет count пакетов ECHO_REPLY , пока не закончится таймаут.
- -d
- Устанавливает параметр SO_DEBUG на используемый сокет.
- -f
- Избыточный ping. Выдает пакеты с наибольшей скоростью (по мере их возвращения) или со скоростью 100 раз в секунду, в зависимости от того, где получается большая скорость. Для каждого посланного запроса ECHO_REQUEST печатается ``.'', а для каждого принятого ECHO_REPLY печатается забой. Это обеспечивает динамичный показ эффективности работы. Использовать этот параметр может только суперпользователь. Bf -emphasis Этот параметр может перегрузить Вашу сеть и использовать его надо с большой осторожностью! Ef
- -i wait
- Ожидать wait секунд между отправкой пакетов. По умолчанию между отправкой пакетов делается пауза в 1 секунду. Этот параметр несовместим с параметром -f
- -I interface address
- Установить адрес источника в указанный interface address.
- -l preload
- Если указан параметр preload , то ping посылает с максимальной скоростью наибольшее количество пакетов и затем переходит в нормальный режим работы. Только суперпользователь может использовать этот параметр.
- -L
- Подавлять циклические петли для широковещательных пакетов. Этот ключ применяется только если назначением является широковещательный адрес.
- -n
- Только цифровой вывод. Не расшифровывать имена (символьный вид) адресов.
- -p pattern
- Вы можете указать до 16 байтов шаблона для заполнения пакетов. это полезно при диагностике проблем в сети. Например, “-p ff ” заполнит все пакеты пустыми символами.
- -Q tos
- Устанавливает качественную связь - связанные биты в датаграммах ICMP. tos может быть либо десятичным либо шестнадцатеричным числом. Обычно (RFC1349) это интерпретируется так: 0 зарезервировано (сейчас определено для управления событиями при переполнением), 1-4 для Типа Сервиса и 5-7 для предпочитаемых значений. Возможные значения для Типа Сервиса: минимальная время: 0x02, надежность: 0x04, пропускная способность: 0x08, задержка: 0x10. Установка нескольких битов TOS не должна производиться одновременно. Возможный диапазон для особых предпочитаемых значений: от приоритетного (0x20) до сетевого управления (0xe0). Вы должны быть суперпользователем (иметь возможность использовать CAP_NET_ADMIN) для использования Критического (или выше) предпочитаемых значений. Вы не можете устанавливать бит 0x01 (зарезервирован) пока не включен ECN в ядре. В RFC2474 эти поля переопределены как 8-битные Дифференцированные Сервисы (Differentiated Services - DS), состоящие из: биты 0-1 разделенных данных (тут будет использоваться ECN), и биты 2-7 для Кодов Дифференцированных Сервисов (Differentiated Services Codepoint - DSCP).
- -q
- Тихий вывод. Ничего не выводится, кроме итоговых строк в начале и в конце.
- -R
- Записывать маршрут. Включает параметр RECORD_ROUTE для пакетов ECHO_REQUEST и показывает буфер маршрута для возвращенных пакетов. Заметим, что заголовок IP достаточен для пересылки по таким маршрутам. Многие узлы игнорируют или не обрабатывают этот параметр.
- -r
- Минуя обычные таблицы маршрутизации передает данные прямо на компьютер в сети. Если компьютер не находится в текущей сети, то возвращается ошибка. Этот параметр может использоваться для проверки локальной машины через интерфейс, по которому не идет маршрутизация (например после того, как интерфейс был сброшен routed(8)).
- -s packetsize
- Определяет размер пакетов для пересылки. По умолчанию 56, преобразующиеся в 64 ICMP байтов данных при комбинации с 8 байтами ICMP заголовка.
- -t ttl
- Устанавливает время жизни IP для широковещательных пакетов. Только для широковещательных адресов.
- -T timestamp option
- Устанавливает специальную временную метку IP. Timestamp option может быть либо tsonly (только временная метка), tsandaddr (временная метка и адреса), или tsprespec host1 [host2 [host3 [host 4]]] (временная метка переходы).
- -M hint
- Выбирает стратегию дешифровки маршрута MTU. hint может быть либо do (запретить фрагментацию, даже локальную), want (выполнять дешифровку PMTU, фрагментация локальная если размер пакета достаточно велик), либо dont (не устанавливать флаг DF).
- -U
- Выводить настоящую задержку между пользователями (старое поведение).
- -v
- Выводить подробную информацию.
- -V
- Показать версию.
- -w deadline
- Определить таймаут в секундах до окончания работы ping - независимо от того, сколько пакетов было передано и получено.
При использовании ping для проверки связи сначала запустите ping по вашей локальной сети. Затем проверьте связь ping-ом с все более удаленными компьютерами и шлюзами. Время связи и потери пакетов подсчитываются и анализируются позднее. Есди принимаются дублированные пакеты, то они не включаются в статистику утерянных пакетов, хотя время прохода таких пакетов включается в статистику минимального/среднего/максимального времени. Когда указанное количество пакетов было отправлено (получено) или если программа была прервана сигналом SIGINT , то выводится краткий итог работы.
Если ping не получает ответных пакетов, то она завершит работу с кодом выхода 1. Если для пакетов указаны count и deadline , но принято менее count пакетов по истечении времени deadline , то программа также завершит рабоут с кодов выхода 1. При других ошибках выход будет произведен с кодом 2. Иначе программа завершает работу с кодом 0. Эти значения позволяют использовать коды выхода для определения работоспособности серверов и компьютеров.
Эта программа предназначена для использования при тестировании сетей, управления сетями и измерения сетевых статистик. Из-за нагрузок, которые она создает в сети, неразумно использовать ping в рабочее или в автоматических скриптах.
ОПИСАНИЕ ПАКЕТОВ ICMP
Заголовок IP без параметров имеет размер в 20 байтов. Пакет ICMP ECHO_REQUEST содержит дополнительные 8 байтов к ICMP заголовку, сопровождаемые случайным количеством данных. Когда задано packetsize , то определяется и размер дополнительного блока данных (по умолчанию 56). Поэтому количество принятых данных внутри IP пакета типа ICMP ECHO_REPLY всегда будет на 8 байтов больше, чем заданный ( ICMP заголовок).Если размер данных всего 8 байт, то ping использует их для включения временной метки, используемой для измерения времени прохода. Если указано менее 8 байт, то время прохода не будет определено.
ПОВТОРЯЮЩИЕСЯ И ПОВРЕЖДЕННЫЕ ПАКЕТЫ
Ping выводит сообщения о дублированных и поврежденных пакетах. Дублированные пакеты вообще не должны существовать, они свидетельствуют о ненадежной связи.Поврежденные пакеты являются прямым свидетельством проблем в аппаратной части сети на одном из участков, через который ping прогонял пакеты.
ПОПЫТКА РАЗЛИЧАТЬ ПЕРЕДАВАЕМЫЕ ДАННЫЕ
Внутренний уровень сети не должен обрабатывать пакеты по разному, в зависимости от содержащихся в них данных. К сожалению такие проблемы часто встречаются в сетях и остаются нераспознанными достаточно долго. Во многих случаях виноватым оказывается некоторый шаблон, некорректно обрабатывающий переводы данных (например, все нули или все единицы.В любом случае такие проблемы означают, что Вам предстоит очень много работ по тестированию и выявлению ошибочного сегмента. Если Вам повезет, то вы найдете файл, который вообще не будет передаваться по Вашей сети, или будет передаваться очень долго (по сравнению с файлами такого-же размера), и затем сможете изучить его на предмет возможных проблемных шаблонов, проверить которые Вы сможете, используя ключ -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 минус количество пройденных маршрутизаторов от удаленной системы до ping -уемого компьютера.
- Устанавливает его в какое-либо другое значение. Некоторые машины используют то же значение для пакетов ICMP , что они используют для TCP пакетов, например либо 30 либо 60. Некоторые могут использовать вообще непредсказуемые значения.
НАЙДЕННЫЕ ОШИБКИ
Многие узлы и шлюзы игнорируют RECORD_ROUTE параметр.Максимальная длина заголовка IP слишком мала для нормальной работы параметров типа RECORD_ROUTE
Избыточный ping вообще не рекомендуется, а избыточная проверка широковещательных адресов долно проводиться только при жестком контроле ситуации.
СМ. ТАКЖЕ
netstat(1), ifconfig(8)ИСТОРИЯ
Команда появилась в версии BSD 4.3Index
- НАЗВАНИЕ
- СИНТАКСИС
- ОПИСАНИЕ
- ОПИСАНИЕ ПАКЕТОВ ICMP
- ПОВТОРЯЮЩИЕСЯ И ПОВРЕЖДЕННЫЕ ПАКЕТЫ
- ПОПЫТКА РАЗЛИЧАТЬ ПЕРЕДАВАЕМЫЕ ДАННЫЕ
- TTL
- НАЙДЕННЫЕ ОШИБКИ
- СМ. ТАКЖЕ
- ИСТОРИЯ