Протокол ICMP является одним из компонентов стека TCP/IP (Transmission Control Protocol/Internet Protocol — протокол управления передачей/протокол сети Internet), который компенсирует неспособность протокола IP гарантированно доставлять данные. Вместе с тем, протокол не решает проблемы передачи данных протоколом IP. Он лишь уведомляет отправителя данных о том, что при их доставке возникли проблемы. Если при доставке дейтаграммы происходит ошибка, протокол ICMP сообщает об этом отправителю дейтаграммы.
Для чего используется ICMP ?
Основная цель протокола это отчетность об ошибках. При соединении двух сетевых устройств, если часть данных не доходит до адреса назначения, теряется или превышает допустимые таймауты – ICMP генерирует ошибки.
Второе, и, пожалуй, одно из самых популярных применений ICMP это утилиты ping и traceroute. Термин “пинговать” как – раз связан с протоколом ICMP и “пинговать” хост означает отправлять ICMP пакеты с целью понять, отвечает ли на них целевое устройство.
Говоря простым языком, протокол помогает определить может ли достичь пакет адреса назначения в установленные временные рамки.
Возможные проблемы
С помощью ICMP можно провести атаки на сеть. Это связано с отказом сетевого устройства в обслуживании (denial-of-service, DoS). Например “флуд – атака”, суть которой заключается в отправке огромного количества пинг – запросов на хост назначения с разных источников. В итоге устройство отвечает кучей пакетов на разные адреса и перегружает собственные мощности и сетевой интерфейс.
ICMP-пакеты никогда не генерируются в ответ на IP-пакеты с широковещательным или групповым адресом, чтобы не вызывать перегрузку в сети (так называемый «широковещательный шторм»). Но при определённых обстоятельствах это возможно воспроизвести. Подробнее здесь.
Внимание!
Иногда на сетевых устройствах (маршрутизаторах, серверах) отключают отправку ICMP пакетов, в таком случае на “пинги” такой узел отвечать не будет, хотя сам будет активен и нормально функционировать в сети. Делается это для безопасности и увеличения производительности. В этом случае может сложиться ложное впечателение, что сетевой узел не работает.
Для проверки работоспособности узла в этом случае используют утилиты nmap, tcping или telnet.