Команда Linux ping

Опубликовано admin - чт, 08/25/2022 - 15:50

В Linux команда ping — один из наиболее часто используемых инструментов для устранения неполадок, тестирования и диагностики проблем с сетевым подключением.

Примеры использования команды ping в Linux

Команда ping отправляет один или несколько пакетов эхо-запроса ICMP (Internet Control Message Protocol) на указанный IP-адрес назначения в сети и ожидает ответ. Пункт назначения после получения пакета отвечает эхо-ответом ICMP.

Содержание

Возможности

С помощью этой утилиты можно определить:

  • активен или неактивен удаленный IP-адрес;
  • время задержки туда-обратно при связи с пунктом назначения;
  • есть ли потеря пакетов.

Синтаксис

ping [опции] <destination>

Опции

<destination>
 DNS-имя или IP-адрес
-A
Использовать адаптивный пинг
-c <count>
Остановить после <count> ответов
-D
Выводить временных меток
-d
Использовать параметр сокета SO_DEBUG
-f
Флуд ping
-I <interface>
Имя интерфейса, либо адрес
-i <interval>
N секунд между отправкой каждого пакета
-L
Подавлять закольцовывание многоадресных пакетов
-l <preload>
Отправить <preload> количество пакетов во время ожидания ответов
-n
Не получать DNS-имена
-s <size>
Использовать <size> как количество байтов данных для отправки
-t <ttl>
Определить время жизни
-v
Подробный вывод
-4
Использовать IPv4
-6
Использовать IPv6

Примеры использования команды ping в Linux

Использование без опций

В качестве простейшего примера даём ping для google.com:

oleg@mobile:~:$ ping google.com
PING google.com (216.58.214.142) 56(84) bytes of data.
64 bytes from fra16s06-in-f142.1e100.net (216.58.214.142): icmp_seq=1 ttl=119 time=15.9 ms
64 bytes from fra16s06-in-f142.1e100.net (216.58.214.142): icmp_seq=2 ttl=119 time=17.5 ms
64 bytes from fra16s06-in-f142.1e100.net (216.58.214.142): icmp_seq=3 ttl=119 time=12.1 ms
64 bytes from sof02s42-in-f14.1e100.net (216.58.214.142): icmp_seq=4 ttl=119 time=10.5 ms
64 bytes from sof02s42-in-f14.1e100.net (216.58.214.142): icmp_seq=5 ttl=119 time=18.0 ms
^C
--- google.com ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 4005ms
rtt min/avg/max/mdev = 10.509/14.788/17.966/2.987 ms
oleg@mobile:~:$

Утилита преобразовала доменное имя (google.com) в IP-адрес (216.58.214.142) и начала отправлять пакеты ICMP на целевой IP-адрес. Доступный IP-адрес назначения ответил и утилита напечатала строку, содержащую следующие поля:

Количество байтов данных
Значение по умолчанию — 56, что соответствует 64 байтам данных ICMP 64 bytes
IP-адрес получателя
from fra16s06-in-f142.1e100.net (216.58.214.142)
Порядковый номер ICMP для каждого пакета
icmp_seq=1
Время жизни
ttl=119
Время проверки связи туда-обратно, ms
time=15.9 ms

По умолчанию интервал между отправкой нового пакета составляет одну секунду.

Если ответ не возвращается, это означает, что сетевое соединение не установлено. Когда это происходит, это не всегда означает, что IP-адрес назначения не активен. Некоторые хосты могут иметь брандмауэр, который блокирует трафик ICMP или не отвечает на запросы ping.

Как остановить команду ping в Linux

Команда ping будет продолжать отправлять пакеты ICMP на IP-адрес назначения, пока не получит прерывание. Для того чтобы остановить команду, просто нажмите комбинацию клавиш Ctrl+C.

Потери пакетов 

После остановки команда ping отображает статистику, включая процент потери пакетов. Потеря пакета означает, что данные были потеряны где-то в сети, что указывает на проблему в сети. В случае потери пакетов, вы можете использовать команду traceroute, чтобы определить, где произошла потеря.

Ограничение количества пакетов

Команда ping по умолчанию отправляет ICMP-пакеты до получения сигнала прерывания. Для ограничения количества пакетов отправляемых эхо-запросов используется опция -c, за которой следует количество пакетов:

oleg@mobile:~:$ ping -c 3 google.com
PING google.com (216.58.214.142) 56(84) bytes of data.
64 bytes from sof02s42-in-f14.1e100.net (216.58.214.142): icmp_seq=1 ttl=119 time=15.3 ms
64 bytes from fra16s06-in-f142.1e100.net (216.58.214.142): icmp_seq=2 ttl=119 time=13.0 ms
64 bytes from fra16s06-in-f142.1e100.net (216.58.214.142): icmp_seq=3 ttl=119 time=16.8 ms

--- google.com ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2003ms
rtt min/avg/max/mdev = 12.973/15.029/16.820/1.581 ms
oleg@mobile:~:$ 

Теперь прерывание произошло автоматически.

Указание Интернет-протокола

Например, для принудительного использования протокола IPv4, передайте команде опцию -4:

oleg@mobile:~:$ ping -4 -c 3 google.com
PING google.com (216.58.214.142) 56(84) bytes of data.
64 bytes from fra16s06-in-f142.1e100.net (216.58.214.142): icmp_seq=1 ttl=119 time=13.5 ms
64 bytes from fra16s06-in-f142.1e100.net (216.58.214.142): icmp_seq=2 ttl=119 time=12.6 ms
64 bytes from fra16s06-in-f142.1e100.net (216.58.214.142): icmp_seq=3 ttl=119 time=14.9 ms

--- google.com ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2003ms
rtt min/avg/max/mdev = 12.610/13.666/14.876/0.931 ms
oleg@mobile:~:$ 

Заключение

В Linux сетевая утилита командной строки ping позволяет вам проверить подключение на уровне IP данного хоста в сети. Она проста в использовании и может быть очень полезна многим пользователям.

Поделиться с друзьями