table of contents
- НАИМЕНОВАНИЕ
- СИНОПСИС
- ОПИСАНИЕ
- ОПЦИИ
- ПЕРЕМЕННЫЕ ОКРУЖЕНИЯ
- СТАТУС ВЫХОДА
- ЛОКАЛЬНЫЕ АДРЕСАТЫ IPv6
- ПОДРОБНОСТИ ПАКЕТА ICMP
- ДУБЛИРУЮЩИЕСЯ И ПОВРЕЖДЁННЫЕ ПАКЕТЫ
- КОЛЛИЗИИ ИДЕНТИФИКАТОРА ID
- ТРУДНОСТИ РАЗЛИЧНЫХ ШАБЛОНОВ ДАННЫХ
- ПОДРОБНОСТИ TTL
- ПРОГРАММНЫЕ ОШИБКИ
- СМОТРИТЕ ТАКЖЕ
- ИСТОРИЯ
- БЕЗОПАСНОСТЬ
- ДОСТУПНОСТЬ
- ПЕРЕВОД
- unstable 4.32.4-1
| PING(8) | iputils | PING(8) |
НАИМЕНОВАНИЕ¶
ping - посылает пакеты ICMP ECHO_REQUEST хостам сети
СИНОПСИС¶
ping [-aAbBdCDfhHLnOqrRUvV346] [-c count] [-e identifier] [-F flowlabel] [-i interval] [-I interface] [-l preload] [-m mark] [-M pmtudisc_option] [-N nodeinfo_option] [-w deadline] [-W timeout] [-p pattern] [-Q tos] [-s packetsize] [-S sndbuf] [-t ttl] [-T timestamp option] [hop...] {destination}
ОПИСАНИЕ¶
Утилита ping использует протокол ICMP (обязательная дейтаграмма ECHO_REQUEST для получения ICMP ECHO_RESPONSE от хоста или шлюза. Дейтаграммы ECHO_REQUEST содержат заголовок IP и ICMP, за которым следует значение времени, а затем произвольное количество байтов, используемых для заполнения пакета.
Утилита ping работает как с протоколом IPv4, так и с протоколом IPv6. Можно принудительно использовать только один из них, указав -4 или -6.
ping также может отправлять запросы информации об узлах IPv6 (RFC4620). Использование промежуточных переходов hop может быть запрещено, поскольку исходная маршрутизация IPv6 устарела (RFC5095).
ОПЦИИ¶
-3
-4
-6
-a
-A
-b
-B
-c count
-C
-d
-D
-e identifier
-f
-F flow label
-h
-H
-i interval
-I interface
-l preload
-L
-m mark
-M pmtudisc_opt
-N nodeinfo_option
help
name
ipv6
ipv6-global
ipv6-sitelocal
ipv6-linklocal
ipv6-all
ipv4
ipv4-all
subject-ipv6=ipv6addr
subject-ipv4=ipv4addr
subject-name=nodename
subject-fqdn=nodename
-n
-O
-p pattern
-q
-Q tos
В 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 — тип службы, биты 5–7 (старшие биты) — приоритет.
-r
-R
-s packetsize
-S sndbuf
-t ttl
-T timestamp option
-U
-v
-V
-w deadline
-W timeout
При использовании ping для изоляции сбоев сначала следует запустить его на локальном хосте, чтобы убедиться, что интерфейс локальной сети настроен и работает. Затем все более удаленные хосты и шлюзы должны быть проверены на наличие сбоев “pinged”. Вычисляется время прохождения в оба конца и статистика потерь пакетов. Если получены повторяющиеся пакеты, они не учитываются при расчете потерь пакетов, хотя время прохождения этих пакетов в оба конца используется при расчете минимальных, средних или максимальных значений времени прохождения туда и обратно.
Стандартное отклонение для совокупности (mdev) — это, по сути, среднее значение отклонения каждого пинга RTT от среднего значения RTT. Чем выше mdev, тем более изменчив показатель RTT (с течением времени). При высокой изменчивости RTT возникают проблемы со скоростью при массовой передаче данных (она занимает больше времени, чем необходимо, поскольку из-за изменчивости - отправителю приходится ждать подтверждения ACK), а качество VoIP-связи снижается.
После отправки (и получения) указанного количества пакетов или после завершения работы программы по сигналу SIGINT отображается краткое заключение. Более подробную текущую статистику можно получить без завершения процесса по сигналу SIGQUIT.
Эта программа предназначена для тестирования, измерения и управления сетью. Из-за нагрузки, которую она может оказывать на сеть, не рекомендуется использовать ping в обычном режиме или в автоматизированных скриптах.
ПЕРЕМЕННЫЕ ОКРУЖЕНИЯ¶
Переменная среды IPUTILS_PING_PTR_LOOKUP со значением 0 по умолчанию отключает обратное разрешение DNS (поиск PTR). Это значение переопределяется опцией -H или -n.
СТАТУС ВЫХОДА¶
Если ping не получит ни одного ответного пакета, то завершится с кодом 1. Если указаны опции count и deadline, и к моменту наступления deadline будет получено менее count пакетов, то утилита также завершится с кодом 1. При других ошибках утилита завершается с кодом 2. В противном случае она завершается с кодом 0. Таким образом, по коду завершения можно определить, активен ли хост.
ЛОКАЛЬНЫЕ АДРЕСАТЫ IPv6¶
Для IPv6, когда адрес назначения имеет локальную для канала область видимости, а ping использует сокеты для передачи дейтаграмм ICMP, ICMP datagram sockets, то необходимо указать выходной интерфейс. Если ping использует сокеты raw (raw sockets), то указывать выходной интерфейс не обязательно, но желательно, чтобы избежать неоднозначности при наличии нескольких возможных выходных интерфейсов.
Есть два способа указать выходной интерфейс:
u0441] использованием нотации %
ping fe80::5054:ff:fe70:67bc%eth0
ping fe80::5054:ff:fe70:67bc%2
u0441] пользованием опции -I option
ПОДРОБНОСТИ ПАКЕТА ICMP¶
Заголовок IP без параметров имеет размер 20 байтов. Пакет ICMP ECHO_REQUEST содержит дополнительные 8 байтов, предназначенные для заголовка ICMP. Если указан параметр packetsize, то он обозначает размер этого дополнительного фрагмента данных (по умолчанию — 56). Таким образом, объем данных, содержащихся в IP-пакете типа ICMP ECHO_REPLY, всегда будет на 8 байт больше, чем запрошенное пространство данных (заголовок ICMP).
Если размер области данных не меньше размера структуры timeval, то ping использует начальные байты этой области для хранения метки времени, которая используется при вычислении времени прохождения сигнала в обе стороны. Если размер области данных меньше, то время прохождения сигнала в обе стороны не учитывается.
ДУБЛИРУЮЩИЕСЯ И ПОВРЕЖДЁННЫЕ ПАКЕТЫ¶
ping сообщит о дублирующихся и поврежденных пакетах. Дублирующиеся пакеты не должны возникать в принципе и, по всей видимости, появляются из-за некорректных повторных передач на канальном уровне. Дублирующиеся пакеты могут возникать во многих ситуациях и редко (если вообще когда-либо) являются хорошим признаком, хотя наличие небольшого количества дублирующихся пакетов не всегда является поводом для беспокойства.
Поврежденные пакеты, очевидно, являются серьезной причиной для тревоги и часто указывают на неисправность аппаратуры где-то в цепочке ping packet's path (в сети или на хостах).
КОЛЛИЗИИ ИДЕНТИФИКАТОРА ID¶
В отличие от TCP и UDP, которые используют порт для уникальной идентификации получателя данных, ICMP использует для идентификации поле идентификатора (ID). Таким образом, если на одном компьютере в одно и то же время два процесса ping используют один и тот же идентификатор, эхо-ответ может быть отправлен не тому получателю. Это известная проблема, связанная с ограниченным размером 16-битного поля идентификатора. Это историческое ограничение протокола, которое на данный момент невозможно устранить, если только мы не будем кодировать идентификатор в полезную нагрузку пакета ping. ping выводит ошибку DIFFERENT ADDRESS, а потеря пакетов отрицательна.
ping использует PID для получения уникального номера. Значение по умолчанию для /proc/sys/kernel/pid_max равно 32768. В системах, где часто используется ping и где pid_max превышает 65535, неизбежно возникновение коллизий.
ТРУДНОСТИ РАЗЛИЧНЫХ ШАБЛОНОВ ДАННЫХ¶
Сетевой уровень (между) никогда не должен обрабатывать пакеты по-разному в зависимости от данных, содержащихся в части данных. К сожалению, известно, что проблемы, зависящие от данных, проникают в сети и остаются незамеченными в течение длительного периода времени . Во многих случаях конкретный шаблон, с которым могут возникнуть проблемы, - это то, что не содержит достаточного количества переходов, таких как все единицы или все нули, или шаблон прямо на краю, такой как почти все нули. Необязательно указывать шаблон данных со всеми нулями (например) в командной строке, потому что интересующий шаблон находится на уровне канала передачи данных, и связь между тем, что вы вводите, и тем, что передают контроллеры, может быть сложной.
Это значит, что если у вас проблема, связанная с данными, вам, скорее всего, придется провести множество тестов, чтобы ее выявить. Если вам повезет, вы сможете найти файл, который либо не может быть отправлен по вашей сети (can't be sent), либо передается гораздо дольше, чем другие файлы аналогичной длины. Затем вы можете проверить этот файл на наличие повторяющихся шаблонов с помощью опции -p ping.
ПОДРОБНОСТИ TTL¶
Значение TTL в IP-пакете указывает на максимальное количество маршрутизаторов, через которые может пройти пакет, прежде чем будет отброшен. На практике можно ожидать, что каждый маршрутизатор в интернете будет уменьшать значение поля TTL ровно на единицу.
Поле TTL для TCP-пакетов может принимать различные значения. Максимально возможное значение этого поля — 255, рекомендуемое начальное значение — 64. Подробнее смотрите в разделе «Интерфейс TCP низшего уровня» в RFC9293.
При обычной работе ping выводит значение TTL из полученного пакета. Когда удаленная система получает пинг-пакет, она может сделать с полем TTL в своем ответе одно из трех действий:
ПРОГРАММНЫЕ ОШИБКИ¶
СМОТРИТЕ ТАКЖЕ¶
ИСТОРИЯ¶
Команда ping впервые появилась в 4.3BSD.
Описанная здесь версия является её специфичным, для Linux, потомком.
Начиная с версии s20150815, двоичный файл ping6 больше не существует. Он был объединен с ping. Создание символической ссылки с названием ping6, указывающей на ping, и приведет к той же функциональности, что и раньше.
БЕЗОПАСНОСТЬ¶
Для выполнения ping требуется возможность CAP_NET_RAW: 1) если программа используется для запросов без эхо-ответа (смотрите опцию -N) или если в поле идентификации установлено значение 0 для ECHO_REQUEST (смотрите -e); 2) если ядро не поддерживает сокеты для передачи данных ICMP; 3) если пользователю не разрешено создавать эхо-сокет ICMP. Программа может использоваться с установленным битом set-uid root.
ДОСТУПНОСТЬ¶
Утилита ping является частью пакета iputils.
ПЕРЕВОД¶
Русский перевод этой страницы руководства разработал(и) Николай Шафоростов <shafff@ukr.net> и Aleksandr Felda <afelda@ro.ru>
Этот перевод является свободной программной документацией; он распространяется на условиях общедоступной лицензии GNU (GNU General Public License - GPL, https://www.gnu.org/licenses/gpl-3.0.html версии 3 или более поздней) в отношении авторского права, но БЕЗ КАКИХ-ЛИБО ГАРАНТИЙ.
Если вы обнаружите какие-либо ошибки в переводе этой страницы руководства, пожалуйста, сообщите об этом разработчику(ам) по его(их) адресу(ам) электронной почты или по адресу списка рассылки русских переводчиков.
| iputils 20250605 |