Как сделать эхо запрос
ICMP является дополнительным протоколом к IP (Internet Protocol). Как и IP, ICMP находится на сетевом уровне модели OSI .
В отличие от протоколов транспортного уровня TCP (Протокол управления передачей) и UDP (User Datagram Protocol), которые работают поверх IP, ICMP существует рядом с IP.
Возможность понимать ICMP является требованием для любого IP-совместимого сетевого устройства. Однако многие устройства безопасности, такие как брандмауэры, блокируют или отключают все или часть функций ICMP для целей безопасности.
Type | Name |
---|---|
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).
Читайте также: