← Все вопросы

Что такое протокол ICMP и для чего он нужен?

Задан 18 месяцев назад1.3к просмотров2 ответа
9

Видел ICMP в настройках файрвола и в выводе утилит. Расшифровывается как Internet Control Message Protocol. Но что он реально делает? Это транспортный протокол вроде TCP/UDP или что-то другое?

2 ответа

15
✓ Принятый ответ — помог автору

ICMP (Internet Control Message Protocol) — это служебный протокол сетевого уровня, который используется для передачи сообщений об ошибках и диагностики сети. Это не транспортный протокол: через него не передают пользовательские данные (нет понятия портов, как у TCP/UDP).

ICMP работает «поверх» IP (как бы рядом с TCP/UDP на сетевом уровне) и нужен, чтобы устройства могли сообщать друг другу о проблемах с доставкой пакетов.

Типичные сообщения ICMP:

Сообщение Когда возникает
Echo Request / Echo Reply работа ping
Destination Unreachable хост/сеть/порт недостижим
Time Exceeded TTL пакета истёк (на этом работает traceroute)
Redirect роутер подсказывает лучший маршрут

Простой пример: вы отправили пакет на хост, который выключен. Маршрутизатор, который не смог доставить пакет, отправит вам обратно ICMP-сообщение «Destination Unreachable». Без ICMP вы бы просто сидели и ждали неизвестно чего.

Зачем это вам на практике: команды ping и traceroute целиком построены на ICMP. Когда в файрволе «запрещают пинг» — это как раз режут ICMP Echo.

6

Важное дополнение по безопасности: иногда ICMP полностью блокируют на файрволе «чтобы не пинговали». Делать это бездумно не стоит — некоторые типы ICMP критичны для нормальной работы сети. Например, ICMP «Fragmentation Needed» участвует в Path MTU Discovery, и если его заблокировать, могут начаться странные зависания соединений с большими пакетами. Так что блокируют обычно только Echo Request, а не весь ICMP целиком.

Ваш ответ

Войдите, чтобы ответить на вопрос.
Поддержать проект