Комментарии (3)
Ответ сгенерирован нейросетью и может содержать ошибки
По какому порту работает ICMP?
ICMP (Internet Control Message Protocol) — это протокол сетевого уровня модели OSI (уровень 3), и он не использует порты в том смысле, в котором их используют транспортные протоколы, такие как TCP или UDP. Понятие «порт» — это абстракция транспортного уровня (уровень 4), предназначенная для мультиплексирования нескольких соединений на одном IP-адресе. ICMP функционирует на более низком уровне и служит для обмена служебными сообщениями об ошибках и статусах в IP-сети, не устанавливая соединений в классическом понимании.
Почему у ICMP нет портов?
Вместо портов ICMP использует два ключевых поля в заголовке для идентификации типа сообщения и его конкретного «контекста»:
- Тип (Type): Определяет общую категорию сообщения (например,
8— Echo Request,0— Echo Reply,3— Destination Unreachable,11— Time Exceeded). - Код (Code): Уточняет тип сообщения в рамках общей категории. Например, для типа
3(Destination Unreachable) код0означает «сеть недоступна», а код3— «порт недоступен».
Для запросов, требующих ответа (как в утилите ping), используется дополнительный механизм:
- Идентификатор (Identifier): Обычно используется для сопоставления запроса и ответа. В Linux для эхо-запросов часто используется идентификатор процесса (PID) отправившей программы.
- Номер последовательности (Sequence Number): Позволяет отслеживать несколько запросов в рамках одного сеанса. При выполнении
ping -c 5каждый пакет будет иметь возрастающий номер последовательности.
Таким образом, комбинация полей «Тип» и «Код», а для эхо-запросов также «Идентификатор» и «Номер последовательности», выполняет ту же роль, что и комбинация IP-адрес + порт для TCP/UDP, но на другом уровне стека.
Практический пример: как ping и брандмауэры работают с ICMP
Когда вы запускаете ping ya.ru, происходит следующее:
- Ваша система формирует ICMP-пакет типа 8 (Echo Request). В его данные могут быть включены идентификатор и номер последовательности.
- Этот пакет инкапсулируется в IP-датаграмму и отправляется на адрес целевого хоста.
- Узел-получатель, если он доступен и разрешает ответы, отправляет обратно ICMP-пакет типа 0 (Echo Reply) с теми же данными.
- Ваша система по идентификатору и номеру последовательности понимает, что это ответ на её конкретный запрос.
Брандмауэры (например, iptables или nftables) для фильтрации ICMP трафика используют именно эти поля, а не порты.
Пример правил iptables для управления ICMP:
# Разрешить входящие эхо-запросы (позволить другим ping-овать нас)
sudo iptables -A INPUT -p icmp --icmp-type echo-request -j ACCEPT
# Разрешить исходящие эхо-ответы (чтобы отвечать на ping)
sudo iptables -A OUTPUT -p icmp --icmp-type echo-reply -j ACCEPT
# Запретить все входящие сообщения "Time Exceeded" (тип 11)
sudo iptables -A INPUT -p icmp --icmp-type time-exceeded -j DROP
Для проверки, какие типы ICMP пропускаются через ваш брандмауэр, можно использовать утилиту nmap:
# Проверка доступности стандартных эхо-запросов (ping)
nmap -PE example.com
# Более агрессивная проверка различных типов ICMP (требует прав суперпользователя)
sudo nmap -sn -PO --send-ip example.com
Специальный случай: перенаправление портов (Port Forwarding) и туннели
Иногда в контексте сетевой администирации возникает путаница, связанная с ICMP туннелированием — техникой, которая инкапсулирует трафик других протоколов (например, TCP) внутри ICMP-пакетов для обхода ограничений. Это исключение, которое подтверждает правило: сам ICMP портов не имеет, но может использоваться как транспорт для данных, которые порты используют. Также некоторые утилиты диагностики, такие как traceroute, могут использовать UDP или TCP с определёнными портами (по умолчанию порты с большими номерами) вместо ICMP для отслеживания пути, что тоже может вызывать путаницу.
Итог: Запомните, что ICMP работает без портов. Для адресации и фильтрации его сообщений используются поля Type и Code в его собственном заголовке. Это фундаментальное отличие от протоколов транспортного уровня, которое важно для корректной настройки сетевого оборудования, брандмауэров и понимания работы диагностических инструментов.