Введение

Протокол межсетевых управляющих сообщений ICMP (Internet Control Message Protocol) – это сервисный протокол, который является обязательным стандартом TCP/IP, используется для оповещения об ошибках и управляет информацией и сведениями о состоянии для протокола IP. ICMP сообщения обычно отправляются в тех случаях, когда IP-датаграмма не может попасть к узлу назначения, шлюз не может перенаправить датаграммы с текущей скоростью передачи, а также когда IP-маршрутизатор перенаправляет узел-отправитель на другой, более выгодный маршрут к узлу назначения. Типы ICMP-сообщений различаются по заголовку ICMP. Длина заголовка ICMP-сообщения постоянная – 8 байтов, где назначение первых четырех байтов всегда одинаково, а назначение оставшихся четырех байтов зависит от типа ICMP-сообщения.

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

Тип Код Описание Назначение Кто обрабатывает
0 0 Echo Ответ пользовательскому приложению Пользовательское приложение
3 Получатель недоступен Ошибка Пользовательское приложение
  0 Сеть недоступна    
  1 Узел недоступен    
  2 Протокол недоступен    
  3 Порт недоступен    
  4 Нужна фрагментация, но бит фрагментации не установлен    
  5 Ошибка маршрута    
  6 Неизвестная сеть назначения    
  7 Неизвестен узел назначения    
  9 Сеть получателя административно запрещена    
  10 Узел получателя административно запрещен    
  11 Сеть недоступна для TOS    
  12 Узел недоступен для TOS    
  13 Связь запрещена сетевым фильтром    
4 0 Подавление источником Ошибка Ядро ОС для TCP
5 Перенаправление Ошибка Ядро ОС
  0 Перенаправление для сети    
  1 Перенаправление для узла    
  2 Перенаправление для TOS и сети    
  3 Перенаправление для TOS и узла    
8 0 Echo-запрос Запрос приложения пользователя Ядро ОС
9 0 Объявление маршрутизации Ответ приложения пользователя Процесс пользователя
11 Истечение времени Ошибка Процесс пользователя
  0 TTL = 0    
  1 Вышло время сбора фрагмента    

По умолчанию этот протокол блокируется брандмауэром Windows Vista, Windows 7, Windows Server 2008/2008 R2, а также некоторыми маршрутизаторами и функционально независимыми брандмауэрами. Для того чтобы вы могли использовать функционал устранения неполадок сетевых подключений, создайте исключение для ICMP в брандмауэре Windows или включите общий доступ к файлам в диалоговом окне «Центр управления сетями и общим доступом». В этой статье вы узнаете о таких утилитах ICMP, как Ping, Tracert, а также PathPing.

Использование утилиты Ping

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

Утилита Ping помогает проверить соединение на IP-уровне и используется для тестирования сетевых подключений, позволяя отправить Echo-запрос по протоколу ICMP на имя или IP-адрес целевого узла. Чаще всего данная утилита используется в том случае, когда необходимо проверить, может ли ведомый компьютер подключиться к сети TCP/IP или сетевым ресурсам. Для того чтобы воспользоваться командой ping, откройте окно командной строки, введите там команду ping, укажите имя или IP-адрес удаленного компьютера или сервера, подключение к которому вам нужно проверить и, в случае необходимости, укажите дополнительные параметры. Утилита ping отображает Echo-ответы и ведет простую статистику, из которой понятно, сколько пакетов получено, а сколько потеряно. Если удаленный компьютер реагирует на запрос ping, то подключение к удаленному компьютеру работает. По умолчанию утилита ping ожидает каждый ответ в течение четырех секунд и в случае неудачи отображает сообщение «Превышен интервал ожидания для запроса», то есть, если вы выполняете команду по каналу с большим временем задержки, вам придется увеличить период ожидания. Так как при преобразовании имени компьютера в IP-адрес команда ping использует разрешение имен по типу Windows Sockets и если данная команда успешно выполняется для адреса, но не для имени, то возможно был указан не правильный адрес или проблема может быть связана с разрешением имени. Для этой команды вы можете использовать следующие параметры:

  • -t. Данный параметр указывает на то, что производится проверка связи с указанным узлом до прекращения вручную;
  • -n. Текущий параметр определяет количество отправляемых Echo-запросов;
  • -f. Этот параметр устанавливает бит «не фрагментировать» на ping-пакете. По умолчанию фрагментация разрешается;
  • -w. Данный параметр позволяет настроить тайм-аут для каждого пакета в миллисекундах (по умолчанию установлено значение 4000);
  • -a. Текущий параметр определяет имена узлов по адресам;
  • -l. При помощи этого параметра вы можете указать размер буфера отправки;
  • -i. Использование данного параметра позволяет вам задать срок жизни пакета;
  • -v. Этот параметр задает тип службы для IPv4 и не влияет на поле TOS в IP-заголовке;
  • -r. Текущий параметр записывает маршрут для указанного числа прыжков;
  • -s. Данный параметр позволяет отмечать время для указанного числа прыжков;
  • -j. Используя этот параметр, вы можете указать свободный выбор маршрута по списку узлов;
  • -k. При помощи данного параметра вы можете определить жесткий выбор маршрута по списку узлов;
  • -R. Текущий параметр позволяет использовать заголовок для проверки также и обратного маршрута только для IPv6;
  • -S. Данный параметр указывает используемый адрес источника;
  • -4. Параметр определяет принудительное использование протокола IP версии 4;
  • -6. Параметр определяет принудительное использование протокола IP версии 5.

Пример использования данной команды:

Ping 89.108.123.52 –w 5000 –n 7

icmp-01

Рис. 1. Использование утилиты Ping

Использование утилиты Tracert

Помимо утилиты Ping при возникновении неполадок связи вы также можете воспользоваться командой Tracert для отслеживания пути к конечной точке в сети, а также тестирования на этом пути каждого маршрутизатора и отображения времени, которое было затрачено на этот прыжок. Путь до точки назначения определяется посредством пересылки в точку назначения Echo-запросов протокола ICMP или сообщений ICMPv6 с постоянным увеличением значений срока жизни TTL. Каждый маршрутизатор, через который проходит путь, обязан перед дальнейшей пересылкой пакета уменьшить значение его поля TTL, по меньшей мере, на 1. Путь, который выводится в окне командной строки, является списком ближайших интерфейсов маршрутизаторов, которые расположены на пути между узлом источника и местом назначения. В том случае, когда параметр TTL становится равным 0, маршрутизатор посылает системе-источнику сообщение ICMP об истечении времени. Максимальное количество переходов по умолчанию равно 30, но вы его можете изменить, используя дополнительный параметр. Некоторые маршрутизаторы не посылают сообщения об истечении времени для пакетов с нулевыми значениями TTL. Для команды tracert такие маршрутизаторы не видны, и в случае перехода они обозначаются строкой звездочек. В том случае, если путь от ведомого до искомого сервера пролегает через промежуточные маршрутизаторы, вы можете проверить реагирование каждого промежуточного маршрутизатора. Для того чтобы воспользоваться функционалом текущей утилиты, откройте окно командной строки, введите команду tracert, а затем имя или адрес конечного компьютера или сервера и дополнительные параметры. Для этой команды используются следующие параметры:

  • -d. Данный параметр предотвращает любые попытки утилиты tracert разрешать IP-адреса промежуточных маршрутизаторов в имена, что позволяет увеличить скорость вывода результатов;
  • -h. Текущий параметр задает максимальное количество переходов на пути при поиске конечного объекта;
  • -j. При помощи этого параметра вы можете указать для сообщений с Echo-запросом использовать параметр нестрогой маршрутизации от источника в заголовке IP с набором промежуточных мест назначения, указанных в перечне списка узлов. Данный параметр используется только при трассировке IPv4-адресов;
  • -w. Данный параметр определяет время ожидания для получения Echo-ответов протокола ICMP или ICMP-сообщений об истечении времени в миллисекундах, которые соответствуют данному сообщению Echo-запроса. Значение по умолчанию 4 секунды;
  • -R. Этот параметр позволяет задать использование заголовка расширения маршрутизации IPv6 для отправки Echo-запроса на локальный узел с использованием адреса назначения в качестве промежуточного назначения и проверки обратного маршрута;
  • -S. Текущий параметр указывает адрес источника для использования в сообщениях с Echo-запросом при трассировке IPv6-адресов;
  • -4. Данный параметр задает использование протокола IPv4 для данной трассировки;
  • -6. Этот параметр задает использование протокола IPv6 для данной трассировки;

Пример использования:

Tracert oszone.net –w 7000

icmp-02

Рис. 2. Использование утилиты Tracert

Использование утилиты PathPing

Утилиты Ping и Tracert сочетают в себе хорошие возможности, предназначенные для тестирования сетевых подключений, но существует команда, которая совмещает в себе все эти возможности, а также содержит некоторые дополнительные особенности. Утилита PathPing отправляет многочисленные сообщения с Echo-запросом каждому маршрутизатору, который находится между исходным пунктом и пунктом назначения, после чего, на основании пакетов, полученных от каждого из них, вычисляет процентное соотношение пакетов, возвращаемых в каждом прыжке. Так как утилита PathPing показывает степень потери пакетов на каждом маршрутизаторе или узле, с ее помощью вы можете точно определить маршрутизаторы и узлы, на которых возникают сетевые проблемы. Эквивалентно утилите Tracert, утилита PathPing идентифицирует маршрутизаторы, которые расположены на пути к исходному узлу, после чего она периодически в течение заданного времени обменивается пакетами со всеми маршрутизаторами и на основании числа пакетов, полученных от каждого из них, обрабатывает статистику. В отличие от предыдущих утилит, во избежание перегрузки сети пакеты должны передаваться через довольно большие интервалы времени. Подобно утилите Tracert, утилита PathPing сначала выводит путь, а после чего, в течение 90 секунд выдает сообщение о том, что она занята. Именно в этот период происходит сбор сведений со всех маршрутизаторов, перечисленных выше и со всех соединений между ними. С данной командой вы можете использовать следующие параметры:

  • -g. Данный параметр определяет использование параметра свободной маршрутизации в IP-заголовке с набором промежуточных мест назначения для сообщений с Echo-запросом, который указывается в списке компьютеров.
  • -h. Данный параметр задает максимальное количество переходов на пути при поиске конечного объекта;
  • -i. Этот параметр указывает IP-адрес источника;
  • -n. Текущий параметр предотвращает попытки сопоставления IP-¬адресов промежуточных маршрутизаторов с их именами, что существенно ускоряет вывод результатов;
  • -p. Используя данный параметр, вы можете задать время ожидания между последовательными проверками связи, где значением по умолчанию указано 250 миллисекунд;
  • -q. При помощи текущего параметра вы можете указать количество сообщений с Echo-запросом, отправленных каждому маршрутизатору пути (по умолчанию — 100);
  • -w. Данный параметр определяет время ожидания для получения Echo-ответов протокола ICMP или ICMP-сообщений об истечении времени в миллисекундах, которые соответствуют данному сообщению Echo-запроса. Значение по умолчанию 4 секунды;
  • -4. Параметр определяет принудительное использование протокола IP версии 4;
  • -6. Параметр определяет принудительное использование протокола IP версии 5.

Пример использования:

PathPing –n –w 5000 oszone.net

icmp-03

Рис. 3. Использование утилиты PathPing

Заключение

В этой статье вы узнали о назначении протокола межсетевых управляющих сообщений ICMP, а также о таких утилитах ICMP, как Ping, Tracert и PathPing, которые помогают проверять соединение на IP-уровне и используются для тестирования сетевых подключений, позволяя отправить Echo-запрос по протоколу ICMP на имя или IP-адрес целевого узла. Утилита Ping используется в том случае, когда необходимо проверить, может ли ведомый компьютер подключиться к сети TCP/IP или сетевым ресурсам. Утилита Tracert предназначена для отслеживания пути к конечной точке в сети, а также тестирования на этом пути каждого маршрутизатора и отображения времени, которое было затрачено на этот прыжок. А утилита PathPing, в свою очередь, совмещает все возможности вышеперечисленных утилит, а также на основании пакетов, полученных от каждого из них, вычисляет процентное соотношение пакетов, возвращаемых в каждом прыжке.

Реклама