Открыть сервис

ICMPv6

ICMPv6 (Internet Control Message Protocol version 6, протокол межсетевых управляющих сообщений версии 6) — это сетевой протокол, входящий в стек TCP/IPv6 и предназначенный для передачи служебных сообщений об ошибках, диагностики соединений, обнаружения соседей и других вспомогательных функций, необходимых для работы сетей на базе протокола IPv6. В отличие от ICMP для IPv4, ICMPv6 является неотъемлемой частью IPv6 и выполняет ряд критических задач, которые в IPv4 решались другими протоколами (например, ARP, IGMP). Протокол определён в стандарте RFC 4443 (заменившем RFC 2463).

История и развитие

Протокол ICMPv6 был разработан в середине 1990-х годов в рамках создания нового поколения протокола IP — IPv6. Основной целью было устранение недостатков ICMPv4 и интеграция функций, необходимых для автоконфигурации и обнаружения соседей в локальных сетях. Первоначальная спецификация была опубликована в RFC 1885 в 1995 году, затем уточнена в RFC 2463 (1998) и окончательно закреплена в RFC 4443 (2006). В последующие годы протокол дополнялся расширениями, в частности, для поддержки Multicast Listener Discovery (MLD), Neighbor Discovery (ND) и Path MTU Discovery (PMTUD).

Функции и область применения

ICMPv6 выполняет несколько принципиально разных групп функций, которые в IPv4 были распределены между ICMP, ARP и IGMP.

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

Основная задача ICMPv6 — информировать отправителя о проблемах при доставке пакетов. К таким сообщениям относятся:

Диагностические сообщения

Для проверки связности и измерения задержек используются эхо-запросы и эхо-ответы (аналогичные ping в IPv4). Типы сообщений:

Эти сообщения позволяют проверить доступность узла и время прохождения пакета.

Neighbor Discovery (NDP)

Одной из ключевых особенностей ICMPv6 является интеграция протокола Neighbor Discovery Protocol (NDP), который заменяет ARP в IPv4. NDP использует следующие типы ICMPv6-сообщений:

NDP также отвечает за обнаружение дублирующихся адресов (Duplicate Address Detection, DAD) и автоконфигурацию адресов без использования DHCP (Stateless Address Autoconfiguration, SLAAC).

Multicast Listener Discovery (MLD)

MLD — это подпротокол ICMPv6, используемый для управления многоадресной рассылкой (multicast). Он заменил IGMP из IPv4. MLDv1 (RFC 2710) и MLDv2 (RFC 3810) позволяют узлам сообщать маршрутизаторам о своей заинтересованности в получении пакетов на определённые многоадресные группы. Сообщения MLD имеют собственные типы в рамках ICMPv6:

Path MTU Discovery (PMTUD)

ICMPv6 является обязательным механизмом для определения максимального размера пакета, который может быть передан без фрагментации по всему пути. Если маршрутизатор не может передать пакет из-за превышения MTU, он отправляет сообщение Packet Too Big с указанием корректного MTU. Отправитель уменьшает размер пакета и повторяет попытку. В IPv6 фрагментация выполняется только на узле-отправителе, а не на промежуточных маршрутизаторах.

Формат сообщения ICMPv6

Каждое сообщение ICMPv6 состоит из заголовка и тела. Заголовок имеет фиксированную длину 4 байта:

Тело сообщения зависит от типа. Для сообщений об ошибках оно обычно содержит фрагмент исходного пакета, вызвавшего ошибку (до 1232 байт для IPv6). Для диагностических сообщений — идентификатор, номер последовательности и произвольные данные.

Особенности безопасности

ICMPv6, как и любой служебный протокол, может быть использован для атак. Наиболее известные угрозы:

Для защиты рекомендуется использовать механизмы Secure Neighbor Discovery (SeND, RFC 3971), IPsec, а также фильтрацию ICMPv6-трафика на межсетевых экранах. В корпоративных сетях часто ограничивают приём Router Advertisement только от доверенных маршрутизаторов.

Применение в современных сетях

ICMPv6 является обязательным компонентом любой реализации IPv6. Он используется:

Без ICMPv6 невозможна корректная работа IPv6-сетей: узлы не смогут определить MAC-адреса соседей, настроить адреса, обнаружить дубликаты или передать большие пакеты.

Ограничения и критика

Несмотря на широкую функциональность, ICMPv6 имеет ряд недостатков:

Тем не менее, ICMPv6 остаётся базовым протоколом IPv6 и не имеет альтернатив в рамках стека TCP/IPv6.

Источники

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →