Протоколы ICMP и IGMP

134

ICMP — Internet Control Message Protocol

ICMP — это протокол управления сообщениями в Интернете, используется IP-устройствами, чтобы информировать другие IP-устройства о действиях и ошибках в сети. Без TCP IP не является надежным протоколом: он не отправляет подтверждения, не проверяет данные на ошибки (только контрольную сумму заголовка) и не повторяет передачу.

Об ошибках можно информировать с помощью сообщений ICMP. Сообщения ICMP используются для отправки ответной реакции о состоянии сети. Например, маршрутизатор, не найдя подходящего элемента для сети в таблице маршрутизации, отправляет сообщение ICMP "недостижимый пункт назначения". Найдя лучший путь, маршрутизатор может послать сообщение ICMP "перенаправить".

ICMP не располагается поверх IP, как могло бы показаться, напротив, сообщения ICMP отправляются внутри заголовка IP. Следовательно, протокол ICMP должен быть реализован модулем IP стека сети. Эти поля сообщения ICMP ставятся в начале заголовка IP:

Длина Поле Описание
1 байт Тип В этом поле задается тип сообщения ICMP. Например, значение типа, равное 3, означает, что пункт назначения недостижим, 11 определяет, что время истекло, 12 — обнаружены некорректные параметры заголовка.
1 байт Код Код предоставляет дополнительную информацию о типе сообщения. Для типа "недостижимый пункт назначения" код указывает, что именно недостижимо: сеть (0), хост (1), протокол (2) или порт (3).
2 байта Контрольная сумма Контрольная сумма сообщения ICMP.
4 байта Зависит от типа В последних 4 байтах заголовка ICMP может предоставляться дополнительная информация, зависящая от типа сообщения.

Команда ping

Утилита ping командной строки Windows отправляет ICMP-сообщение "эхо" целевому устройству, указанному именем хоста или IP-адресом в команде ping. Если устройство достижимо, обратно отправляется сообщение "отклик на эхо".

Эта команда очень полезна, когда нужно проверить, можно ли достичь данного устройства, есть ли проблемы на пути к нему (команда PING -t продолжает посылать сообщения, пока не будет остановлена) и как быстро сообщение доходит до устройства.

Если вы не можете достичь какого-либо хоста с использованием команды ping, то это не означает, что его нельзя достичь с помощью других протоколов. ICMP-сообщения "эхо"могут блокироваться маршрутизаторами или брандмауэрами.

На следующем снимке экрана показан вывод, создаваемый командой ping для хоста с IP-адресом 212.183.100.193. По умолчанию ping посылает узлу назначения четыре ICMP-сообщения и ждет откликов. На снимке показано, что были отправлены 32 байта данных и время, при этом не было получено отклика, поэтому все 4 пакета были потеряны:

Проверка ping

IGMP — Internet Group Management Protocol

Как и ICMP, IGMP представляет расширение протокола IP и должен быть реализован модулем IP. IGMP используется приложениями групповой рассылки. При отправке широковещательного сообщения в локальной сети каждый узел этой сети анализирует сообщение вплоть до транспортного уровня, чтобы проверить, хочет ли какое-либо приложение получать сообщения от порта широковещательной передачи. Если ожидающие приложения отсутствуют, сообщение уничтожается и не передается выше транспортного уровня. Это означает, что каждому хосту нужно затратить несколько циклов центрального процессора (ЦП) независимо от того, интересует его широковещательное сообщение или нет.

При групповой рассылке этот момент учитывается, и сообщения отправляются не всем узлам локальной сети, а только группе узлов. Сетевая интерфейсная плата может определить, интересуется ли система данным сообщением, анализируя широковещательный МАС-адрес и не прибегая к помощи ЦП.

Заинтересованность в сообщениях групповой рассылки регистрируется отправкой запроса на членство в группе через IGMP-сообщение. Аналогично можно использовать IGMP, чтобы отказаться от членства.

Пройди тесты
Лучший чат для C# программистов