Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
СЭиМИХЗ для БЗС-послед. часть 1 раздела.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
186.37 Кб
Скачать

11.4. Протокол управления сообщениями Internet (icmp – Internet Control Message Protocol)

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

ICMP-сообщения передаются внутри IP-пакетов, как показано на рис. 11.7.

Рис. 11.7. ICMP-сообщения

Спецификация ICMP находится в RFC-792. На рис. 11.8 показан формат ICMP-сообщения. Первые 4 байта одинаковы для всех сообщений, однако остальные отличаются в зависимости от типа сообщения.

Существует 15 различных значений для поля типа (type), которые указывают на конкретный тип ICMP-сообщения. Для некоторых ICMP-сообщений используются различные значения в поле кода (code) – причина ошибки (например, «0» – сеть недоступна), подобным образом осуществляется дальнейшее подразделение ICMP сообщений.

Поле контрольной суммы (checksum) охватывает ICMP-сообщение целиком. Контрольная сумма ICMP присутствует всегда.

8-bit

type

8-bit

code

16-bit

checksum (for entire ICMP message)

Contents depend on type and code

Рис. 11.8. Формат ICMP-сообщения

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

В табл. 11.1 приведены возможные типы ICMP-сообщений (как они определяются полями: «type» и «code»).

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

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

Сообщение об ошибке ICMP никогда не генерируется в ответ на:

  • ICMP-сообщение об ошибке (ICMP-сообщение об ошибке, однако, может быть сгенерировано в ответ на ICMP-запрос).

  • Пакет, направляющийся на широковещательный IP-адрес или групповой адрес IP (адрес класса D).

  • Пакет, который посылается широковещательным запросом на канальном уровне.

  • Фрагмент пакета, который не является первым. Пакет, адрес источника которого не указывает на конкретный хост. Это означает, что адрес источника не может быть нулевым, loopback-адресом, широковещательным или групповым адресом.

Примеры сообщения ICMP:

  1. ICMP эхо-запрос/ответ (Ping request and reply). Во многих операционных системах используется утилита «ping», которая предназначена для тестирования достижимости узлов. Эта утилита обычно посылает серию эхо-запросов к тестируемому узлу и предоставляет пользователю статистику об утерянных эхо-ответах и среднем времени реакции сети на запросы. Протокол ICMP предоставляет сетевым администраторам средства для тестирования достижимости узлов сети. Эти средства представляют собой очень простой эхо-протокол, включающий обмен двумя типами сообщений: «эхо-запрос» и «эхо-ответ». Компьютер или маршрутизатор посылают по Интернету «запрос», в котором указывают IP-адрес узла, достижимость которого нужно проверить. Узел, который получает «эхо-запрос», формирует и отправляет «эхо-ответ» и возвращает сообщение узлу – отправителю запроса. В запросе могут содержаться некоторые данные, которые должны быть возвращены в ответе. Пакеты «Ping» не ставятся в очередь, и не посылаются в буфер, т.е. время посылки ответа на ICMP-запрос не зависит от загруженности сервера. Обработка этих сообщений происходит на уровне процессора. Так как «эхо-запрос» и «эхо-ответ» передаются по сети внутри IP-пакетов, то их успешная доставка означает нормальное функционирование всей транспортной системы Интернета. Формат ICMP- запроса/ответа маски адреса (address mask request and reply) показан на рис. 11.10.

Рис. 11.10. Формат ICMP- запроса/ответа маски адреса

Формат ICMP запроса/ответа временной метки (timestamp request and reply)

изображен на рис. 11.11.

Рис. 11.11. Формат ICMP запроса/ответа временной метки

Поле Identifier и Sequence number – определяются в ходе передачи.

32-бит – временная метка, т.е. время посылки данного сообщения.

По ней можно определить время двойного перехода: (32-bit originate timestamp – временная метка посылки пакета) – (32-bit receive timestamp – временная метка получения пакета).

32-bit transmit timestamp – временная метка переданного пакета.

  1. ICMP о недостижимости узла назначения (ICMP unreachable message). Когда маршрутизатор не может передать или доставить IP-пакет, он отсылает узлу, отправившему этот пакет, сообщение "Узел назначения недостижим" (тип сообщения – 3). Это сообщение содержит в поле кода значение, уточняющее причину, по которой пакет не был доставлен (рис. 11.12).

Рис. 11.12. ICMP о недостижимости узла назначения

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

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

Недостижимость протокола и порта означают отсутствие реализации какого-либо протокола прикладного уровня в узле назначения или же отсутствие открытого порта протоколов UDP или TCP в узле назначения.

Ошибка фрагментации возникает тогда, когда отправитель послал в сеть пакет с признаком DF, запрещающим фрагментацию, а маршрутизатор столкнулся с необходимостью передачи этого пакета в сеть со значением MTU меньшим, чем размер пакета.