stringtranslate.com

Протокол управляющих сообщений Интернета

Протокол управляющих сообщений Интернета ( ICMP ) является вспомогательным протоколом в наборе протоколов Интернета . Он используется сетевыми устройствами , включая маршрутизаторы , для отправки сообщений об ошибках и оперативной информации, указывающей успех или неудачу при обмене данными с другим IP-адресом , например, ошибка указывается, когда запрошенная услуга недоступна или что хост или маршрутизатор не могут быть достигнуто. [2] ICMP отличается от транспортных протоколов , таких как TCP и UDP, тем, что он обычно не используется для обмена данными между системами и не используется регулярно сетевыми приложениями конечных пользователей (за исключением некоторых диагностических инструментов, таких как ping и Traceroute ). .

ICMP для IPv4 определен в RFC 792. С IPv6 используется  отдельный ICMPv6 , определенный в RFC 4443 .

Технические детали

ICMP является частью набора протоколов Интернета, определенного в RFC 792. Сообщения ICMP обычно используются в целях диагностики или управления или генерируются в ответ на ошибки в операциях IP (как указано в RFC 1122). Ошибки ICMP направляются на исходный IP-адрес исходного пакета. [2]

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

Многие широко используемые сетевые утилиты основаны на сообщениях ICMP. Команда трассировки может быть реализована путем передачи IP-дейтаграмм со специально установленными полями заголовка IP TTL и поиска превышения времени ICMP в сообщениях о транзите и недостижимости пункта назначения, генерируемых в ответ. Соответствующая утилита ping реализована с использованием эхо-запроса ICMP и эхо-ответов .

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

ICMP — протокол сетевого уровня ; это делает его протоколом уровня 3 в семиуровневой модели OSI . Основанный на четырехуровневой модели TCP/IP, ICMP представляет собой протокол интернет-уровня , что делает его протоколом уровня 2 в четырехуровневой модели Интернет-стандарта RFC 1122 TCP/IP или протоколом уровня 3 в современной пятиуровневой модели. Определения протоколов TCP/IP (Козерок, Комер, Таненбаум, Форузан, Курозе, Столлингс). [ нужна цитата ]

С пакетами ICMP не связан номер порта TCP или UDP, поскольку эти номера связаны с транспортным уровнем выше. [3]

Структура датаграммы

Пакет ICMP инкапсулируется в пакет IPv4. [2] Пакет состоит из разделов заголовка и данных.

Заголовок

Заголовок ICMP начинается после заголовка IPv4 и идентифицируется номером протокола 1 . [4] Все пакеты ICMP имеют восьмибайтовый заголовок и раздел данных переменного размера. Первые четыре байта заголовка имеют фиксированный формат, а последние четыре байта зависят от типа и кода ICMP-пакета. [2]

Тип
Тип ICMP, см. § Управляющие сообщения.
Код
Подтип ICMP, см. § Управляющие сообщения.
Контрольная сумма
Контрольная сумма Интернета (RFC 1071) для проверки ошибок, рассчитанная на основе заголовка ICMP и данных со значением 0, подставленным в это поле.
Остальная часть заголовка
Четырехбайтовое поле, содержимое которого зависит от типа и кода ICMP.

Данные

Сообщения об ошибках ICMP содержат раздел данных, включающий копию всего заголовка IPv4, а также по крайней мере первые восемь байтов данных из пакета IPv4, вызвавшего сообщение об ошибке. Длина сообщений об ошибках ICMP не должна превышать 576 байт. [5] Эти данные используются хостом для сопоставления сообщения соответствующему процессу. Если протокол более высокого уровня использует номера портов, предполагается, что они находятся в первых восьми байтах данных исходной дейтаграммы. [6]

Был использован переменный размер раздела пакетных данных ICMP . В « Пинге смерти » большие или фрагментированные пакеты ICMP используются для атак типа «отказ в обслуживании» . Данные ICMP также можно использовать для создания скрытых каналов связи. Эти каналы известны как туннели ICMP .

Управляющие сообщения

Управляющие сообщения идентифицируются по значению в поле типа . Поле кода предоставляет дополнительную контекстную информацию для сообщения. Некоторые управляющие сообщения устарели с момента первого появления протокола.

Источник закалки

Source Quench запрашивает отправителя уменьшить скорость отправки сообщений на маршрутизатор или хост. Это сообщение может быть сгенерировано, если маршрутизатор или хост не имеет достаточного буферного пространства для обработки запроса, или может возникнуть, если буфер маршрутизатора или хоста приближается к своему пределу.

Данные передаются с очень высокой скоростью от хоста или от нескольких хостов одновременно к определенному маршрутизатору в сети. Хотя маршрутизатор имеет возможности буферизации, буферизация ограничена указанным диапазоном. Маршрутизатор не может поставить в очередь больше данных, чем позволяет емкость ограниченного буферного пространства. Таким образом, если очередь заполняется, входящие данные отбрасываются до тех пор, пока очередь не перестанет заполняться. Но поскольку на сетевом уровне отсутствует механизм подтверждения, клиент не знает, успешно ли дошли данные до места назначения. Следовательно, на сетевом уровне должны быть предприняты некоторые корректирующие меры, чтобы избежать подобных ситуаций. Эти меры называются закалкой источника.

В механизме подавления источника маршрутизатор видит, что скорость входящих данных намного выше скорости исходящих данных, и отправляет клиентам ICMP-сообщение, информируя их о том, что им следует снизить скорость передачи данных или подождать определенное количество время, прежде чем пытаться отправить дополнительные данные. Когда клиент получает это сообщение, он автоматически снижает скорость исходящих данных или ждет достаточное количество времени, что позволяет маршрутизатору очистить очередь. Таким образом, ICMP-сообщение подавления источника действует как управление потоком на сетевом уровне.

Поскольку исследования показали, что «ICMP Source Quench [был] неэффективным (и несправедливым) противоядием от перегрузки», [11] создание маршрутизаторами сообщений об подавлении источника было запрещено в 1995 году RFC 1812. Более того, пересылка и любая реакция на (действия по управлению потоком) сообщения о подавлении источника устарели с 2012 года согласно RFC 6633.

Где:

Тип должен быть установлен на 4.
Код должен быть установлен на 0
IP-заголовок и дополнительные данные используются отправителем для сопоставления ответа с соответствующим запросом.

Перенаправление

Пример того, как работает сообщение перенаправления ICMPv4

Перенаправление требует отправки пакетов данных по альтернативному маршруту. ICMP Redirect — это механизм, позволяющий маршрутизаторам передавать информацию о маршрутизации хостам. Сообщение сообщает хосту о необходимости обновить информацию о маршрутизации (отправить пакеты по альтернативному маршруту). Если хост пытается отправить данные через маршрутизатор (R1), а R1 отправляет данные на другой маршрутизатор (R2) и доступен прямой путь от хоста до R2 (то есть хост и R2 находятся в одной подсети ), затем R1 отправит сообщение перенаправления, чтобы сообщить хосту, что лучший маршрут для пункта назначения — через R2. Затем хост должен изменить информацию о своем маршруте и отправить пакеты для этого места назначения непосредственно на R2. Маршрутизатор по-прежнему отправит исходную дейтаграмму в назначенный пункт назначения. [12] Однако, если дейтаграмма содержит информацию о маршрутизации, это сообщение не будет отправлено, даже если доступен лучший маршрут. В RFC 1122 указано, что перенаправления должны отправляться только шлюзами и не должны отправляться хостами Интернета.

Где:

Тип должен быть установлен на 5.
Код указывает причину перенаправления и может быть одним из следующих:
IP-адрес — это 32-битный адрес шлюза, на который должно быть отправлено перенаправление.
IP-заголовок и дополнительные данные включены, чтобы позволить хосту сопоставить ответ с запросом, вызвавшим ответ перенаправления.

Время превышено

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

Сообщения о превышении времени используются утилитой трассировки для идентификации шлюзов на пути между двумя хостами.

Где:

Тип должен быть установлен на 11.
Код указывает причину сообщения о превышении времени , включая следующее:
IP-заголовок и первые 64 бита исходной полезной нагрузки используются исходным хостом для сопоставления сообщения о превышении времени с отброшенной дейтаграммой. Для протоколов более высокого уровня, таких как UDP и TCP , 64-битная полезная нагрузка будет включать порты источника и назначения отброшенного пакета.

Временная метка

Временная метка используется для синхронизации времени. Исходная временная метка устанавливается на время (в миллисекундах с полуночи), когда отправитель последний раз касался пакета. Временные метки приема и передачи не используются.

Где:

Тип должен быть установлен на 13.
Код должен быть установлен на 0
Идентификатор и порядковый номер могут использоваться клиентом для сопоставления ответа с меткой времени с запросом метки времени.
Временная метка отправителя — это количество миллисекунд, прошедших с полуночи по всемирному времени (UT). Если ссылка UT недоступна, старший бит может быть установлен для указания нестандартного значения времени.

Ответ с временной меткой

Timestamp Reply отвечает на сообщение Timestamp . Он состоит из исходной отметки времени, отправленной отправителем отметки времени , а также отметки времени получения, указывающей, когда отметка времени была получена, и отметки времени передачи, указывающей, когда был отправлен ответ отметки времени .

Где:

Тип должен быть установлен на 14.
Код должен быть установлен на 0
Идентификатор и порядковый номер могут использоваться клиентом для сопоставления ответа с запросом, вызвавшим ответ.
Временная метка отправителя — это время, когда отправитель последний раз касался сообщения перед его отправкой.
Временная метка получения — это время, когда эхо-устройство впервые коснулось его при получении.
Временная метка передачи — это время, когда эхоотправитель последний раз касался сообщения при его отправке.
Все временные метки указаны в миллисекундах с полуночи UT. Если время недоступно в миллисекундах или не может быть указано относительно полуночи UT, тогда в метку времени можно вставить любое время при условии, что старший бит метки времени также установлен для указания этого нестандартного значения.

Использование сообщений Timestamp и Timestamp Reply для синхронизации часов интернет-узлов в значительной степени было заменено протоколом сетевого времени на основе UDP и протоколом точного времени . [13]

Запрос маски адреса

Запрос маски адреса обычно отправляется хостом маршрутизатору для получения соответствующей маски подсети .

Получатели должны ответить на это сообщение ответным сообщением по маске адреса .

Где:

Тип должен быть установлен на 17.
Код должен быть установлен на 0
Маску адреса можно установить на 0.

Запрос маски адреса ICMP может использоваться как часть разведывательной атаки для сбора информации о целевой сети, поэтому ответ по маске адреса ICMP по умолчанию отключен в Cisco IOS. [14]

Ответ по маске адреса

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

Где:

Тип должен быть установлен на 18.
Код должен быть установлен на 0
Маска адреса должна быть равна маске подсети.

Пункт назначения недоступен

Пункт назначения недоступен генерируется хостом или его входным шлюзом [6] , чтобы сообщить клиенту, что пункт назначения по какой-то причине недоступен. Причинами появления этого сообщения могут быть: физическое соединение с хостом не существует (расстояние бесконечно); указанный протокол или порт не активен; данные должны быть фрагментированы, но флаг «не фрагментировать» включен. Недоступные порты TCP отвечают, в частности, TCP RST , а не недоступным пунктом назначения типа 3, как можно было бы ожидать. О недоступности пункта назначения никогда не сообщается при многоадресной IP- передаче.

Где:

Поле типа (биты 0–7) должно быть установлено на 3.
Поле кода (биты 8–15) используется для указания типа ошибки и может быть любым из следующих:
Поле MTU следующего перехода (биты 48–63) содержит MTU сети следующего перехода в случае возникновения ошибки с кодом 4. [15]
IP-заголовок и дополнительные данные включены, чтобы позволить клиенту сопоставить ответ с запросом, который вызвал ответ о недостижимости места назначения.

Смотрите также

Рекомендации

  1. ^ Ф. Бейкер (июнь 1995 г.). Бейкер, Ф. (ред.). Требования к маршрутизаторам IP версии 4 . п. 52. РФК 1812 . 
  2. ^ abcd Форузан, Бехруз А. (2007). Передача данных и сети (Четвертое изд.). Бостон: МакГроу-Хилл. стр. 621–630. ISBN 978-0-07-296775-3.
  3. ^ «Определение семи уровней модели OSI и объяснение функций» . Поддержка Майкрософт . Проверено 28 декабря 2014 г.
  4. ^ «Номера протоколов». Управление по присвоению номеров в Интернете . Проверено 23 июня 2011 г.
  5. ^ Требования к маршрутизаторам IP версии 4. дои : 10.17487/RFC1812 . РФК 1812.
  6. ^ abcdefghijk Постел, Дж. (сентябрь 1981 г.). Протокол управляющих сообщений Интернета. IETF . дои : 10.17487/RFC0792 . РФК 792.
  7. ^ «Параметры ICMP IANA» . Яна.орг. 21 сентября 2012 г. Проверено 7 января 2013 г.
  8. ^ Куросе, JF; Росс, К.В. (2006). Компьютерные сети: нисходящий подход. Всемирная студенческая серия. Аддисон-Уэсли. ISBN 9780321418494.
  9. ^ «Параметры протокола управляющих сообщений Интернета (ICMP)» . www.iana.org . Проверено 13 сентября 2023 г.
  10. ^ ab PROBE: Утилита для проверки интерфейсов. дои : 10.17487/RFC8335 . РФК 8335.
  11. ^ RFC  6633
  12. ^ «Когда отправляются перенаправления ICMP?» Сиско Системы . 28 июня 2008 г. Проверено 15 августа 2013 г.
  13. ^ DL Mills (сентябрь 1985 г.). Протокол сетевого времени (NTP). дои : 10.17487/RFC0958 . RFC 958. Он создан на основе протокола времени и сообщения временной метки ICMP и является подходящей заменой для обоих.
  14. ^ «Справочник по IP-командам Cisco IOS, том 1 из 4: Адресация и службы, выпуск 12.3 — Команды IP-адресации и служб: ip-маска-ответ через ip web-cache» . Сиско Системы . Архивировано из оригинала 02 января 2013 г. Проверено 7 января 2013 г.
  15. ^ Расширенный ICMP для поддержки сообщений, состоящих из нескольких частей. дои : 10.17487/RFC4884 . РФК 4884.

Источники

RFC

Внешние ссылки