ICMP

ICMP (англ. Internet Control Message Protocol — протокол межсетевых управляющих сообщений[1]) — сетевой протокол, входящий в стек протоколов TCP/IP. В основном ICMP используется для передачи сообщений об ошибках и других исключительных ситуаций, возникших при передаче данных, например, запрашиваемая услуга недоступна или хост или маршрутизатор не отвечают. Также на ICMP возлагаются некоторые сервисные функции (services).

ICMP
НазваниеInternet Control Message Protocol
Уровень (по модели OSI)Сетевой
СемействоTCP/IP
Порт/ID1
СпецификацияRFC 792
Логотип Викисклада Медиафайлы на Викискладе

Технические подробности

Протокол ICMP описан в RFC 792 от 1981 года Jon Postel (с дополнениями в RFC 950). ICMP является стандартом Интернета (входит в стандарт STD 5 вместе с IP). Хотя формально протокол использует IP (ICMP-пакеты инкапсулируются в IP пакеты), он является неотъемлемой частью IP и обязателен при реализации стека TCP/IP. Текущая версия ICMP для IPv4 называется ICMPv4. В IPv6 существует аналогичный протокол ICMPv6.

ICMP-сообщение строится из IP-пакетов, сгенерировавших ICMP-ответ. Протокол IP инкапсулирует соответствующее ICMP-сообщение с новым заголовком IP (чтобы отправить ICMP-сообщение обратно отправителю) и передает полученные пакеты дальше.

Например, каждая машина, которая перенаправляет IP-пакеты (например маршрутизатор), уменьшает значение поля Time to live (TTL) заголовка IP-пакета на единицу; если TTL достигает 0, на источник пакета отправляется ICMP-сообщение о превышении TTL.

ICMP основан на протоколе IP. Каждое ICMP-сообщение инкапсулируется непосредственно в пределах одного IP-пакета, и, таким образом, как и UDP и в отличие от TCP, ICMP является т. н. «ненадежным» (не контролирующим доставку и её правильность). В отличие от UDP, где реализация надёжности возложена на ПО прикладного уровня, ICMP (в силу специфики применения) обычно не нуждается в реализации надёжной доставки. Его цели отличны от целей транспортных протоколов, таких как TCP и UDP: он, как правило, не используется для передачи и приёма данных между конечными системами. ICMP не используется непосредственно в приложениях пользователей сети (исключение составляют инструменты Ping и Traceroute). Тот же Ping, например, служит обычно как раз для проверки потерь IP-пакетов на маршруте.

Использование ICMP-сообщений

ICMP-сообщения (тип 1,2) генерируются при нахождении ошибок в заголовке IP-пакета (за исключением самих ICMP-пакетов, дабы не привести к бесконечно растущему потоку ICMP-сообщений об ICMP-сообщениях).

ICMP-сообщения (тип 3) генерируются маршрутизатором при отсутствии маршрута к адресату.

Утилита Ping, служащая для проверки возможности доставки IP-пакетов, использует ICMP-сообщения с типом 8 (эхо-запрос) и 0 (эхо-ответ).

Утилита Traceroute, отображающая путь следования IP-пакетов, использует ICMP-сообщения с типом 11.

ICMP-сообщения с типом 5 используются маршрутизаторами для обновления записей в таблице маршрутизации отправителя.

ICMP-сообщения с типом 4 используются получателем (или маршрутизатором) для управления скоростью отправки сообщений отправителем.

Формат пакета ICMP

Октет (байт)012345678910111213141516171819202122232425262728293031
[0—3]ТипКодКонтрольная сумма
Данные (формат зависит от значений полей «Код» и «Тип»)
Типы пакетов ICMP
ТипСтатусКодСообщениеДанные (длина, бит)
00Эхо-ответ
Идентификатор (16)Номер последовательности (16)
Данные (переменная)
1, 2не используетсяЗарезервировано
3Адресат недоступен
Не используется (32)
Заголовок IP, Начало исходной дейтаграммы (64)
0Сеть недостижима
1Узел недостижим
2Протокол недостижим
3Порт недостижим
4Необходима фрагментация, но установлен флаг её запрета (DF)
5Неверный маршрут от источника
6Сеть назначения неизвестна
7Узел назначения неизвестен
8Узел источник изолирован
9Сеть административно запрещена
10Узел административно запрещён
11Сеть недоступна для ToS
12Узел недоступен для ToS
13Коммуникации административно запрещены
14Нарушение порядка предпочтения узлов
15Активно отсечение порядка предпочтения
4устарел0Сдерживание источника (отключение источника при переполнении очереди)
5Перенаправление
Адрес маршрутизатора (32)
Заголовок IP, Начало исходной дейтаграммы (64)
0Перенаправление пакетов в сеть
1Перенаправление пакетов к узлу
2Перенаправление для каждого типа обслуживания (ToS)
3Перенаправление пакета к узлу для каждого типа обслуживания
6устарел0Альтернативный адрес узла
7не используетсяЗарезервировано
80Эхо-запрос
Идентификатор (16)Номер последовательности (16)
Данные (переменная)
90Объявление маршрутизатора
Количество адресов (8)Размер элемента (8)Срок действия (16)
Адрес[1] (32)
Предпочтительность[1] (32)
Адрес[N] (32)
Предпочтительность[N] (32)
100Запрос маршрутизатора
Не используется (32)
11Время жизни дейтаграммы истекло
Не используется (32)
Заголовок IP, Начало исходной дейтаграммы (64)
0Время жизни пакета (TTL) истекло при транспортировке
1Время жизни пакета истекло при сборке фрагментов
12Неверный параметр (проблема с параметрами дейтаграммы: ошибка в IP-заголовке или отсутствует необходимая опция)
0Указатель говорит об ошибке
Указатель (8)Не используется (24)
Заголовок IP, Начало исходной дейтаграммы (64)
1Отсутствует требуемая опция
Не используется (32)
Заголовок IP, Начало исходной дейтаграммы (64)
2Некорректная длина
130Запрос метки времени
Идентификатор (16)Номер последовательности (16)
Начальное время (32)
Время приёма (32)
Время отправки (32)
140Ответ с меткой времени
15устарел0Информационный запрос
Идентификатор (16)Номер последовательности (16)
16устарел0Информационный ответ
17устарел0Запрос адресной маски
Идентификатор (16)Номер последовательности (16)
Маска (32)
18устарел0Отклик на запрос адресной маски
19зарезервированЗарезервировано (для обеспечения безопасности)
20—29зарезервированЗарезервировано (для экспериментов на устойчивость к ошибкам)
30устарелТрассировка маршрута
Идентификатор (16)Не используется (16)
Количество хопов исходящего пакета (16)Количество хопов возвращающегося пакета (16)
Скорость линии связи (32)
MTU линии связи (32)
0Исходящий пакет успешно отправлен
1Путь для исходящего пакета не найден, пакет уничтожен
31устарелОшибка преобразования датаграммы
Указатель (32)
Заголовок IP и транспортного протокола исходной дейтаграммы
0Неизвестная или неуказанная ошибка
1Невозможно конвертировать опцию
2Неизвестная обязательная опция
3Неподдерживаемая обязательная опция
4Неподдерживаемый транспортный протокол
5Превышена полная длина
6Превышена длина заголовка IP
7Номер транспортного протокола больше 255
8Номер порта вне допустимого диапазона
9Превышена длина заголовка транспортного протокола
10Переход через границу 32 бит и установлен бит ACK
11Неизвестная обязательная опция транспортного протокола
32устарелПеренаправление для мобильного узла
33устарелIPv6 Where-Are-You (где вы находитесь)
34устарелIPv6 I-Am-Here (я здесь)
35устарелЗапрос перенаправления для мобильного узла
36устарелОтклик на запрос перенаправления для мобильного узла
37устарелЗапрос доменного имени
38устарелОтвет на запрос доменного имени
39устарелОбнаружение алгоритма безопасности SKIP (SKIP algorithm discovery ICMP message)
40Photuris 
0Зарезервировано
1Неизвестный индекс параметров безопасности
2Параметры безопасности верны, но произошла ошибка аутентификации
3Параметры безопасности верны, но произошёл сбой при расшифровке
4Требуется проверка подлинности
5Требуется авторизация
41экспериментальный
42—252Зарезервировано
253-254экспериментальныйЗарезервировано для экспериментов по RFC 3692
255зарезервированЗарезервировано

Правила генерации ICMP-пакетов

  1. При потере ICMP-пакета никогда не генерируется новый.
  2. ICMP-пакеты никогда не генерируются в ответ на IP-пакеты с широковещательным или групповым адресом, чтобы не вызывать перегрузку в сети (так называемый широковещательный шторм).
  3. При повреждении фрагментированного IP-пакета ICMP-сообщение отправляется сразу после получения первого повреждённого фрагмента, поскольку отправитель всё равно повторит передачу всего IP-пакета целиком.

См. также

Примечания

Ссылки

Правила чтения таблиц, описывающих структуру заголовков сетевых протоколов


🔥 Top keywords: Заглавная страницаЯндексДуров, Павел ВалерьевичСлужебная:ПоискYouTubeЛунин, Андрей АлексеевичПодносова, Ирина ЛеонидовнаВКонтактеФоллаут (телесериал)WildberriesTelegramРеал Мадрид (футбольный клуб)Богуславская, Зоя БорисовнаДуров, Валерий СемёновичРоссияXVideosСписок умерших в 2024 годуЧикатило, Андрей РомановичFallout (серия игр)Список игроков НХЛ, забросивших 500 и более шайбПопков, Михаил ВикторовичOzon17 апреляИльин, Иван АлександровичMail.ruСёгун (мини-сериал, 2024)Слово пацана. Кровь на асфальтеПутин, Владимир ВладимировичЛига чемпионов УЕФАГагарина, Елена ЮрьевнаБишимбаев, Куандык ВалихановичЛига чемпионов УЕФА 2023/2024Турнир претендентов по шахматам 2024Манчестер СитиMGM-140 ATACMSРоссийский миротворческий контингент в Нагорном КарабахеЗагоризонтный радиолокаторПинапВодительское удостоверение в Российской Федерации