Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

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




Протокол ICMP (Internet Control Message Protocol) служит для обмена сообщениями об ошибках и различных особых случаях, требующих обработки. ICMP-сообщения содержат управляющие данные, используемые либо на IP-уровне, либо на более высоком уровне (TCP или UDP). Некоторые ICMP-сообщения трансформируются в коды ошибок, возвращаемых пользовательским процессам. В иерархии протоколов ICMP часто относят к сетевому уровню, наряду с IP, но ICMP-сообщения инкапсулируются в IP-диаграммы. Структура ICMP-сообщения представлена на рис.6.

0 7 8 15 16 31
Тип (8 бит)   Код (8 бит) Контрольная сумма(16 бит)
Содержание сообщения(зависит от типа и кода)  

Рис.6

Первое слово(4 байта) содержит три поля, общие по смыслу и формату для любых разновидностей сообщений. Следующая затем содержательная часть сообщения форматируется по-разному в зависимости от типа сообщения.

Предусмотрено 15 различных значений для поля тип (type), которое идентифицирует разновидность ICMP-сообщения. Кроме того, некоторые типы ICMP-сообщений дополнительно используют значения поля код (code) для конкретизации тех или иных условий.

Поле контрольная сумма (checksum) относится ко всему ICMP-сообщению и является обязательным

Разновидности ICMP – сообщений

В таблице 1 приведены всевозможные разновидности ICMP-сообщений, определяемые полями тип(type) и код (code). Последние два столбца таблицы позволяют отличить запросы и отклики на них от сообщений об ошибках. Необходимо различать эти

Таблица 1 Разновидности ICMP-сообщений

Тип Код Описание Запрос/Ответ Ошибка
    Эхо-ответ (echo reply) +  
    Адресат недоступен(destination unreachable)    
    сеть недоступна   +
    хост недоступен   +
    протокол недоступен   +
    порт недоступен   +
    необходима фрагментация, но есть флаг DF   +
    маршрутизация от источника невыполнима   +
    сеть назначения неизвестна   +
    хост назначения неизвестен   +
    хост источника изолирован(устарело)   +
    сеть назначения административно закрыта   +
    хост назначения административно закрыт   +
    сеть недоступна для данного типа сервиса TOS   +
    хост недоступен для данного типа сервиса TOS   +
    связь административно закрыта фильтром   +
    нарушение старшинства хостов   +
    действует отключение по старшинству   +
    Прикрыть источник(source quench)   +
    Перенаправление(redirect)    
    перенаправить путь на сеть   +
    перенаправить путь на хост   +
    перенаправить путь на сеть для типа сервиса TOS   +
    перенаправить путь на хост для типа сервиса TOS   +
    Эхо-запрос(echo request) +  
    Объявление маршрутизатора(router advertisment) +  
    Запрос маршрутизатора(router solicitation) +  
    Срок истек(time exceeded)    
    срок истек на переходе(TTL = 0)   +
    срок истек при сборке   +
    Нарушены параметры дейтаграммы    
    испорчен IP-заголовок   +
    отсутствует необходимая опция   +
    Запрос отсчета времени(timestamp request) +  
    Отклик отсчета времени(timestamp reply) +  
    Запрос информации(устарело) +  
    Информационный отклик(устарело) +  
    Запрос адресной маски(address mask request) +  
    Ответ адресной маски(address mask reply) +  

Две разновидности, потому что обработка ICMP-сообщения об ошибке имеет свою специфику.

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

ICMP-сообщение об ошибке никогда не генерируется в ответ на следующие пакеты:

На ICMP-сообщение об ошибке.

На дейтаграмму, посланную по широковещательному IP-адресу или групповому IP-адресу.

На какой-либо фрагмент дейтаграммы, кроме первого ее фрагмента.

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

Эти правила предназначены для предотвращения так называемых широковещательных штормов(broadcast storms), которые бывало, случались в прошлом, когда ICMP-сообщения об ошибке могли высылаться в ответ на широковещательные пакеты.

Как работает Ping

Программа проверяет доступность зондируемого ею объекта в сети подобно локатору: посылает хосту ICMP-сообщение эхо-запрос(echo request) и ждет от него эхо-отклик(echo reply).

Эта утилита внешне действует подобно клиенту, а адресуемый хост, от которого приходит отклик, выступает в роли сервера. Однако на самом деле обработка эхо-запросов и генерация откликов осуществляется не каким-либо пользовательским процессом, а непосредственно ядром.

Формат ICMP сообщений, содержащих эхо-запрос или эхо-отклик, представлен на рис.7

0 7 8 15 16 31
Тип (0 или 8) Код (0) Контрольная сумма
Идентификатор Порядковый номер
Необязательные данные
       

Рис.7

Как и при обработке любых других ICMP-запросов, в ответном сообщении возвращаются поля идентификатор (identifier) и порядковый номер (sequence number) запроса. Также должны быть возвращены и содержащиеся в запросе необязательные данные (optional data), так как они используются источником запроса при интерпретации пришедшего на запрос ответа.

Unix-реализации программы Ping фиксируют в поле идентификатор (identifier) ICMP-сообщения свой системный идентификатор процесса(process ID), пославшего сообщение. Это в последствии позволяет правильно распределять возвращенные ответы, когда на одном хосте параллельно работают несколько копий Ping.

 

В первом пакете, посылаемом Ping, значение поля порядковый номер (sequence number) устанавливается равным 0. Каждый раз при отправлении нового запроса это значение увеличивается на единицу.

Как работает Traceroute

Эта утилита даёт возможность отследить текущий маршрут движения IP – дейтаграмм от одного хоста к другому. Кроме того, программа позволяет использовать IP – опцию маршрутизации от источника(source route).

В основе Traceroute лежит идея отправки UDP-пакета адресату и постепенного изменения времени жизни (time-to-live, TTL). Первоначально TTL пакета равен 1, и когда пакет достигает первого маршрутизатора, его TTL сбрасывается, и маршрутизатор генерирует ICMP-пакет со сведениями о превышении лимита времени. Тогда начальное значение TTL увеличивается на 1, так что на сей раз UDP-пакет достигает следующего маршрутизатора, а тот тоже отсылает ICMP-пакет по превышению лимита времени. Совокупность этих ICMP-сообщений дает список IP-адресов, пройденных на пути к конечной точке. Когда TTL увеличится настолько, что UDP-пакет достигнет искомой конечной точки, возвращается ICMP сообщение о недостижимости порта, поскольку на получателе ни один процесс не ждёт вашего сообщения.

Поделиться:





Воспользуйтесь поиском по сайту:



©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...