Из Википедии, бесплатной энциклопедии
Перейти к навигации Перейти к поиску

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

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

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

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

История [ править ]

Утилита 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]

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

Пример вызова [ править ]

Ниже приведены результаты выполнения команды ping в Linux для отправки пяти зондов на целевой хост 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 time = 11,632 мс 64 байта из 93.184.216.34: icmp_seq = 1 ttl = 56 time = 11,726 мс 64 байта из 93.184.216.34: icmp_seq = 2 ttl = 56 time = 10,683 мс 64 байта из 93.184.216.34: icmp_seq = 3 ttl = 56 time = 9,674 мс 64 байта из 93.184.216.34: icmp_seq = 4 ttl = 56 время = 11,127 мс--- www.example.com статистика эхо-запросов --- 5 пакетов передано, 5 пакетов получено, 0,0% пакетов потеряны в оба конца мин / средн / макс / stddev = 9,674 / 10,968 / 11,726 / 0,748 мс

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

Индикация ошибок [ править ]

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

  • H ,! N или ! P  - хост, сеть или протокол недоступны
  • S  - исходный маршрут не прошел
  • F  - необходима фрагментация
  • U или ! W  - сеть назначения / хост неизвестен
  • I  - исходный хост изолирован
  • A  - связь с сетью назначения административно запрещена
  • Z  - связь с хостом назначения административно запрещена
  • Q  - для этого ToS сеть назначения недоступна
  • T  - для этого ToS целевой хост недоступен
  • X  - общение запрещено в административном порядке
  • V  - нарушение приоритета хоста
  • C  - действует ограничение приоритета

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

Формат сообщения [ править ]

Пакет ICMP [ править ]

Общий состав пакета ICMP: [9]

  • Заголовок IPv4 (синий): для протокола установлено значение 1 (ICMP), а для типа службы установлено значение 0.
  • Заголовок IPv6 (синий): для следующего заголовка установлено значение 58 (ICMP6)
  • Заголовок ICMP (красный):
    • Тип сообщения ICMP (8 бит)
    • Код (8 бит)
    • Контрольная сумма (16 бит), 16-битное дополнение суммы дополнений до единицы пакета. Для IPv4 это вычисляется из сообщения ICMP, начинающегося с поля Тип [10] ( заголовок IP не включен). Для IPv6 это вычисляется из сообщения ICMP, к которому добавляется «псевдо-заголовок» IPv6. [11]
    • Поле данных заголовка (32 бита), которое в данном случае (эхо-запрос и ответы ICMP) будет состоять из идентификатора (16 бит) и порядкового номера (16 бит).
  • ICMP Payload: полезная нагрузка для различных типов ответов; может иметь произвольную длину, оставленную для деталей реализации. Однако пакет, включающий заголовки IP и ICMP, должен быть меньше максимальной единицы передачи сети, иначе существует риск фрагментации .

Эхо-запрос [ править ]

Запрос эха ( «пинг») является ICMP / ICMP6 сообщения.

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

Эхо-ответ [ править ]

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

  • Идентификатор и порядковый номер может быть использован клиентом , чтобы связать каждое эхо - запрос с его ответом.

Полезная нагрузка [ править ]

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

16: 24: 47.966461 IP (tos 0x0, ttl 128, id 15103, смещение 0, флаги [нет],proto: ICMP (1), длина: 60) 192.168.146.22> 192.168.144.5: эхо-запрос ICMP,id 1, seq 38, длина 40 0x0000: 4500 003c 3aff 0000 8001 5c55 c0a8 9216 E .. <: ..... \ U .... 0x0010: c0a8 9005 0800 4d35 0001 0026 6162 6364 ...... M5 ... & abcd 0x0020: 6566 6768 696a 6b6c 6d6e 6f70 7172 7374 efghijklmnopqrst 0x0030: 7576 7761 6263 6465 6667 6869 uvwabcdefghi

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

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

Соображения безопасности [ править ]

Чтобы провести атаку типа «отказ в обслуживании» , злоумышленник может отправлять запросы ping как можно быстрее, возможно, подавляя жертву эхо-запросами ICMP. Этот прием называется пинг-флудом .

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

См. Также [ править ]

  • fping
  • hping
  • Keepalive
  • nping
  • Пинг смерти
  • Схема пинг-понга
  • Безопасность через безвестность
  • Смурф атака
  • Traceroute

Ссылки [ править ]

  1. ^ a b c d Майк Муусс . «История программы PING» . Исследовательская лаборатория армии США. Архивировано 25 октября 2019 года . Проверено 8 сентября 2010 года . Моим первоначальным стимулом к ​​написанию PING для 4.2a BSD UNIX послужил случайный комментарий в июле 1983 года доктора Дэйва Миллса ... Я назвал его в честь звука, который издает сонар, вдохновленный всем принципом эхолокации ... С моей точки зрения, PING - это не аббревиатура Packet InterNet Grouper, это аналогия сонара. Однако я слышал из вторых рук, что Дэйв Миллс предложил это расширение имени, так что, возможно, мы оба правы.
  2. ^ Salus, Питер (1994). Четверть века UNIX . Эддисон-Уэсли . ISBN 978-0-201-54777-1.
  3. Перейти ↑ Mills, DL (декабрь 1983 г.). Интернет-эксперименты с задержкой . IETF . DOI : 10,17487 / RFC0889 . RFC 889 . Проверено 26 ноября 2019 .
  4. ^ "man page ping section 8" . www.manpagez.com .
  5. ^ «Пакет ibiblio.org FreeDOS - ping (Сеть)» . www.ibiblio.org .
  6. ^ «GitHub - reactos / reactos: бесплатная Windows-совместимая операционная система» . 8 августа 2019 г. - через GitHub.
  7. ^ «RFC 1122 - Требования к Интернет-хостам - Уровни связи» . п. 42 . Проверено 19 марта 2012 года . Каждый хост ДОЛЖЕН реализовать функцию сервера ICMP Echo, которая принимает запросы Echo и отправляет соответствующие ответы Echo.
  8. ^ «ICMP: Протокол управляющих сообщений Интернета» . repo.hackerzvoice.net . 13 января 2000 года архив с оригинала на 4 августа 2016 года . Проверено 4 декабря 2014 .
  9. ^ «RFC 792 - Протокол управляющих сообщений Интернета» . Tools.ietf.org . Дата обращения 2 февраля 2014 .
  10. ^ "Страница RFC Sourcebook по ICMP" . Проверено 20 декабря 2010 года .
  11. ^ «RFC 4443 - Протокол управляющих сообщений Интернета (ICMPv6) для спецификации протокола Интернет версии 6 (IPv6)» . Проверено 10 апреля 2020 .

Дальнейшее чтение [ править ]

  • Дайсон, Питер (1995). Освоение OS / 2 Warp . Sybex . ISBN 978-0782116632.
  • Джон Пол Мюллер (2007). Администрирование Windows из командной строки для Windows Vista, Windows 2003, Windows XP и Windows 2000 . Джон Вили и сыновья . ISBN 978-0470165799.
  • МакЭлхерн, Кирк (2006). Командная строка Mac OS X: Unix под капотом . Джон Вили и сыновья . ISBN 978-0470113851.

Внешние ссылки [ править ]

  • ping(1M) -  Справочное руководство по командам системного администратора Solaris 10
  • ping(8) -  Руководство администратора системы FreeBSD
  • ping(8) -  Руководство программиста Linux - Администрирование и привилегированные команды
  • пинг | Документы Microsoft