- •11.4. Протокол управления сообщениями Internet (icmp – Internet Control Message Protocol)
- •11.5. Адресация ip
- •11.5.1. Типы адресов
- •11.5.2. Классы ip-адресов
- •11.5.3. Типы ip-адресов
- •11.5.4. Маска ip-адреса
- •12. Технологии mpls и mpls-ip
- •12.1. Введение
- •12.2. История создания технологии mpls
- •12.3. Технологии mpls и ip
- •Преимущества mpls:
- •12.4. Принципы работы технологии mpls
- •12.4.1. Общие положения
- •12.4.2. Маршрутизация mpls
- •12.4.3. Сигнализация и распределение меток
- •12.4.4. Поток данных в сети mpls
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:
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 – временная метка переданного пакета.
ICMP о недостижимости узла назначения (ICMP unreachable message). Когда маршрутизатор не может передать или доставить IP-пакет, он отсылает узлу, отправившему этот пакет, сообщение "Узел назначения недостижим" (тип сообщения – 3). Это сообщение содержит в поле кода значение, уточняющее причину, по которой пакет не был доставлен (рис. 11.12).
Рис. 11.12. ICMP о недостижимости узла назначения
Маршрутизатор, обнаруживший по какой-либо причине, что он не может передать IP-пакет далее по сети, должен отправить ICMP-сообщение узлу-источнику, и только потом отбросить пакет. Кроме причины ошибки, ICMP-сообщение включает также заголовок недоставленного пакета и его первые 64 бита поля данных.
Узел или сеть назначения могут быть недостижимы из-за временной неработоспособности аппаратуры, из-за того, что отправитель указал неверный адрес назначения, а также из-за того, что маршрутизатор не имеет данных о маршруте к сети назначения.
Недостижимость протокола и порта означают отсутствие реализации какого-либо протокола прикладного уровня в узле назначения или же отсутствие открытого порта протоколов UDP или TCP в узле назначения.
Ошибка фрагментации возникает тогда, когда отправитель послал в сеть пакет с признаком DF, запрещающим фрагментацию, а маршрутизатор столкнулся с необходимостью передачи этого пакета в сеть со значением MTU меньшим, чем размер пакета.
