ping (сетевая утилита)
![]() Linux-версия ping | |
Оригинальный автор(ы) | Майк Муусс |
---|---|
Разработчик(и) | Различные с открытым исходным кодом и коммерческие разработчики разработчики |
Первоначальный выпуск | 1983 год |
Платформа | Кросс-платформенный |
Тип | Команда |
Лицензия | Общественное достояние , BSD , GPL , MIT |
ping
— это компьютерной сети для администрирования программная утилита , используемая для проверки доступности хоста в сети Интернет-протокола (IP). Он доступен практически для всех операционных систем, имеющих сетевые возможности, включая большинство встроенных программ сетевого администрирования.
Ping измеряет время прохождения туда и обратно сообщений, отправленных с исходного хоста на конечный компьютер, которые возвращаются обратно к источнику. Название происходит от терминологии активного гидролокатора , который посылает импульс звуковой и прислушивается к эху, чтобы обнаружить объекты под водой. [ 1 ]
Ping работает с помощью протокола управляющих сообщений Интернета (ICMP) пакетов . Пинг включает отправку эхо-запроса ICMP на целевой хост и ожидание эхо-ответа ICMP . Программа сообщает об ошибках, потерях пакетов и статистическую сводку результатов, обычно включая минимальное, максимальное, среднее время прохождения туда и обратно и стандартное отклонение среднего значения.
Параметры командной строки утилиты ping и ее выходные данные различаются в зависимости от многочисленных реализаций. Параметры могут включать размер полезной нагрузки, количество тестов, ограничения на количество сетевых переходов ( TTL ), которые проверяют перемещение, интервал между запросами и время ожидания ответа. Многие системы предоставляют сопутствующую утилиту ping6 для тестирования в сетях Интернет-протокола версии 6 (IPv6), реализующих ICMPv6 .
История
[ редактировать ]
Утилита ping была написана Майком Мууссом в декабре 1983 года во время его работы в Лаборатории баллистических исследований , ныне Исследовательской лаборатории армии США . Замечание Дэвида Миллса об использовании эхо-пакетов ICMP для диагностики и измерений IP-сетей побудило Муусса создать утилиту для устранения неполадок в сети. [ 1 ] Автор назвал его по звуку, который издает сонар , поскольку его методология аналогична эхолокации сонара. [ 1 ] [ 2 ] Backronym 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 для отправки пяти зондов (интервал в 1 секунду по умолчанию, настраивается с помощью опции -i) на целевой хост www.example.com :
$ ping -c 5 www.example.com
PING www.example.com (93.184.216.34): 56 data bytes
64 bytes from 93.184.216.34: icmp_seq=0 ttl=56 time=11.632 ms
64 bytes from 93.184.216.34: icmp_seq=1 ttl=56 time=11.726 ms
64 bytes from 93.184.216.34: icmp_seq=2 ttl=56 time=10.683 ms
64 bytes from 93.184.216.34: icmp_seq=3 ttl=56 time=9.674 ms
64 bytes from 93.184.216.34: icmp_seq=4 ttl=56 time=11.127 ms
--- www.example.com ping statistics ---
5 packets transmitted, 5 packets received, 0.0% packet loss
round-trip min/avg/max/stddev = 9.674/10.968/11.726/0.748 ms
В выходных данных перечислены все сообщения зонда и полученные результаты. Наконец, в нем перечислены статистические данные всего теста. В этом примере самое короткое время прохождения туда и обратно составило 9,674 мс, среднее значение — 10,968 мс, а максимальное значение — 11,726 мс. Измерение имело стандартное отклонение 0,748 мс.
Индикация ошибок
[ редактировать ]В случае отсутствия ответа от целевого хоста большинство реализаций либо ничего не отображают, либо периодически печатают уведомления об истечении времени ожидания. Возможные результаты проверки связи, указывающие на проблему, включают следующее:
- ЧАС, ! Ни !P – хост, сеть или протокол недоступен.
- S – исходный маршрут не удался
- F – необходима фрагментация
- У или !W – сеть/хост назначения неизвестен
- I – исходный хост изолирован
- А – связь с сетью назначения административно запрещена
- Z – связь с хостом назначения административно запрещена
- Вопрос – для этого ToS сеть назначения недоступна.
- T – для этого ToS хост назначения недоступен.
- X – общение административно запрещено
- V – нарушение приоритета хоста
- C – действует ограничение приоритета
В случае ошибки целевой хост или промежуточный маршрутизатор отправляет обратно сообщение об ошибке ICMP, например, хост недоступен или TTL превышен при передаче . Кроме того, эти сообщения включают первые восемь байтов исходного сообщения (в данном случае заголовок эхо-запроса ICMP, включая значение гашения), поэтому утилита ping может сопоставлять ответы с исходными запросами. [ 8 ]
Формат сообщения
[ редактировать ]ICMP-пакет
[ редактировать ]Биты 0–7 | Биты 8–15 | Биты 16–23 | Биты 24–31 | |
---|---|---|---|---|
Заголовок (20 байт) |
Версия/МГП | Тип услуги (ToS) | Длина | |
Идентификация | флаги и смещение | |||
Время жить (TTL) | Протокол | Контрольная сумма заголовка | ||
Исходный IP-адрес | ||||
IP-адрес назначения | ||||
ICMP-заголовок (8 байт) |
Тип сообщения | Код | Контрольная сумма | |
Данные заголовка | ||||
Полезная нагрузка ICMP ( необязательный ) |
Данные полезной нагрузки |
Биты 0–3 | Биты 4–7 | Биты 8–11 | Биты 12–15 | Биты 16–23 | Биты 24–31 | |
---|---|---|---|---|---|---|
Заголовок (40 байт) |
Версия | Класс трафика | Метка потока | |||
Длина полезной нагрузки | Следующий заголовок | Предел прыжков | ||||
Адрес источника (128 бит) | ||||||
Адрес назначения (128 бит) | ||||||
ICMP6-заголовок (8 байт) |
Тип сообщения | Код | Контрольная сумма | |||
Данные заголовка | ||||||
Полезная нагрузка ICMP6 ( необязательный ) |
Данные полезной нагрузки |
Общий состав пакета 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, должен быть меньше максимальной единицы передачи сети, иначе существует риск фрагментации .
Эхо-запрос
[ редактировать ]Эхо -запрос ( ping ) представляет собой сообщение ICMP / ICMP6 .
00 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Тип = 8(IPv4, ICMP) 128(IPv6,ICMP6) | Код = 0 | Контрольная сумма | |||||||||||||||||||||||||||||
Идентификатор | Порядковый номер | ||||||||||||||||||||||||||||||
Полезная нагрузка |
Идентификатор и порядковый номер могут использоваться клиентом для сопоставления ответа с запросом, вызвавшим ответ. На практике большинство систем Linux используют уникальный идентификатор для каждого процесса проверки связи, а порядковый номер в этом процессе увеличивается. Windows использует фиксированный идентификатор, который варьируется в зависимости от версии Windows, и порядковый номер, который сбрасывается только во время загрузки.
Эхо-ответ
[ редактировать ]Эхо -ответ — это ICMP-сообщение, созданное в ответ на эхо-запрос; он является обязательным для всех хостов и должен включать точную полезную нагрузку, полученную в запросе.
00 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Тип = 0(IPv4,ICMP) 129(IPv6,ICMP6) | Код = 0 | Контрольная сумма | |||||||||||||||||||||||||||||
Идентификатор | Порядковый номер | ||||||||||||||||||||||||||||||
Полезная нагрузка |
- Идентификатор . и порядковый номер могут использоваться клиентом для связи каждого эхо-запроса с его ответом
Полезная нагрузка
[ редактировать ]Полезная нагрузка пакета обычно заполняется символами ASCII , как показывают выходные данные утилиты tcpdump в последних 32 байтах следующего примера (после восьмибайтового заголовка ICMP, начинающегося с 0x0800 ):
16:24:47.966461 IP (tos 0x0, ttl 128, id 15103, offset 0, flags [none],
proto: ICMP (1), length: 60) 192.168.146.22 > 192.168.144.5: ICMP echo request,
id 1, seq 38, length 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 , но в этом случае минимальная полезная нагрузка длиннее, чем показано. Эхо -запрос обычно не получает никакого ответа, если хост спал в состоянии гибернации, но хост все равно выходит из состояния сна, если его интерфейс настроен на прием запросов пробуждения. Если хост уже активен и настроен на разрешение ответов на входящие пакеты эхо-запроса ICMP , возвращаемый ответ должен включать ту же полезную нагрузку. Это можно использовать для обнаружения того, что удаленный хост фактически проснулся, путем повторения нового запроса после некоторой задержки, чтобы позволить хосту возобновить работу своих сетевых служб. Если хост просто спал в активном состоянии с низким энергопотреблением, один запрос разбудит этот хост ровно настолько, чтобы его служба эхо-ответа могла мгновенно ответить, если эта служба была включена. Хосту не требуется полностью выводить все устройства из спящего режима, и он может вернуться в режим пониженного энергопотребления после небольшой задержки. Такая конфигурация может использоваться, чтобы избежать перехода хоста в состояние гибернации с гораздо более длительной задержкой пробуждения после некоторого времени, проведенного в активном режиме с низким энергопотреблением. [ нужна ссылка ]
Лазейки в безопасности
[ редактировать ]Чтобы провести атаку типа «отказ в обслуживании» , злоумышленник может отправлять пинг-запросы как можно быстрее, возможно, перегружая жертву эхо-запросами ICMP. Этот метод называется ping-флудом . [ 12 ]
Пинг-запросы на несколько адресов, пинг-проверки , могут использоваться для получения списка всех хостов в сети.
См. также
[ редактировать ]Ссылки
[ редактировать ]- ^ Перейти обратно: а б с д Майк Муусс . «История программы PING» . Исследовательская лаборатория армии США. Архивировано из оригинала 25 октября 2019 года . Проверено 8 сентября 2010 г.
Моим первоначальным толчком к написанию PING для BSD UNIX 4.2a послужило небрежное замечание доктора Дэйва Миллса в июле 1983 года... Я назвал его в честь звука, который издает эхолот, вдохновленный общим принципом эхолокации... С моей точки зрения, PING — это не аббревиатура, обозначающая Packet InterNet Grouper, это аналогия с гидролокатором. Однако я слышал из вторых рук, что Дэйв Миллс предложил такое расширение названия, так что, возможно, мы оба правы.
- ^ Салус, Питер (1994). Четверть века UNIX . Аддисон-Уэсли . ISBN 978-0-201-54777-1 .
- ^ Миллс, Д.Л. (декабрь 1983 г.). Эксперименты с задержкой в Интернете . IETF . дои : 10.17487/RFC0889 . РФК 889 . Проверено 26 ноября 2019 г. .
- ^ «Пинг страницы руководства, раздел 8» . www.manpagez.com .
- ^ «Пакет FreeDOS ibiblio.org — ping (сеть)» . www.ibiblio.org .
- ^ «GitHub — Reactos/Reactos: бесплатная операционная система, совместимая с Windows» . 8 августа 2019 г. – через GitHub.
- ^ Брейден, Роберт Т. (октябрь 1989 г.). Требования к интернет-хостам – коммуникационные уровни . п. 42. дои : 10.17487/RFC1122 . РФК 1122 .
Каждый хост ДОЛЖЕН реализовать функцию эхо-сервера ICMP, которая принимает эхо-запросы и отправляет соответствующие эхо-ответы.
- ^ «ICMP: протокол управляющих сообщений Интернета» . repo.hackerzvoice.net . 13 января 2000 г. Архивировано из оригинала 4 августа 2016 г. Проверено 4 декабря 2014 г.
- ^ Постел, Дж. (сентябрь 1981 г.). «RFC 792 — Протокол управляющих сообщений Интернета» . Tools.ietf.org. дои : 10.17487/RFC0792 . Проверено 2 февраля 2014 г.
{{cite journal}}
: Для цитирования журнала требуется|journal=
( помощь ) - ^ «Страница справочника RFC по ICMP» . Архивировано из оригинала 6 июля 2018 года . Проверено 20 декабря 2010 г.
- ^ Гупта, Мукеш; Конта, Алекс (март 2006 г.). Гупта, М. (ред.). «RFC 4443 — Протокол управляющих сообщений Интернета (ICMPv6) для спецификации Интернет-протокола версии 6 (IPv6)» . дои : 10.17487/RFC4443 . Проверено 10 апреля 2020 г.
{{cite journal}}
: Для цитирования журнала требуется|journal=
( помощь ) - ^ «Что такое пинг-флуд | ICMP-флуд | Глоссарий DDoS-атак | Imperva» . Учебный центр . Проверено 26 июля 2021 г.
Дальнейшее чтение
[ редактировать ]- Дайсон, Питер (1995). Освоение OS/2 Warp . Сайбекс . ISBN 978-0782116632 .
- Джон Пол Мюллер (2007). Администрирование Windows из командной строки для Windows Vista, Windows 2003, Windows XP и Windows 2000 . Джон Уайли и сыновья . ISBN 978-0470165799 .
- МакЭлхирн, Кирк (2006). Командная строка Mac OS X: Unix под капотом . Джон Уайли и сыновья . ISBN 978-0470113851 .
Внешние ссылки
[ редактировать ]
- по Solaris 11.4 Справочное руководство –
- FreeBSD системного администратора Руководство –
- Linux программиста Руководство – Администрирование и привилегированные команды –
- пинг в Microsoft Docs