Версия ping для DOS | |
Автор (ы) | Майк Муусс |
---|---|
Разработчик (и) | Различные разработчики с открытым исходным кодом и коммерческие разработчики |
Первоначальный выпуск | 1983; 37 лет назад (1983) |
Платформа | Кросс-платформенность |
Тип | Команда |
Лицензия | Public-domain, BSD, GPL, MIT |
Ping - это компьютерная сеть администрирование программная утилита, используемая для проверки доступности хоста на Интернет-протокол (IP) сеть. Он доступен практически для всех операционных систем, имеющих сетевые возможности, включая большинство встроенных программ сетевого администрирования.
Ping измеряет время приема-передачи для сообщений, отправленных с исходного хоста на конечный компьютер, которые возвращаются обратно источнику. Название происходит от терминологии активный сонар, который посылает импульс звука и слушает эхо для обнаружения объектов под водой.
Ping работает, отправляя Интернет Протокол управляющих сообщений (ICMP) эхо-запрос пакеты к целевому хосту и ожидает эхо-ответа ICMP. Программа сообщает об ошибках, потере пакетов и статистической сводке результатов, обычно включая минимум, максимум, среднее время приема-передачи и стандартное отклонение в среднем.
Параметры командной строки утилиты ping и ее вывод зависят от множества реализаций. Опции могут включать размер полезной нагрузки, количество тестов, ограничения на количество сетевых переходов (TTL ), которые проходят зонды, интервал между запросами и время ожидания ответа. Многие системы предоставляют сопутствующую утилиту ping6 для тестирования в сетях Интернет-протокола версии 6 (IPv6), которые реализуют ICMPv6.
Утилита ping была написана Майком Мууссом в декабре 1983 года, когда он работал в Лаборатории баллистических исследований, теперь Исследовательская лаборатория армии США. Замечание Дэвида Миллса об использовании эхо-пакетов ICMP для диагностики и измерений IP-сети побудило Muuss создать утилиту для устранения сетевых проблем. Автор назвал его в честь звука, который издает сонар, так как его методология аналогична локации эхолокации сонара. Аббревиатура Packet InterNet Groper для PING использовалась более 30 лет, и хотя Мусс говорит, что с его точки зрения PING не задумывался как акроним, он признал расширение имени Миллса. Первой выпущенной версией была общественное достояние ; все последующие версии были под лицензией BSD. Ping впервые был включен в 4.3BSD. Версия FreeDOS была разработана Эриком Энгельке и находится под лицензией GPL. Тим Кроуфорд разработал версию ReactOS. Он под лицензией MIT License.
RFC 1122 предписывает, что любой хост должен обрабатывать эхо-запросы ICMP и выдавать эхо-ответы взамен.
Следующее - результат выполнения команды 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 time = 11.127 мс --- www.example.com статистика пинга --- 5 пакетов передано, 5 пакетов получено, 0,0% потери пакетов в оба конца мин / средн / макс / стандартное отклонение = 9,674 / 10,968 / 11,726 / 0,748 мс
В выходных данных перечисляются каждое тестовое сообщение и полученные результаты. Наконец, он перечисляет статистику всего теста. В этом примере самое короткое время приема-передачи составило 9,674 мс, среднее значение - 10,968 мс, а максимальное значение - 11,726 мс. Измерение имело стандартное отклонение 0,748 мс.
В случаях отсутствия ответа от целевого хоста большинство реализаций либо ничего не отображают, либо периодически распечатывают уведомления о тайм-ауте. Возможные результаты проверки связи, указывающие на проблему, включают следующее:
В случае ошибки целевой хост или промежуточный маршрутизатор отправляет обратно сообщение об ошибке ICMP, например, «хост недоступен» или «TTL превышен при передаче». Кроме того, эти сообщения включают первые восемь байтов исходного сообщения (в данном случае заголовок эхо-запроса ICMP, включая значение quench), поэтому утилита ping может сопоставлять ответы с исходными запросами.
Биты 0–7 | Биты 8–15 | Биты 16–23 | Биты 24–31 | |
---|---|---|---|---|
Заголовок. (20 байтов) | Версия / IHL | Тип службы | Длина | |
Идентификация | флаги и смещение | |||
Время жизни (TTL) | Протокол | Контрольная сумма заголовка | ||
Исходный IP-адрес | ||||
Целевой IP-адрес | ||||
Заголовок ICMP. (8 байтов) | Тип сообщения | Код | Контрольная сумма | |
Данные заголовка | ||||
Полезная нагрузка ICMP. (необязательно) | Данные полезной нагрузки |
Биты 0–3 | Биты 4–7 | Биты 8–11 | Биты 12–15 | Биты 16–23 | Биты 24–31 | |
---|---|---|---|---|---|---|
Заголовок. (40 байтов) | Версия | Класс трафика | Метка потока | |||
Paylo Длина объявления | Следующий заголовок | Ограничение переходов | ||||
Адрес источника | ||||||
Адрес назначения | ||||||
Заголовок ICMP6. (8 байтов) | Тип сообщения | Код | Контрольная сумма | |||
Данные заголовка | ||||||
Полезная нагрузка ICMP6. (необязательно) | Данные полезной нагрузки |
Общий состав пакета 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, смещение 0, флаги [нет], протокол: 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, но минимальная полезная нагрузка в этом случае больше, чем показано. Эхо-запрос обычно не получает никакого ответа, если узел спал в состоянии гибернации, но узел по-прежнему выходит из спящего состояния, если его интерфейс настроен на прием запросов на пробуждение. Если хост уже активен и настроен так, чтобы разрешать ответы на входящие пакеты эхо-запроса ICMP, возвращаемый ответ должен включать ту же полезную нагрузку. Это может быть использовано для определения того, что удаленный хост был эффективно разбужен, путем повторения нового запроса после некоторой задержки, чтобы позволить хосту возобновить свои сетевые службы. Если хост просто спал в активном состоянии с низким энергопотреблением, один запрос разбудит этот хост ровно настолько, чтобы позволить его службе Echo Reply мгновенно ответить, если эта служба была включена. Хосту не нужно полностью выводить из спящего режима все устройства, и он может вернуться в режим пониженного энергопотребления после небольшой задержки. Такая конфигурация может использоваться для предотвращения перехода хоста в состояние гибернации с гораздо более длительной задержкой пробуждения по прошествии некоторого времени в активном режиме с низким энергопотреблением.
Для проведения атака типа «отказ в обслуживании», злоумышленник может отправлять запросы ping как можно быстрее, возможно, подавляя жертву эхо-запросами ICMP. Этот метод называется ping flood..
Ping-запросы к нескольким адресам, ping sweep могут использоваться для получения списка всех хостов в сети.
В Викиучебнике есть книга по теме: Руководство по командам Windows |
ping (1M)
– Solaris 10 Справочник по командам системного администрирования Руководство ping (8)
– FreeBSD System Manager's Руководство ping (8)
– Linux Programmer's Руководство - Администрирование и привилегированные команды