Что такое протокол управляющих сообщений Интернета (ICMP) и как он работает?
Технология объяснена

Что такое протокол управляющих сообщений Интернета (ICMP) и как он работает?

ICMP – это протокол для определения доступности сети и управления потоком и ошибками на сетевом уровне. Но что это означает на практике?

Internet Control Message Protocol (ICMP) – это протокол третьего уровня (сетевого уровня) в семиуровневой модели OSI. Протокол диагностирует проблемы подключения к сети или передачи данных между устройствами. Он помогает отправлять, получать и обрабатывать ICMP-сообщения, чтобы сообщать о проблемах подключения исходному сетевому устройству

Таким образом, основная цель протокола ICMP – сообщать об ошибках на сетевом уровне. Однако злоумышленники могут манипулировать его функциональностью для осуществления таких атак, как распределенный отказ в обслуживании (DDoS) и атаки типа ‘Ping of Death’. Здесь вы узнаете о протоколе ICMP, его использовании и параметрах, которые важны для понимания сообщений ICMP

Как работает ICMP?

Маршрутизаторы используют протокол ICMP для управления сетью и диагностики проблем. Он генерирует и отправляет сообщения об ошибках на устройство отправителя, когда сеть препятствует доставке пакетов на устройство назначения. Эти сообщения об ошибках включают превышение времени, проблему с параметрами, недостижимость пункта назначения, перегрузку сети и т.д

Например, когда отправитель посылает данные с одного устройства на устройство назначения в виде IP-датаграммы, они проходят через несколько маршрутизаторов или промежуточных устройств. Иногда при пересылке датаграммы IPV4 может возникнуть ошибка. Поэтому сообщения ICMP делятся на две большие категории: сообщения об ошибках и сообщения запросов

Сообщения об ошибках

Это сообщения, с которыми маршрутизатор или промежуточный узел может столкнуться при обработке дейтаграмм:

  1. Time Exceeded: ICMP-пакет имеет параметр time-to-live, при достижении которого 0 маршрутизатор или узел отбрасывает дейтаграмму и отправляет сообщение об ошибке time exceeded. Это сообщение также отправляется, когда пункт назначения не получает все фрагменты данных.
  2. Destination Unreachable: Устройство, инициирующее соединение, получает сообщение об ошибке недостижимого места назначения, когда маршрутизатор или промежуточный узел не может его доставить. Как следствие, устройства отбрасывают дейтаграмму.
  3. Source Quench: Когда устройства не могут доставить дейтаграмму из-за перегрузки сети, они отправляют ICMP ‘source quench message’ отправителю сообщения. Сообщение об ошибке добавляет контроль потока на сетевом уровне, информируя устройство-источник о перегрузке на пути и замедляя процесс отправки данных.
  4. Перенаправление: Маршрутизатор с неоптимальным путем перенаправляет пакет к маршрутизатору с оптимальным путем между источником и пунктом назначения. При этом он обновляет источник об изменении маршрута.
  5. Parameter Problem: Устройство-источник получает это сообщение, когда в заголовке дейтаграммы отсутствует какое-либо значение. Например, разница в вычисленной контрольной сумме в пункте назначения и в источнике порождает следующее сообщение об ошибке ICMP.

 

Сообщения запросов

Сообщения запроса встречаются парами и предоставляют конкретную информацию от промежуточных устройств к исходному устройству

  1. Сообщения эхо-запроса и эхо-ответа: Эти сообщения помогают решить проблемы диагностики сети.
  2. Timestamp Request and Reply: Эти запросы и ответные сообщения метки времени помогают определить время в пути между устройствами.

Понимание параметров ICMP

Данные ICMP-сообщений инкапсулируются под IP-заголовок, что означает, что заголовок датаграммы ICMP идет после информации IPv4/v6. Первая часть заголовка пакета ICMP содержит параметры, которые помогают сетевым устройствам определить сообщение об ошибке или запросе

Среди первых 32 битов первые 8 битов определяют тип сообщения, следующие 8 битов определяют код сообщения, а оставшиеся биты содержат информацию, связанную с целостностью данных. Таким образом, три информационных поля – это: Типы ICMP, Код ICMP и Контрольная сумма

Типы ICMP

Тип определяет назначение ICMP-пакета. Он кратко объясняет, почему устройство-источник получает это сообщение. Существует 0-255 типов сообщений ICMP, каждый тип предоставляет различную информацию. Некоторые важные типы ICMP следующие:

0: Эхо-запрос

3: Destination Unreachable

4: Source Quench

5: Перенаправление

8: Эхо-ответ

11: Превышено время

12: Проблема с параметрами

30: Traceroute

Код ICMP

Код ICMP предоставляет дополнительную информацию о сообщениях. Например, ICMP типа 3 с кодом 0-15 указывает, почему пункт назначения недоступен; то есть, если код равен 0, то это потому, что сеть недоступна. Аналогично, для типа 3 с кодом 1 сообщение указывает, что хост недоступен

Более того, тип 8 код 0 и тип 0 код 0 представляют собой сообщения эхо-запроса и эхо-ответа. Следовательно, каждый тип сообщения с одинаковым значением кода предоставляет различную сетевую информацию

Контрольная сумма

Контрольная сумма – это механизм обнаружения ошибок, определяющий целостность данных. Значение контрольной суммы представляет биты в передаваемом сообщении. Отправитель вычисляет и включает контрольную сумму данных, а получатель пересчитывает это значение и сравнивает его с исходным, чтобы определить любые изменения в исходном сообщении во время передачи

Вторая часть заголовка указывает на значение байта, которое является причиной проблемы в исходном сообщении. Наконец, конечная часть ICMP-пакета – это собственно дейтаграмма

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

Здесь приведены некоторые рабочие примеры использования протокола ICMP в различных утилитах сетевого управления и администрирования

Ping

Ping – это утилита командной строки, которая использует ICMP эхо-запрос и эхо-ответ для проверки доступности сети и задержки между устройствами. Утилита просто определяет доступность сервера назначения, оценивая общее количество отправленных или полученных пакетов и процент потери пакетов. Он также помогает определить общий максимальный размер единицы передачи (MTU)

Используйте ping <ip_address> для определения доступности google.com:

Traceroute

Traceroute – это еще одна утилита командной строки, которая использует сообщения эхо-запроса и эхо-ответа с переменной TTL для определения пути между устройствами источника и назначения. Она также полезна для определения задержки ответа и обеспечивает точность путем многократного опроса каждого хопа

Как ICMP работает без порта?

Из приведенного выше объяснения следует, что ICMP – это протокол без соединения, который самостоятельно отправляет данные в виде дейтаграммы, а его заголовок появляется после деталей IPv4. Однако можно также заметить отсутствие номера порта, что поднимает вопрос о том, как устройства получают данные ICMP или узнают о каком-либо соединении?

Ответ довольно прост. Протокол ICMP был разработан для работы на сетевом уровне модели OSI и взаимодействия между маршрутизаторами и хостами для обмена информацией. Номера портов являются частью транспортного уровня, а ICMP не является ни протоколом TCP, ни протоколом UDP. Наконец, комбинация типа и кода ICMP помогает устройствам определить сообщение и получить всю информацию о сети

Контроль ошибок и потока с помощью ICMP

Приведенные выше сведения о протоколе ICMP показывают, как он обеспечивает управление потоком и контроль ошибок данных на третьем уровне модели OSI. Сообщения протокола и параметры в первой части заголовка пакета ICMP охватывают все аспекты управления сетью и вопросы диагностики

Важно знать, что неправильные настройки брандмауэра могут позволить злоумышленникам проводить ping-расследования через сеть организации и сделать ее подверженной DDOS, ping of death и ICMP flood атакам. Вы можете использовать Wireshark для захвата пакетов из интернета и провести детальный анализ ICMP-пакетов для лучшего понимания

Об авторе

Алексей Белоусов

Привет, меня зовут Филипп. Я фрилансер энтузиаст . В свободное время занимаюсь переводом статей и пишу о потребительских технологиях для широкого круга изданий , не переставая питать большую страсть ко всему мобильному =)

Комментировать

Оставить комментарий