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

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

Протокол управляющих сообщений Интернета (ICMP) — это протокол третьего уровня (сетевого уровня) в семиуровневой модели OSI. Протокол диагностирует сетевое подключение или проблемы с передачей данных между устройствами. Это помогает, отправляя, получая и обрабатывая сообщения ICMP, чтобы сообщать о проблемах с подключением к исходному сетевому устройству.

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

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

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

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

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

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

  1. Превышено время: пакет ICMP имеет параметр времени жизни, который, когда он достигает 0, маршрутизатор или хост отбрасывает дейтаграмму и отправляет сообщение об ошибке превышения времени. Сообщение также отправляется, когда пункт назначения не получает все фрагменты данных.
  2. Пункт назначения недостижим: устройство, инициирующее подключение, получает сообщение об ошибке «недоступный пункт назначения», когда маршрутизатор или промежуточный узел не может его доставить. Следовательно, устройства отбрасывают дейтаграмму.
  3. Source Quench: когда устройствам не удается доставить дейтаграмму из-за перегрузки сети, они отправляют отправителю сообщения ICMP «сообщение о подавлении источника». Сообщение об ошибке добавляет управление потоком на сетевом уровне, информируя исходное устройство о перегрузке на пути и замедляя процесс отправки данных.
  4. Перенаправление: Маршрутизатор с неоптимальным путем перенаправляет пакет на маршрутизатор с оптимальным путем между источником и пунктом назначения. Таким образом, он обновляет источник об изменении своего маршрута.
  5. Проблема с параметром: исходное устройство получает это сообщение, когда в заголовке дейтаграммы отсутствует какое-либо значение. Например, разница в рассчитанной контрольной сумме в пункте назначения и в источнике генерирует это сообщение об ошибке ICMP.

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

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

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

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

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

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

Типы ICMP

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

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

3: Пункт назначения недоступен

4: Исходное гашение

5: перенаправить

8: Эхо-ответ

11: Время истекло

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

30: Трассировка

ICMP-код

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

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

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

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

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

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

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

пинг

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

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

трассировка

Traceroute — еще одна утилита командной строки, которая использует сообщения эхо-запроса и эхо-ответа с переменной TTL для сопоставления пути между исходным и целевым устройствами. Это также полезно при определении задержек отклика и обеспечивает точность, запрашивая каждый переход несколько раз.

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

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

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

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

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

Перейти к верхней панели