ICMP

Поделись знанием:
Перейти к: навигация, поиск
ICMP
Название:

Internet Control Message Protocol

Уровень (по модели OSI):

Сетевой

Семейство:

TCP/IP

Спецификация:

RFC 792

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





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

Протокол ICMP описал в RFC 792 от 1981 года Jon Postel (с дополнениями в RFC 950) и является стандартом Интернета (входит в стандарт STD 5 вместе с IP). Хотя формально ICMP использует 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-сообщения (тип 12) генерируются при нахождении ошибок в заголовке IP-пакета (за исключением самих ICMP-пакетов, дабы не привести к бесконечно растущему потоку ICMP-сообщений об ICMP-сообщениях).

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

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

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

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

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

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

Октет (байт) 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
[0—3] Тип Код Контрольная сумма
Данные (формат зависит от значений полей «Код» и «Тип»)
Типы пакетов ICMP
Тип Статус Код Сообщение Данные (длина, бит)
0 0 Эхо-ответ
Идентификатор (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 не используеся Зарезервировано
8 0 Эхо-запрос
Идентификатор (16) Номер последовательности (16)
Данные (переменная)
9 0 Объявление маршрутизатора
Количество адресов (8) Размер элемента (8) Срок действия (16)
Адрес[1] (32)
Предпочтительность[1] (32)
Адрес[N] (32)
Предпочтительность[N] (32)
10 0 Запрос маршрутизатора
Не используется (32)
11 Время жизни дейтаграммы истекло
Не используется (32)
Заголовок IP, Начало исходной дейтаграммы (64)
0 Время жизни пакета (TTL) истекло при транспортировке
1 Время жизни пакета истекло при сборке фрагментов
12 Неверный параметр (проблема с параметрами дейтаграммы: ошибка в IP-заголовке или отсутствует необходимая опция)
0 Указатель говорит об ошибке
Указатель (8) Не используется (24)
Заголовок IP, Начало исходной дейтаграммы (64)
1 Отсутствует требуемая опция
Не используется (32)
Заголовок IP, Начало исходной дейтаграммы (64)
2 Некорректная длина
13 0 Запрос метки времени
Идентификатор (16) Номер последовательности (16)
Начальное время (32)
Время приёма (32)
Время отправки (32)
14 0 Ответ с меткой времени
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)
40 Photuris  
0 Зарезервировано
1 Неизвестный индекс параметров безопасности
2 Параметры безопасности верны, но произошла ошибка аутентификации
3 Параметры безопасности верны, но произошёл сбой при расшифровке
4 Требуется проверка подлинности
5 Требуется авторизация
41 экспериментальный
42—252 Зарезервировано
253-254 экспериментальный Зарезервировано для экспериментов по RFC 3692
255 зарезервирован Зарезервировано

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

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

См. также

Напишите отзыв о статье "ICMP"

Примечания

  1. [technet.microsoft.com/ru-ru/library/cc758065(WS.10).aspx Протокол ICMP]

Ссылки

  • RFC 792(ICMPv4)
  • RFC 950 Address Mask
  • RFC 1122 (дополнительные типы ICMP-сообщений для существующих кодов)
  • RFC 1393 Traceroute
  • RFC 1256 Router Advertisement Solicitation
  • RFC 1475 Conversion Failed
  • RFC 1812 (дополнительные типы ICMP-сообщений для существующих кодов)
  • RFC 4443 (ICMPv6)
  • RFC 2463 (ICMPv6)
  • RFC 1885 (ICMPv6)
  • RFC 4884 Расширение сообщений и обратная совместимость
  • [bugtraq.ru/library/books/attack/chapter04/04.html Навязывание хосту ложного маршрута с использованием протокола ICMP]
  • [tools.ietf.org/id/draft-gont-tcpm-icmp-attacks-01.txt ICMP-атаки] с 01 по 05 документ

Отрывок, характеризующий ICMP

– Мамаша, ведь вы сами гадали… – сказала дочь.
– А как это в амбаре гадают? – спросила Соня.
– Да вот хоть бы теперь, пойдут к амбару, да и слушают. Что услышите: заколачивает, стучит – дурно, а пересыпает хлеб – это к добру; а то бывает…
– Мама расскажите, что с вами было в амбаре?
Пелагея Даниловна улыбнулась.
– Да что, я уж забыла… – сказала она. – Ведь вы никто не пойдете?
– Нет, я пойду; Пепагея Даниловна, пустите меня, я пойду, – сказала Соня.
– Ну что ж, коли не боишься.
– Луиза Ивановна, можно мне? – спросила Соня.
Играли ли в колечко, в веревочку или рублик, разговаривали ли, как теперь, Николай не отходил от Сони и совсем новыми глазами смотрел на нее. Ему казалось, что он нынче только в первый раз, благодаря этим пробочным усам, вполне узнал ее. Соня действительно этот вечер была весела, оживлена и хороша, какой никогда еще не видал ее Николай.
«Так вот она какая, а я то дурак!» думал он, глядя на ее блестящие глаза и счастливую, восторженную, из под усов делающую ямочки на щеках, улыбку, которой он не видал прежде.
– Я ничего не боюсь, – сказала Соня. – Можно сейчас? – Она встала. Соне рассказали, где амбар, как ей молча стоять и слушать, и подали ей шубку. Она накинула ее себе на голову и взглянула на Николая.
«Что за прелесть эта девочка!» подумал он. «И об чем я думал до сих пор!»
Соня вышла в коридор, чтобы итти в амбар. Николай поспешно пошел на парадное крыльцо, говоря, что ему жарко. Действительно в доме было душно от столпившегося народа.
На дворе был тот же неподвижный холод, тот же месяц, только было еще светлее. Свет был так силен и звезд на снеге было так много, что на небо не хотелось смотреть, и настоящих звезд было незаметно. На небе было черно и скучно, на земле было весело.
«Дурак я, дурак! Чего ждал до сих пор?» подумал Николай и, сбежав на крыльцо, он обошел угол дома по той тропинке, которая вела к заднему крыльцу. Он знал, что здесь пойдет Соня. На половине дороги стояли сложенные сажени дров, на них был снег, от них падала тень; через них и с боку их, переплетаясь, падали тени старых голых лип на снег и дорожку. Дорожка вела к амбару. Рубленная стена амбара и крыша, покрытая снегом, как высеченная из какого то драгоценного камня, блестели в месячном свете. В саду треснуло дерево, и опять всё совершенно затихло. Грудь, казалось, дышала не воздухом, а какой то вечно молодой силой и радостью.
С девичьего крыльца застучали ноги по ступенькам, скрыпнуло звонко на последней, на которую был нанесен снег, и голос старой девушки сказал:
– Прямо, прямо, вот по дорожке, барышня. Только не оглядываться.
– Я не боюсь, – отвечал голос Сони, и по дорожке, по направлению к Николаю, завизжали, засвистели в тоненьких башмачках ножки Сони.
Соня шла закутавшись в шубку. Она была уже в двух шагах, когда увидала его; она увидала его тоже не таким, каким она знала и какого всегда немножко боялась. Он был в женском платье со спутанными волосами и с счастливой и новой для Сони улыбкой. Соня быстро подбежала к нему.
«Совсем другая, и всё та же», думал Николай, глядя на ее лицо, всё освещенное лунным светом. Он продел руки под шубку, прикрывавшую ее голову, обнял, прижал к себе и поцеловал в губы, над которыми были усы и от которых пахло жженой пробкой. Соня в самую середину губ поцеловала его и, выпростав маленькие руки, с обеих сторон взяла его за щеки.
– Соня!… Nicolas!… – только сказали они. Они подбежали к амбару и вернулись назад каждый с своего крыльца.


Когда все поехали назад от Пелагеи Даниловны, Наташа, всегда всё видевшая и замечавшая, устроила так размещение, что Луиза Ивановна и она сели в сани с Диммлером, а Соня села с Николаем и девушками.
Николай, уже не перегоняясь, ровно ехал в обратный путь, и всё вглядываясь в этом странном, лунном свете в Соню, отыскивал при этом всё переменяющем свете, из под бровей и усов свою ту прежнюю и теперешнюю Соню, с которой он решил уже никогда не разлучаться. Он вглядывался, и когда узнавал всё ту же и другую и вспоминал, слышав этот запах пробки, смешанный с чувством поцелуя, он полной грудью вдыхал в себя морозный воздух и, глядя на уходящую землю и блестящее небо, он чувствовал себя опять в волшебном царстве.
– Соня, тебе хорошо? – изредка спрашивал он.
– Да, – отвечала Соня. – А тебе ?
На середине дороги Николай дал подержать лошадей кучеру, на минутку подбежал к саням Наташи и стал на отвод.
– Наташа, – сказал он ей шопотом по французски, – знаешь, я решился насчет Сони.
– Ты ей сказал? – спросила Наташа, вся вдруг просияв от радости.
– Ах, какая ты странная с этими усами и бровями, Наташа! Ты рада?
– Я так рада, так рада! Я уж сердилась на тебя. Я тебе не говорила, но ты дурно с ней поступал. Это такое сердце, Nicolas. Как я рада! Я бываю гадкая, но мне совестно было быть одной счастливой без Сони, – продолжала Наташа. – Теперь я так рада, ну, беги к ней.
– Нет, постой, ах какая ты смешная! – сказал Николай, всё всматриваясь в нее, и в сестре тоже находя что то новое, необыкновенное и обворожительно нежное, чего он прежде не видал в ней. – Наташа, что то волшебное. А?
– Да, – отвечала она, – ты прекрасно сделал.
«Если б я прежде видел ее такою, какою она теперь, – думал Николай, – я бы давно спросил, что сделать и сделал бы всё, что бы она ни велела, и всё бы было хорошо».
– Так ты рада, и я хорошо сделал?
– Ах, так хорошо! Я недавно с мамашей поссорилась за это. Мама сказала, что она тебя ловит. Как это можно говорить? Я с мама чуть не побранилась. И никому никогда не позволю ничего дурного про нее сказать и подумать, потому что в ней одно хорошее.
– Так хорошо? – сказал Николай, еще раз высматривая выражение лица сестры, чтобы узнать, правда ли это, и, скрыпя сапогами, он соскочил с отвода и побежал к своим саням. Всё тот же счастливый, улыбающийся черкес, с усиками и блестящими глазами, смотревший из под собольего капора, сидел там, и этот черкес был Соня, и эта Соня была наверное его будущая, счастливая и любящая жена.
Приехав домой и рассказав матери о том, как они провели время у Мелюковых, барышни ушли к себе. Раздевшись, но не стирая пробочных усов, они долго сидели, разговаривая о своем счастьи. Они говорили о том, как они будут жить замужем, как их мужья будут дружны и как они будут счастливы.
На Наташином столе стояли еще с вечера приготовленные Дуняшей зеркала. – Только когда всё это будет? Я боюсь, что никогда… Это было бы слишком хорошо! – сказала Наташа вставая и подходя к зеркалам.
– Садись, Наташа, может быть ты увидишь его, – сказала Соня. Наташа зажгла свечи и села. – Какого то с усами вижу, – сказала Наташа, видевшая свое лицо.
– Не надо смеяться, барышня, – сказала Дуняша.
Наташа нашла с помощью Сони и горничной положение зеркалу; лицо ее приняло серьезное выражение, и она замолкла. Долго она сидела, глядя на ряд уходящих свечей в зеркалах, предполагая (соображаясь с слышанными рассказами) то, что она увидит гроб, то, что увидит его, князя Андрея, в этом последнем, сливающемся, смутном квадрате. Но как ни готова она была принять малейшее пятно за образ человека или гроба, она ничего не видала. Она часто стала мигать и отошла от зеркала.
– Отчего другие видят, а я ничего не вижу? – сказала она. – Ну садись ты, Соня; нынче непременно тебе надо, – сказала она. – Только за меня… Мне так страшно нынче!
Соня села за зеркало, устроила положение, и стала смотреть.
– Вот Софья Александровна непременно увидят, – шопотом сказала Дуняша; – а вы всё смеетесь.
Соня слышала эти слова, и слышала, как Наташа шопотом сказала:
– И я знаю, что она увидит; она и прошлого года видела.
Минуты три все молчали. «Непременно!» прошептала Наташа и не докончила… Вдруг Соня отсторонила то зеркало, которое она держала, и закрыла глаза рукой.
– Ах, Наташа! – сказала она.
– Видела? Видела? Что видела? – вскрикнула Наташа, поддерживая зеркало.
Соня ничего не видала, она только что хотела замигать глазами и встать, когда услыхала голос Наташи, сказавшей «непременно»… Ей не хотелось обмануть ни Дуняшу, ни Наташу, и тяжело было сидеть. Она сама не знала, как и вследствие чего у нее вырвался крик, когда она закрыла глаза рукою.
– Его видела? – спросила Наташа, хватая ее за руку.
– Да. Постой… я… видела его, – невольно сказала Соня, еще не зная, кого разумела Наташа под словом его: его – Николая или его – Андрея.
«Но отчего же мне не сказать, что я видела? Ведь видят же другие! И кто же может уличить меня в том, что я видела или не видала?» мелькнуло в голове Сони.
– Да, я его видела, – сказала она.
– Как же? Как же? Стоит или лежит?
– Нет, я видела… То ничего не было, вдруг вижу, что он лежит.
– Андрей лежит? Он болен? – испуганно остановившимися глазами глядя на подругу, спрашивала Наташа.
– Нет, напротив, – напротив, веселое лицо, и он обернулся ко мне, – и в ту минуту как она говорила, ей самой казалось, что она видела то, что говорила.
– Ну а потом, Соня?…
– Тут я не рассмотрела, что то синее и красное…
– Соня! когда он вернется? Когда я увижу его! Боже мой, как я боюсь за него и за себя, и за всё мне страшно… – заговорила Наташа, и не отвечая ни слова на утешения Сони, легла в постель и долго после того, как потушили свечу, с открытыми глазами, неподвижно лежала на постели и смотрела на морозный, лунный свет сквозь замерзшие окна.


Вскоре после святок Николай объявил матери о своей любви к Соне и о твердом решении жениться на ней. Графиня, давно замечавшая то, что происходило между Соней и Николаем, и ожидавшая этого объяснения, молча выслушала его слова и сказала сыну, что он может жениться на ком хочет; но что ни она, ни отец не дадут ему благословения на такой брак. В первый раз Николай почувствовал, что мать недовольна им, что несмотря на всю свою любовь к нему, она не уступит ему. Она, холодно и не глядя на сына, послала за мужем; и, когда он пришел, графиня хотела коротко и холодно в присутствии Николая сообщить ему в чем дело, но не выдержала: заплакала слезами досады и вышла из комнаты. Старый граф стал нерешительно усовещивать Николая и просить его отказаться от своего намерения. Николай отвечал, что он не может изменить своему слову, и отец, вздохнув и очевидно смущенный, весьма скоро перервал свою речь и пошел к графине. При всех столкновениях с сыном, графа не оставляло сознание своей виноватости перед ним за расстройство дел, и потому он не мог сердиться на сына за отказ жениться на богатой невесте и за выбор бесприданной Сони, – он только при этом случае живее вспоминал то, что, ежели бы дела не были расстроены, нельзя было для Николая желать лучшей жены, чем Соня; и что виновен в расстройстве дел только один он с своим Митенькой и с своими непреодолимыми привычками.