Протокол управления сообщениями в Интернете ICMP (Internet Control Message Protocol) — это механизм отчёта об ошибках, важный подпротокол в кластере протоколов TCP/IP, обычно используемый протоколами IP-уровня или более высокого уровня (TCP или UDP), относящийся к протоколу сетевого уровня, в основном используемый для передачи контрольных сообщений между IP-хостами и маршрутизаторами, используется для отчета о доступности к хосту, доступности маршрута и т. д. Хотя эти управляющие сообщения не передают пользовательские данные, они играют ключевую роль в сборе различных сетевых данных, диагностике и устранении различных сетевых неисправностей, а также передаче пользовательских данных.
Зачем нужен ICMP?
В процессе передачи данных IP предоставляет сервис наилучших усилий, то есть прилагать максимум усилий для отправки пакетов данных на адрес назначения. Он не проверяет, получает ли получатель пакет или нет, и не может выполнять управление потоком и контроль ошибок. Поэтому в процессе передачи пакетов неизбежны различные ошибки. ICMP был создан для более эффективной пересылки IP-пакетов и повышения шансов на их успешную доставку. При ICMP, при возникновении проблемы с передачей пакетов в сети, хост или устройство сообщает об ошибке протоколу верхнего уровня и предоставляет отчёт о ненормальной ситуации, чтобы протокол верхнего уровня мог оценить правильность связи через собственную программу контроля ошибок для управления трафиком и ошибками, чтобы обеспечить качество обслуживания.
Каковы сценарии применения ICMP?
Отчётность об ошибках
Сообщения об ошибках ICMP сообщают о сетевых ошибках, таких как недоступность пункта назначения, тайм-ауты или проблемы с сегментацией. Эти сообщения особенно важны для User Datagram Protocol (UDP) с моделью бессоединенной коммуникации.
UDP не обеспечивает надёжную и упорядоченную передачу пакетов. При отправке UDP-пакетов пакеты могут теряться или выходить из строя, например, ошибки контрольной суммы во время передачи. Если это происходит, получатель отправляет обратно сообщение об ошибке ICMP отправителю, чтобы уведомить о проблеме.
Диагностика
ICMP можно использовать для диагностики сети. Чаще всего используется для команд ping и traceroute.
Команда ping проверяет доступность сетевых устройств, отправляя ICMP-эхо-запросы на целевое устройство. Если устройство доступно, возвращается ICMP-эхо-ответ. Он надёжно проверяет задержку сети и обеспечивает доступность устройств.
Команда traceroute отслеживает путь, пройденный пакетом от его источника до пункта назначения. Для этого команда отправляет эхо-запрос и ответное сообщение эха в нужное место.
Эхо-запросы содержат значение времени работы (TTL), которое уменьшается на 1 для каждого маршрутизатора, через который проходит пакет. Когда пакет достигает маршрутизатора с нулевой TTL, маршрутизатор отправляет ICMP-сообщение исходнику.
Сообщение содержит информацию о маршруте, пройденном пакетом. Traceroute показывает точный путь пакета и может предоставить информацию о производительности вашей сети.
Кибербезопасность
Вы можете использовать ICMP для обнаружения несанкционированного сетевого трафика и пропускать через сеть только легальный трафик. Межсетевые экраны используют ICMP для разрешения или блокировки определённых типов трафика. Сетевые администраторы также используют инструменты мониторинга ICMP для отслеживания состояния и подключения сетевых устройств и обнаружения неизвестных устройств.
Вы также можете использовать его для выявления необычных дорожных маршрутов, которые могут указывать на несанкционированную активность.
Формат сообщения протокола ICMP
Формат пакета ICMP показан на рисунке, и каждое сообщение ICMP содержит полный заголовок IP-пакета, из которого возникло сообщение ICMP, а пакет ICMP инкапсулирован внутри IP-пакета как часть IP-пакета. Три фиксированных поля, включённых в заголовок ICMP, являются основной основой для исходного устройства для определения типа ошибки.
Поле Type указывает тип сообщения ICMP; Поле Код представляет собой подтип сегмента типа сообщения ICMP; Поле Checksum представляет контрольную сумму пакетов ICMP.
Различные типы пакетов ICMP делятся на два типа: пакеты ошибок и пакеты запросов, как показано в таблице классификации пакетов ICMP.
Классификация пакетов ICMP
Тип | | | | 0-эхо-ответ | 0 | Эхо отвечает на сообщение | Спрашивать | 3- Цель недостижима | 0 | Целевая сеть не может достичь пакета | Ошибка | 1 | Целевой хост не может добраться до пакета | Ошибка | 2 | Целевой договор не может достичь пакета | Ошибка | 3 | Порт назначения не может достичь пакета | Ошибка | 4 | Сообщения сегментации и DF-флагов | Ошибка | 5 | Неудачные пакеты с исходным маршрутом | Ошибка | 6 | Неизвестные сетевые пакеты назначения | Ошибка | 7 | Неизвестные пакеты получателя | Ошибка | 8 | Исходный хост изолирует пакеты | Ошибка | 9 | Сетевые пакеты, к которым запрещен доступ | Ошибка | 10 | Сообщения хозяев, к которым запрещен доступ | Ошибка | 11 | Пакеты недоступны для конкретной сети TOS | Ошибка | 12 | Пакеты недоступны к конкретному хосту TOS | Ошибка | 13 | Пакеты подавляются из-за фильтрации сетевого трафика | Ошибка | 14 | Сообщение о превышении полномочий хозяина | Ошибка | 15 | Эффективное сообщение о прекращении приоритета | Ошибка | 5- Перенаправление | 0 | Перенаправление сетевых пакетов | Ошибка | 1 | Перенаправлять хост-пакеты | Ошибка | 2 | Пакеты перенаправления сети на основе TOS | Ошибка | 3 | Пакеты перенаправления хостов на базе TOS | Ошибка | 8- Запрос эха | 0 | Echo запрашивает пакеты | Спрашивать | 9- Объявление о роутере | 0 | Сообщения о маршрутизации | Спрашивать | 10 - Запрос на роутер | 0 | Обнаружение/выбор/запрос пакетов для маршрутизаторов | Спрашивать | 11 - Тайм-аут ICMP | 0 | Сообщение о тайм-ауте TTL | Ошибка | 1 | Разделение и реорганизация тайм-аутов пакетов | Ошибка | 12- Задачи параметров | 0 | Первое сообщение об ошибке параметра IP-отчёта | Ошибка | 1 | Отсутствуют необходимые пакеты опций | Ошибка | 2 | Неподдерживаемые пакеты длины | Ошибка | 13- Запрос на отметку времени | 0 | Пакеты запросов с временной меткой | Спрашивать | Ответ с отметкой времени 14 | 0 | Ответные пакеты с временной меткой | Спрашивать | 15- Запрос информации | 0 | Пакеты запроса информации | Спрашивать | 16- Информационный ответ | 0 | Пакеты ответов сообщений | Спрашивать |
Разница между ICMP и TCP
TCP — это протокол, ориентированный на соединение, предназначенный для надёжной передачи данных с проверкой ошибок. Он широко используется для веб-серфинга, электронной почты, удалённого входа и передачи файлов. TCP требует рукопожатия — серии сообщений, устанавливающих доверие и аутентификацию между отправителем и получателем. TCP гарантирует доставку сообщений.
В отличие от этого, протокол Internet Control Message Protocol (ICMP) является бесконтактным протоколом. Это не гарантирует доставку сообщений. Поскольку ICMP используется только для отчетности об ошибках, сообщения ICMP также меньше TCP-пакетов.
ICMP и TCP используются вместе для определения причины отказа передачи TCP. |