Как сделать эхо запрос

Обновлено: 05.07.2024

ICMP является дополнительным протоколом к ​​IP (Internet Protocol). Как и IP, ICMP находится на сетевом уровне модели OSI .

В отличие от протоколов транспортного уровня TCP (Протокол управления передачей) и UDP (User Datagram Protocol), которые работают поверх IP, ICMP существует рядом с IP.

Возможность понимать ICMP является требованием для любого IP-совместимого сетевого устройства. Однако многие устройства безопасности, такие как брандмауэры, блокируют или отключают все или часть функций ICMP для целей безопасности.

TypeName
0Эхо-ответ
3Адресат недоступен
4Сдерживание источника
5Перенаправление
6Альтернативный адрес узла
8Эхо-запрос
9Объявление маршрутизатора
10Запрос маршрутизатора
11Время жизни дейтаграммы истекло
12Неверный параметр
13Запрос метки времени
14Ответ с меткой времени
15 Информационный запрос
16Информационный ответ
17Запрос адресной маски
18Отклик на запрос адресной маски
30Трассировка маршрута

ICMP Echo Request и Echo Reply

Echo Request и Echo Reply используются командой `ping` для проверки сетевого подключения.


Когда брандмауэр Windows включен с настройками по умолчанию, вы не можете использовать команду ping с другого устройства, чтобы проверить, жив ли ваш ПК. Вот как это изменить.

Инструкции в этой статье должны работать для Windows 7, 8 и 10. Мы укажем, где есть какие-либо существенные различия.

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

Разрешить запросы Ping с помощью командной строки


Чтобы разрешить запросы ping, вы создадите два исключения для пропуска трафика через брандмауэр: одно для запросов ICMPv4, а другое для запросов ICMPv6. Чтобы создать исключение ICMPv4, введите (или скопируйте и вставьте) следующую команду в командной строке и нажмите Enter:


И для создания исключения ICMPv6 используйте эту команду:

Изменения вступят в силу немедленно — не нужно перезагружать компьютер или что-то еще. Теперь, если вы пингуете свой компьютер с удаленного устройства, вы должны получить реальный результат.


Чтобы снова отключить запросы ping, вам нужно отключить оба созданных исключения. Для исключения ICMPv4 введите (или скопируйте и вставьте) эту команду в командной строке и нажмите Enter:


И чтобы отключить запросы ICMPv6, используйте эту команду:


Обратите внимание, что при использовании только что рассмотренных команд вы можете использовать любое имя для нужного правила. Однако, когда вы отключите правило, вы захотите использовать то же имя, что и при его создании. Если вы забыли название правила, вы можете использовать командную строку, чтобы просмотреть список всех правил. Просто введите следующую команду и нажмите Enter:


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

Разрешить запросы Ping с помощью брандмауэра Windows в режиме повышенной безопасности












К сожалению, вы еще не закончили. Рекомендуется создать второе правило, разрешающее входящие запросы ICMPv6. В основном это хорошая мера на всякий случай. Люди, как правило, используют адреса IPv4 при отправке команд ping, но некоторые сетевые приложения используют IPv6. Может быть, также покрыты ваши базы.



Разрешение запросов ping на ваш компьютер — это не то, что нужно делать всем. Но если вы решаете какие-либо проблемы с сетью, ping может быть ценным инструментом. Это также довольно легко включать и выключать, когда у вас есть настройки.

Локальной вычислительной сетью из персональных компьютеров сегодня уже никого не удивишь. Более того, прошли те времена, когда компьютеры объединялись в сеть в пределах одной комнаты. Как правило, сеть организации охватывает все административное здание целиком, для сетевых принтеров и серверов выделяются отдельные помещения, появляются и набирают популярность домашние сети. Вместе с неоспоримой выгодой такое увеличение масштаба несет за собой и некоторые неудобства. Ввиду отсутствия прямой видимости сложно определить, работает ли компьютер у коллеги, к которому на винчестер были сброшены документы. А если кто-то выключил сетевой принтер, то созданная очередь заданий на печать может реализовать себя не в самый подходящий момент. И если все описанные проблемы достаточно просто решаются "организационными мероприятиями", то для технического персонала большая вычислительная сеть может стать настоящей головной болью, если не позаботиться о специальных средствах мониторинга ее работоспособности. Выпал из разъема сетевой кабель? Из прорвавшегося водопровода затопило маршрутизатор? "Завис" или перегружен сервер? Получить ответ на любой из поставленных вопросов системный администратор желал бы как можно раньше, дабы избежать справедливого и не очень гнева своих коллег — остальных пользователей системы.

Протокол ICMP используется для:
. построения и поддержания в актуальном состоянии таблиц маршрутизации;
. определения параметра PMTU (Path Maximum Transmission Unit);
. диагностики сетевых проблем;
. осуществления контроля загруженности маршрутизаторов;
. исследования маршрутов передачи пакетов.

где 192.168.48.10 — общепринятая запись IP-адреса опрашиваемого ресурса. В этой команде неявно подразумевается, что будет отправлено четыре запроса, максимальное время ожидания ответа на каждый запрос (тайм-аут) составляет 750 миллисекунд. Протокол опроса может выглядеть следующим образом:

Обмен пакетами с 192.168.48.10 по 32 байт:

Ответ от 192.168.48.10: число байт=32 время=14мс TTL=128

Ответ от 192.168.48.10: число байт=32 время=18мс TTL=128

Ответ от 192.168.48.10: число байт=32 время=16мс TTL=128
Ответ от 192.168.48.10: число байт=32 время=20мс TTL=128

Статистика Ping для 192.168.48.10:
Пакетов: послано = 4, получено = 4, потеряно = 0 (0% потерь),
Приблизительное время передачи и приема:
наименьшее = 14мс, наибольшее = 20мс, среднее = 17мс

В случаях, когда нужно выполнить более детальный анализ соединения между двумя IP-устройствами, можно воспользоваться дополнительными возможностями команды Ping. Если требуется проанализировать качество соединения за более продолжительный промежуток времени, нужно в командной строке, кроме адреса сетевого узла, указать параметр -n с количеством отправляемых пакетов либо параметр -t. В последнем случае опрос узла будет осуществляться до тех пор, пока не будет нажата комбинация клавиш [Ctrl]+[C]. Чтобы ознакомиться с промежуточной статистикой, можно нажать [Ctrl]+[Break]. Маршрут к опрашиваемому сетевому ресурсу может лежать через некоторое (в случае Internet иногда довольно большое) количество промежуточных узлов — серверов и маршрутизаторов. Эхо-запрос, отправляемый командой Ping, несет в себе счетчик, который увеличивается на единицу при прохождении каждого промежуточного узла. Максимальное значение этого счетчика носит название "Time to live" (TTL) — "время жизни". По достижении счетчиком значения TTL эхо-запрос считается "заблудившимся" и уничтожается. Указать значение TTL можно с помощью параметра -i командной строки утилиты Ping.

ping -n 10 192.168.1.1 > C:\LOG\ping.log
:loop
wait 300
ping -n 10 192.168.1.1 > > C:\LOG\ping.log
goto loop

который с интервалом в 5 минут будет десятикратно опрашивать узел 192.168.1.1 и записывать результат опроса в текстовый файл Ping.log. Поясним работу этого bat-сценария. Первая строка создает журнальный файл ping.log и записывает в него первую порцию информации (чему способствует символ перенаправления вывода "> "). Третья строка выполняет задержку выполнения bat-сценария с помощью утилиты wait, которая, к сожалению, не входит в стандартную поставку DOS или Windows, на 300 секунд. Эту строку можно опустить, однако тогда запросы будут выполняться непрерывно, что, с одной стороны, увеличит загрузку вычислительной сети, а с другой — отнимет процессорное время у сервера, на котором выполняется командный файл. Четвертая строка выполняет запрос к узлу аналогично первой команде, но, в отличие от нее, не создает новый log-файл, а дописывает информацию в уже существующий (это достигнуто посредством использования символа перенаправления вывода "> > "). Пятая строка организует потенциально бесконечный цикл опроса сетевого ресурса, который, однако, может быть прерван стандартным сочетанием клавиш [Ctrl]+[C]. В результате можно получить журнал опроса сетевого узла для анализа вручную или с помощью специально разработанной программы. У этого способа, однако, есть существенный недостаток. Он может быть использован только для "разбора полетов", но мало полезен в ситуации, когда анализ или реакция на изменяющуюся ситуацию должны осуществляться незамедлительно, в реальном времени. Если немного поразмыслить, можно предложить некоторую модификацию предложенного командного файла. Предположим, что в наличии имеется программа, способная извлекать полезную информацию из текстового файла, который формируется указанным выше способом из выходного потока утилиты Ping. Такую программу, затратив некоторые усилия, можно реализовать практически на любом распространенном языке программирования. Допустим, что программа откомпилирована в файл PingAnalyse.exe и для своей работы требует указания в командной строке имени log-файла утилиты Ping. Тогда можно написать командный bat-файл:

:loop
ping -n 10 192.168.1.1 > C:\LOG\ping.log
PingAnalyse.exe C:\LOG\ping.log
wait 300
goto loop

который позволит внести элемент автоматизации в процесс мониторинга состояния сетевого узла. Эту схему можно сделать немного лучше, если вспомнить, что операционная система позволяет непосредственно связывать поток вывода одного процесса с потоком ввода другого (практика показывает, что при этом все равно создается временный файл, однако это не отменяет права этого способа на существование). Если удастся доработать программу PingAnalyse.exe таким образом, чтобы она принимала информацию не из файла, а со стандартного ввода (это представляется в ряде случаев даже проще), то bat-файл можно изменить:

:loop
ping -n 10 192.168.1.1 | PingAnalyse.exe
wait 300
goto loop

Во второй строке символ "|" как раз и указывает требование увязать выходной поток команды Ping с входным потоком программы PingAnalyse.exe. При всей своей простоте, красоте и изяществе предложенный способ реализации мониторинга с использованием командного файла имеет ряд существенных недостатков. Он начисто лишен пользовательского интерфейса (если не считать таковым комбинацию клавиш [Ctrl]+[C]) — для внесения каких-либо изменений потребуется как минимум исправление bat-файла, а то и изменение с последующей перекомпиляцией программы PingAnalyse. Устранить указанные недостатки можно лишь путем разработки собственной утилиты, что и является вторым способом реализации схемы мониторинга.

typedef struct DWORD Address; // адрес ответившего узла
unsigned long Status; // статус ответа
unsigned long RoundTripTime; // время прохождения запроса
unsigned short DataSize; // размер данных ответа
unsigned short Reserved; // зарезервировано
void *Data; // указатель на данные ответа
IP_OPTION_INFORMATION Options; // опции ответа
> ICMP_ECHO_REPLY;

Как видно, наибольший интерес для наших целей представляет поле RoundTripTime, с помощью которого можно определить время, прошедшее с момента отправки эхо-запроса до получения эхо-ответа (RTT), и вести некоторую статистику. Для корректного завершения работы с ICMP-функциями нужно в обратном порядке выполнить действия, соответствующие шагам инициализации. Первым делом с помощью вызова функции IcmpCloseHandle (hIcmp) освобождается ICMP-манипулятор. Затем нужно освободить Windows Sockets, вызвав WSACleanup ().

Игорь Орещенков, 2005

Компьютерная газета. Статья была опубликована в номере 10 за 2005 год в рубрике hard :: технологии

Цель работы: изучить режим симуляции Cisco Packet Tracer, протоколы ARP и ICMP на примере программ ping и tracert.

Программа работы:

1. Построение топологии сети, настройка конечных узлов;

2. Настройка маршрутизатора;

3. Проверка работы сети в режиме симуляции;

4. Посылка ping-запроса внутри сети;

5. Посылка ping-запроса во внешнюю сеть;

6. Посылка ping-запроса на несуществующий IP-адрес узла;

7. Выполнение индивидуального задания.

Теоретические сведения:

Протокол ARP

Для определения физического адреса по IP-адресу используется протокол разрешения адреса Address Resolution Protocol (ARP). Протокол ARP работает различным образом в зависимости от того, какой протокол канального уровня работает в данной сети с возможностью широковещательного доступа одновременно ко всем узлам сети. [1]

Работа протокола ARP поясняется на рис. 4.25.


Рис. 4.25. ARP-запрос и ARP-ответ

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

Для того чтобы уменьшить количество посылаемых запросов ARP, каждое устройство в сети, использующее протокол ARP, должно иметь специальную буферную память. В ней хранятся пары адресов (IP-адрес, физический адрес) устройств в сети. Всякий раз, когда устройство получает ARP-ответ, оно сохра­няет в буферной памяти соответствующую пару. Если адрес есть в списке пар, то нет необходимости посылать ARP-запрос. Эта буферная память называется ARP-таблицей.

В ARP-таблице могут содержаться как статические, так и динамические за­писи. Динамические записи добавляются и удаляются автоматически, статиче­ские заносятся вручную.

Так как большинство устройств в сети поддерживает динамическое разреше­ние адресов, то администратору, как правило, нет необходимости вручную указывать записи протокола ARP в таблице адресов.

Каждая запись в ARP-таблице имеет свое время жизни. Политики очистки ARP-таблицы продиктованы используемой операционной системой. При добавлении записи для нее активируется таймер.


Рис. 4.26. Формат пакета ARP

· Network Type – тип канального протокола

Для Ethernet – 1.

· Protocol - протокол сетевого уровня

· HAL - длина канального адреса

· PAL - длина сетевого адреса

· Operation - тип операции (1 – запрос, 2 – ответ)

Узел, отправляющий ARP-запрос, заполняет в пакете все поля, кроме поля искомого локального адреса. Значение этого поля заполняется узлом, опознавшим свой IP-адрес.

Протокол ICMP






Программа ping


· Тип – тип пакета

0 – ответ на запрос эха

· Код – расшифровка назначения пакета внутри типа (в данном случае 0)

· Контрольная сумма вычисляется для всего пакета

· Последовательный номер – номер пакета в потоке

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

Номер последовательности начинается с 0 и инкрементируется каждый раз, когда посылается следующий эхо-запрос. Вывод программы показан на рис. 4.30. Первая строка вывода содержит IP-адрес хоста назначения, даже если было указано имя. Поэтому программа рing часто используется для определения IP-адреса удаленного узла. [2]


Рис. 4.30. Вывод программы ping

Программа tracert

Программа tracert позволяет посмотреть маршрут, по которому двигаются IP-дейтаграммы от одного хоста к другому.

Программа tracert не требует никаких специальных серверных приложений. В ее работе используются стандартные функции протоколов ICMP и IP. Для понимания работы программы следует вспомнить порядок обработки поля TTL в заголовке IP-дейтаграммы.

Пример вывода программы показан на рис. 4.31.


Рис. 4.31. Вывод программы tracert

Первая строка, без номера содержит имя и IP адрес пункта назначения и указывает на то, что величина TTL не может быть больше 30.

Если ответ на дейтаграмму не получен в течение пяти секунд, печатается звездочка, после чего отправляется следующая дейтаграмма. [2]

Выполнение работы:

1. Построение топологии сети

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


Рис. 4.32. Тестовая топология сети

Маршрутизатор Router0 имеет два интерфейса и соединяет две подсети. Произведем настройку конечных узлов.

2. Настройка конечных узлов

На устройствах PC0-PC4 установим заданные IP-адреса и маску подсети (таблица 4.2). IP-адрес шлюза для всех узлов – 192.168.3.1. IP-адрес DNS-сервера указывать необязательно, т.к. в данной работе он использоваться не будет.

Хост IP-адрес Маска подсети
PC0 192.168.3.3 255.255.255.0
PC1 192.168.3.4 255.255.255.0
PC2 192.168.3.5 255.255.255.0
PC3 192.168.3.6 255.255.255.0
PC4 192.168.3.7 255.255.255.0

На устройствах PC5, Laptop0, PC6 установим заданные IP-адреса и маску подсети (таблица 4.3). IP-адрес шлюза для всех узлов – 192.168.5.1. IP-адрес DNS-сервера указывать необязательно.

Хост IP-адрес Маска подсети
PC5 192.168.5.3 255.255.255.0
Laptop0 192.168.5.4 255.255.255.0
PC6 192.168.5.5 255.255.255.0

Каждый узел переименуем его же IP-адресом, получится следующее (рис. 4.33):


Рис. 4.33. Вид рабочей области

3. Настройка маршрутизатора

При настройке конечных узлов уже упоминалось о том, что маршрутизатор в данной топологии сети имеет два интерфейса. Произведем настройку интерфейса FastEthernet0/0:

1) Один клик по устройству (маршрутизатору);

2) Выбираем вкладку “Config”;

3) Находим интерфейс FastEthernet0/0, задаем нужный IP-адрес и маску подсети (рис. 4.34).

Читайте также: