stringtranslate.com

ping (сетевая утилита)

ping— это утилита программного обеспечения для администрирования компьютерных сетей , используемая для проверки доступности хоста в сети Интернет-протокола (IP). Она доступна практически для всех операционных систем, которые имеют сетевые возможности, включая большинство встроенного программного обеспечения для администрирования сетей.

Ping измеряет время прохождения туда и обратно для сообщений, отправленных от исходного хоста к компьютеру назначения, которые возвращаются обратно к источнику. Название происходит от терминологии активного сонара , который посылает звуковой импульс и слушает эхо для обнаружения объектов под водой. [1]

Ping работает с помощью пакетов протокола управления сообщениями Интернета (ICMP) . Pinging включает отправку эхо-запроса ICMP на целевой хост и ожидание эхо-ответа ICMP . Программа сообщает об ошибках, потере пакетов и статистическом обзоре результатов, обычно включающем минимальное, максимальное, среднее время приема-передачи и стандартное отклонение среднего значения.

Параметры командной строки утилиты ping и ее вывод различаются в зависимости от многочисленных реализаций. Параметры могут включать размер полезной нагрузки, количество тестов, ограничения на количество сетевых переходов ( TTL ), которые проходят зонды, интервал между запросами и время ожидания ответа. Многие системы предоставляют сопутствующую утилиту ping6 для тестирования в сетях Интернет-протокола версии 6 (IPv6), которые реализуют ICMPv6 .

История

DOS-версия ping

Утилита ping была написана Майком Мууссом в декабре 1983 года во время его работы в Лаборатории баллистических исследований , ныне Исследовательской лаборатории армии США . Замечание Дэвида Миллса об использовании эхо-пакетов ICMP для диагностики и измерений в IP-сетях побудило Муусса создать утилиту для устранения неполадок в сети. [1] Автор назвал ее в честь звука, который издает сонар , поскольку ее методология аналогична эхолокации сонара. [1] [2] Бэкроним Packet InterNet Groper для PING используется уже более 30 лет, и хотя Муусс говорит, что с его точки зрения PING не был задуман как аббревиатура, он признал расширение имени Миллсом. [1] [3] Первая выпущенная версия была программным обеспечением в открытом доступе ; все последующие версии были лицензированы по лицензии BSD . Ping был впервые включен в 4.3BSD . [4] Версия FreeDOS была разработана Эриком Энгельке и лицензирована по лицензии GPL . [5] Тим Кроуфорд разработал версию ReactOS . Она лицензирована по лицензии MIT . [6]

Любой хост должен обрабатывать эхо-запросы ICMP и выдавать в ответ эхо-ответы. [7]

Пример вызова

Ниже приведен вывод запуска ping в Linux для отправки пяти зондов (интервал по умолчанию составляет 1 секунду, настраивается с помощью параметра -i) на целевой хост www.example.com :

$ ping  -c 5 www.example.com  PING www.example.com (93.184.216.34): 56 байт данных 64 байта от 93.184.216.34: icmp_seq=0 ttl=56 время=11,632 мс 64 байта от 93.184.216.34: icmp_seq=1 ttl=56 время=11,726 мс 64 байта от 93.184.216.34: icmp_seq=2 ttl=56 время=10,683 мс 64 байта от 93.184.216.34: icmp_seq=3 ttl=56 время=9,674 мс 64 байта от 93.184.216.34: icmp_seq=4 ttl=56 время=11.127 мс--- www.example.com статистика ping --- 5 пакетов передано, 5 пакетов получено, 0,0% потерь пакетов туда и обратно мин/ср/макс/стдотв = 9,674/10,968/11,726/0,748 мс

В выходных данных перечислены все сообщения зонда и полученные результаты. Наконец, в нем перечислена статистика всего теста. В этом примере наименьшее время прохождения сигнала туда и обратно составило 9,674 мс, среднее значение — 10,968 мс, а максимальное значение — 11,726 мс. Измерение имело стандартное отклонение 0,748 мс.

Индикация ошибок

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

В случае ошибки целевой хост или промежуточный маршрутизатор отправляет обратно сообщение об ошибке ICMP, например, host unreachable или TTL exceeded in transit . Кроме того, эти сообщения включают первые восемь байтов исходного сообщения (в данном случае заголовок эхо-запроса ICMP, включая значение подавления), поэтому утилита ping может сопоставлять ответы с исходными запросами. [8]

Формат сообщения

Пакет ICMP, транспортируемый с помощью IPv4

Пакет ICMP, передаваемый с помощью IPv4, выглядит следующим образом.

Тип: 8 бит
Установите значение 0, чтобы указать «Эхо-запрос».
Контрольная сумма: 16 бит
Контрольная сумма — это 16-битное дополнение по единицам суммы дополнений по единицам пакета ICMP, начиная с поля Тип , [9] включая Полезную нагрузку . Заголовок IP не включен.
Идентификатор: 16 бит
Может использоваться клиентом для сопоставления ответа с запросом, вызвавшим ответ.
Порядковый номер: 16 бит
Может использоваться клиентом для сопоставления ответа с запросом, вызвавшим ответ.
Полезная нагрузка: переменная
Необязательно. Полезная нагрузка для различных типов ответов; может быть произвольной длины, оставленной на усмотрение деталей реализации.

Большинство систем Linux используют уникальный идентификатор для каждого процесса ping, а порядковый номер — это увеличивающееся число в этом процессе. Windows использует фиксированный идентификатор , который различается в разных версиях Windows, и порядковый номер , который сбрасывается только во время загрузки.

Эхо -ответ возвращается в виде:

Тип: 8 бит
Установите значение 8, чтобы указать «Эхо-ответ».
Идентификатор: 16 бит
Скопировано из Эхо-запроса и возвращено.
Порядковый номер: 16 бит
Скопировано из Эхо-запроса и возвращено.
Полезная нагрузка: переменная
Необязательно. Полезная нагрузка копируется из эхо-запроса и возвращается.

Пакет ICMPv6, транспортируемый с помощью IPv6

Пакет ICMP, передаваемый с помощью IPv6, выглядит следующим образом.

Тип: 8 бит
Установите значение 128, чтобы указать «Эхо-запрос».
Идентификатор: 16 бит
Может использоваться клиентом для сопоставления ответа с запросом, вызвавшим ответ.
Порядковый номер: 16 бит
Может использоваться клиентом для сопоставления ответа с запросом, вызвавшим ответ.
Контрольная сумма: 16 бит
Контрольная сумма вычисляется из сообщения ICMP (начиная с поля «Тип »), к которому добавляется псевдозаголовок IPv6 . [10]
Полезная нагрузка: переменная
Необязательно. Полезная нагрузка для различных типов ответов; может быть произвольной длины, оставленной на усмотрение деталей реализации.

Большинство систем Linux используют уникальный идентификатор для каждого процесса ping, а порядковый номер — это увеличивающееся число в этом процессе. Windows использует фиксированный идентификатор , который различается в разных версиях Windows, и порядковый номер , который сбрасывается только во время загрузки.

Эхо -ответ возвращается в виде:

Тип: 8 бит
Установите значение 129, чтобы указать «Эхо-ответ».
Идентификатор: 16 бит
Скопировано из Эхо-запроса и возвращено.
Порядковый номер: 16 бит
Скопировано из Эхо-запроса и возвращено.
Полезная нагрузка: переменная
Необязательно. Полезная нагрузка копируется из эхо-запроса и возвращается.

Полезная нагрузка

Полезная нагрузка пакета обычно заполнена символами ASCII , как показывают выходные данные утилиты tcpdump в последних 32 байтах следующего примера (после восьмибайтового заголовка ICMP, начинающегося с 0x0800 ):

16 : 24 : 47 . 966461 IP (tos 0x0, ttl 12 8, id 1510 3, смещение 0 , флаги [ нет ], протокол: ICMP (1), длина: 60 ​​) 19 2. 16 8. 14 6. 22 > 19 2. 16 8. 14 4.5: ICMP echo- запрос , id 1, seq 38 , длина 40 0x 0000 : 4500 003c 3aff 0000 8001 5c55 c0a8 9216 E..<:.....\U .... 0x 0010 : c0a8 9005 0800 4d35 0001 0026 6162 6364 ......M5...&abcd 0x 0020 : 6566 6768 696a 6b6c 6d6e 6f70 7172 7374 efghijklmnopqrst 0x 0030 : 7576 7761 6263 6465 6667 6869  uvwabcdefghi                                                                

Полезная нагрузка может включать временную метку, указывающую время передачи, и порядковый номер, которые не найдены в этом примере. Это позволяет ping вычислять время кругового пути без учета состояния , без необходимости записывать время передачи каждого пакета.

Полезная нагрузка также может включать магический пакет для протокола Wake-on-LAN , но минимальная полезная нагрузка в этом случае длиннее, чем показано. Echo Request обычно не получает никакого ответа, если хост спал в состоянии гибернации, но хост все равно просыпается из состояния сна, если его интерфейс настроен на прием запросов пробуждения. Если хост уже активен и настроен на разрешение ответов на входящие пакеты ICMP Echo Request , возвращаемый ответ должен включать ту же полезную нагрузку. Это может использоваться для определения того, что удаленный хост был эффективно разбужен, путем повторения нового запроса с некоторой задержкой, чтобы позволить хосту возобновить свои сетевые службы. Если хост просто спал в активном состоянии с низким энергопотреблением, один запрос пробуждает этот хост ровно настолько, чтобы позволить его службе Echo Reply мгновенно ответить, если эта служба была включена. Хосту не нужно полностью пробуждать все устройства, и он может вернуться в режим низкого энергопотребления после небольшой задержки. Такая конфигурация может использоваться, чтобы не допустить перехода хоста в состояние гибернации с гораздо более длительной задержкой пробуждения после некоторого времени, прошедшего в активном режиме с низким энергопотреблением. [ необходима ссылка ]

Пакет, включающий заголовки IP и ICMP, не должен превышать максимальную единицу передачи сети, в противном случае существует риск фрагментации .

Лазейки в безопасности

Чтобы провести атаку типа «отказ в обслуживании» , злоумышленник может отправлять запросы ping как можно быстрее, возможно, перегружая жертву запросами ICMP echo. Этот метод называется ping flood . [11]

Запросы ping на несколько адресов ( ping-сканирования ) могут использоваться для получения списка всех хостов в сети.

Смотрите также

Ссылки

  1. ^ abcd Майк Муусс . "История программы PING". Исследовательская лаборатория армии США. Архивировано из оригинала 25 октября 2019 г. Получено 8 сентября 2010 г. Первоначальным импульсом для написания PING для 4.2a BSD UNIX послужило мимолетное замечание в июле 1983 г. доктора Дейва Миллса... Я назвал его в честь звука, который издает сонар, вдохновленный всем принципом эхолокации... С моей точки зрения, PING — это не аббревиатура от Packet InterNet Grouper, это аналогия с сонаром. Однако я слышал из вторых рук, что Дейв Миллс предложил такое расширение названия, так что, возможно, мы оба правы.
  2. ^ Салус, Питер (1994). Четверть века UNIX . Addison-Wesley . ISBN 978-0-201-54777-1.
  3. ^ Миллс, DL (декабрь 1983 г.). Эксперименты по задержке в Интернете. IETF . doi : 10.17487/RFC0889 . RFC 889 . Получено 26 ноября 2019 г. .
  4. ^ "страница руководства ping, раздел 8". www.manpagez.com .
  5. ^ "Пакет FreeDOS ibiblio.org -- ping (Сеть)". www.ibiblio.org .
  6. ^ "GitHub - reactos/reactos: бесплатная операционная система, совместимая с Windows". 8 августа 2019 г. – через GitHub.
  7. ^ R. Braden , ed. (октябрь 1989). Требования к интернет-хостам — коммуникационные уровни. Сетевая рабочая группа. doi : 10.17487/RFC1122 . STD 3. RFC 1122. Интернет-стандарт 3. Обновлен RFC 1349, 4379, 5884, 6093, 6298, 6633, 6864, 8029 и 9293. Каждый хост ДОЛЖЕН реализовать функцию сервера ICMP Echo, которая получает запросы Echo и отправляет соответствующие ответы Echo.
  8. ^ "ICMP: Internet Control Message Protocol". repo.hackerzvoice.net . 13 января 2000 г. Архивировано из оригинала 4 августа 2016 г. Получено 4 декабря 2014 г.
  9. ^ "Страница RFC Sourcebook's по ICMP". Архивировано из оригинала 6 июля 2018 года . Получено 20 декабря 2010 года .
  10. ^ A. Conta; S. Deering (март 2006 г.). M. Gupta (ред.). Протокол управляющих сообщений Интернета (ICMPv6) для спецификации протокола Интернета версии 6 (IPv6). Сетевая рабочая группа. doi : 10.17487/RFC4443 . STD 89. RFC 4443. Стандарт Интернета 89. Отменяет RFC 2463. Обновляет RFC 2780. Обновлен RFC 4884.
  11. ^ "Что такое Ping Flood | ICMP Flood | Глоссарий DDoS-атак | Imperva". Центр обучения . Получено 26 июля 2021 г.

Дальнейшее чтение

Внешние ссылки