ICMP
Название: |
Internet Control Message Protocol |
---|---|
Уровень (по модели OSI): |
Сетевой |
Семейство: | |
Спецификация: |
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] | Тип | Код | Контрольная сумма | |||||||||||||||||||||||||||||
… | Данные (формат зависит от значений полей «Код» и «Тип») |
Тип | Статус | Код | Сообщение | Данные (длина, бит) | ||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | 0 | Эхо-ответ |
| |||||||||||||||||||
1, 2 | не используется | Зарезервировано | ||||||||||||||||||||
3 | Адресат недоступен |
| ||||||||||||||||||||
0 | Сеть недостижима | |||||||||||||||||||||
1 | Узел недостижим | |||||||||||||||||||||
2 | Протокол недостижим | |||||||||||||||||||||
3 | Порт недостижим | |||||||||||||||||||||
4 | Необходима фрагментация, но установлен флаг её запрета (DF) | |||||||||||||||||||||
5 | Неверный маршрут от источника | |||||||||||||||||||||
6 | Сеть назначения неизвестна | |||||||||||||||||||||
7 | Узел назначения неизвестен | |||||||||||||||||||||
8 | Узел источник изолирован | |||||||||||||||||||||
9 | Сеть административно запрещена | |||||||||||||||||||||
10 | Узел административно запрещён | |||||||||||||||||||||
11 | Сеть недоступна для ToS | |||||||||||||||||||||
12 | Узел недоступен для ToS | |||||||||||||||||||||
13 | Коммуникации административно запрещены | |||||||||||||||||||||
14 | Нарушение порядка предпочтения узлов | |||||||||||||||||||||
15 | Активно отсечение порядка предпочтения | |||||||||||||||||||||
4 | устарел | 0 | Сдерживание источника (отключение источника при переполнении очереди) | |||||||||||||||||||
5 | Перенаправление |
| ||||||||||||||||||||
0 | Перенаправление пакетов в сеть | |||||||||||||||||||||
1 | Перенаправление пакетов к узлу | |||||||||||||||||||||
2 | Перенаправление для каждого типа обслуживания (ToS) | |||||||||||||||||||||
3 | Перенаправление пакета к узлу для каждого типа обслуживания | |||||||||||||||||||||
6 | устарел | 0 | Альтернативный адрес узла | |||||||||||||||||||
7 | не используеся | Зарезервировано | ||||||||||||||||||||
8 | 0 | Эхо-запрос |
| |||||||||||||||||||
9 | 0 | Объявление маршрутизатора |
| |||||||||||||||||||
10 | 0 | Запрос маршрутизатора |
| |||||||||||||||||||
11 | Время жизни дейтаграммы истекло |
| ||||||||||||||||||||
0 | Время жизни пакета (TTL) истекло при транспортировке | |||||||||||||||||||||
1 | Время жизни пакета истекло при сборке фрагментов | |||||||||||||||||||||
12 | Неверный параметр (проблема с параметрами дейтаграммы: ошибка в IP-заголовке или отсутствует необходимая опция) | |||||||||||||||||||||
0 | Указатель говорит об ошибке |
| ||||||||||||||||||||
1 | Отсутствует требуемая опция |
| ||||||||||||||||||||
2 | Некорректная длина | |||||||||||||||||||||
13 | 0 | Запрос метки времени |
| |||||||||||||||||||
14 | 0 | Ответ с меткой времени | ||||||||||||||||||||
15 | устарел | 0 | Информационный запрос |
| ||||||||||||||||||
16 | устарел | 0 | Информационный ответ | |||||||||||||||||||
17 | устарел | 0 | Запрос адресной маски |
| ||||||||||||||||||
18 | устарел | 0 | Отклик на запрос адресной маски | |||||||||||||||||||
19 | зарезервирован | Зарезервировано (для обеспечения безопасности) | ||||||||||||||||||||
20—29 | зарезервирован | Зарезервировано (для экспериментов на устойчивость к ошибкам) | ||||||||||||||||||||
30 | устарел | Трассировка маршрута |
| |||||||||||||||||||
0 | Исходящий пакет успешно отправлен | |||||||||||||||||||||
1 | Путь для исходящего пакета не найден, пакет уничтожен | |||||||||||||||||||||
31 | устарел | Ошибка преобразования датаграммы |
| |||||||||||||||||||
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-пакетов
- При потере ICMP-пакета никогда не генерируется новый.
- ICMP-пакеты никогда не генерируются в ответ на IP-пакеты с широковещательным или групповым адресом, чтобы не вызывать перегрузку в сети (так называемый «широковещательный шторм»).
- При повреждении фрагментированного IP-пакета ICMP-сообщение отправляется только после получения первого повреждённого фрагмента, поскольку отправитель всё равно повторит передачу всего IP-пакета целиком.
См. также
Напишите отзыв о статье "ICMP"
Примечания
- ↑ [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. Как я рада! Я бываю гадкая, но мне совестно было быть одной счастливой без Сони, – продолжала Наташа. – Теперь я так рада, ну, беги к ней.
– Нет, постой, ах какая ты смешная! – сказал Николай, всё всматриваясь в нее, и в сестре тоже находя что то новое, необыкновенное и обворожительно нежное, чего он прежде не видал в ней. – Наташа, что то волшебное. А?
– Да, – отвечала она, – ты прекрасно сделал.
«Если б я прежде видел ее такою, какою она теперь, – думал Николай, – я бы давно спросил, что сделать и сделал бы всё, что бы она ни велела, и всё бы было хорошо».
– Так ты рада, и я хорошо сделал?
– Ах, так хорошо! Я недавно с мамашей поссорилась за это. Мама сказала, что она тебя ловит. Как это можно говорить? Я с мама чуть не побранилась. И никому никогда не позволю ничего дурного про нее сказать и подумать, потому что в ней одно хорошее.
– Так хорошо? – сказал Николай, еще раз высматривая выражение лица сестры, чтобы узнать, правда ли это, и, скрыпя сапогами, он соскочил с отвода и побежал к своим саням. Всё тот же счастливый, улыбающийся черкес, с усиками и блестящими глазами, смотревший из под собольего капора, сидел там, и этот черкес был Соня, и эта Соня была наверное его будущая, счастливая и любящая жена.
Приехав домой и рассказав матери о том, как они провели время у Мелюковых, барышни ушли к себе. Раздевшись, но не стирая пробочных усов, они долго сидели, разговаривая о своем счастьи. Они говорили о том, как они будут жить замужем, как их мужья будут дружны и как они будут счастливы.
На Наташином столе стояли еще с вечера приготовленные Дуняшей зеркала. – Только когда всё это будет? Я боюсь, что никогда… Это было бы слишком хорошо! – сказала Наташа вставая и подходя к зеркалам.
– Садись, Наташа, может быть ты увидишь его, – сказала Соня. Наташа зажгла свечи и села. – Какого то с усами вижу, – сказала Наташа, видевшая свое лицо.
– Не надо смеяться, барышня, – сказала Дуняша.
Наташа нашла с помощью Сони и горничной положение зеркалу; лицо ее приняло серьезное выражение, и она замолкла. Долго она сидела, глядя на ряд уходящих свечей в зеркалах, предполагая (соображаясь с слышанными рассказами) то, что она увидит гроб, то, что увидит его, князя Андрея, в этом последнем, сливающемся, смутном квадрате. Но как ни готова она была принять малейшее пятно за образ человека или гроба, она ничего не видала. Она часто стала мигать и отошла от зеркала.
– Отчего другие видят, а я ничего не вижу? – сказала она. – Ну садись ты, Соня; нынче непременно тебе надо, – сказала она. – Только за меня… Мне так страшно нынче!
Соня села за зеркало, устроила положение, и стала смотреть.
– Вот Софья Александровна непременно увидят, – шопотом сказала Дуняша; – а вы всё смеетесь.
Соня слышала эти слова, и слышала, как Наташа шопотом сказала:
– И я знаю, что она увидит; она и прошлого года видела.
Минуты три все молчали. «Непременно!» прошептала Наташа и не докончила… Вдруг Соня отсторонила то зеркало, которое она держала, и закрыла глаза рукой.
– Ах, Наташа! – сказала она.
– Видела? Видела? Что видела? – вскрикнула Наташа, поддерживая зеркало.
Соня ничего не видала, она только что хотела замигать глазами и встать, когда услыхала голос Наташи, сказавшей «непременно»… Ей не хотелось обмануть ни Дуняшу, ни Наташу, и тяжело было сидеть. Она сама не знала, как и вследствие чего у нее вырвался крик, когда она закрыла глаза рукою.
– Его видела? – спросила Наташа, хватая ее за руку.
– Да. Постой… я… видела его, – невольно сказала Соня, еще не зная, кого разумела Наташа под словом его: его – Николая или его – Андрея.
«Но отчего же мне не сказать, что я видела? Ведь видят же другие! И кто же может уличить меня в том, что я видела или не видала?» мелькнуло в голове Сони.
– Да, я его видела, – сказала она.
– Как же? Как же? Стоит или лежит?
– Нет, я видела… То ничего не было, вдруг вижу, что он лежит.
– Андрей лежит? Он болен? – испуганно остановившимися глазами глядя на подругу, спрашивала Наташа.
– Нет, напротив, – напротив, веселое лицо, и он обернулся ко мне, – и в ту минуту как она говорила, ей самой казалось, что она видела то, что говорила.
– Ну а потом, Соня?…
– Тут я не рассмотрела, что то синее и красное…
– Соня! когда он вернется? Когда я увижу его! Боже мой, как я боюсь за него и за себя, и за всё мне страшно… – заговорила Наташа, и не отвечая ни слова на утешения Сони, легла в постель и долго после того, как потушили свечу, с открытыми глазами, неподвижно лежала на постели и смотрела на морозный, лунный свет сквозь замерзшие окна.
Вскоре после святок Николай объявил матери о своей любви к Соне и о твердом решении жениться на ней. Графиня, давно замечавшая то, что происходило между Соней и Николаем, и ожидавшая этого объяснения, молча выслушала его слова и сказала сыну, что он может жениться на ком хочет; но что ни она, ни отец не дадут ему благословения на такой брак. В первый раз Николай почувствовал, что мать недовольна им, что несмотря на всю свою любовь к нему, она не уступит ему. Она, холодно и не глядя на сына, послала за мужем; и, когда он пришел, графиня хотела коротко и холодно в присутствии Николая сообщить ему в чем дело, но не выдержала: заплакала слезами досады и вышла из комнаты. Старый граф стал нерешительно усовещивать Николая и просить его отказаться от своего намерения. Николай отвечал, что он не может изменить своему слову, и отец, вздохнув и очевидно смущенный, весьма скоро перервал свою речь и пошел к графине. При всех столкновениях с сыном, графа не оставляло сознание своей виноватости перед ним за расстройство дел, и потому он не мог сердиться на сына за отказ жениться на богатой невесте и за выбор бесприданной Сони, – он только при этом случае живее вспоминал то, что, ежели бы дела не были расстроены, нельзя было для Николая желать лучшей жены, чем Соня; и что виновен в расстройстве дел только один он с своим Митенькой и с своими непреодолимыми привычками.