Протокол управляющих сообщений ICMP
⇐ ПредыдущаяСтр 2 из 2 Протокол ICMP (Internet Control Message Protocol) служит для обмена сообщениями об ошибках и различных особых случаях, требующих обработки. ICMP-сообщения содержат управляющие данные, используемые либо на IP-уровне, либо на более высоком уровне (TCP или UDP). Некоторые ICMP-сообщения трансформируются в коды ошибок, возвращаемых пользовательским процессам. В иерархии протоколов ICMP часто относят к сетевому уровню, наряду с IP, но ICMP-сообщения инкапсулируются в IP-диаграммы. Структура ICMP-сообщения представлена на рис.6.
Рис.6 Первое слово(4 байта) содержит три поля, общие по смыслу и формату для любых разновидностей сообщений. Следующая затем содержательная часть сообщения форматируется по-разному в зависимости от типа сообщения. Предусмотрено 15 различных значений для поля тип (type), которое идентифицирует разновидность ICMP-сообщения. Кроме того, некоторые типы ICMP-сообщений дополнительно используют значения поля код (code) для конкретизации тех или иных условий. Поле контрольная сумма (checksum) относится ко всему ICMP-сообщению и является обязательным Разновидности ICMP – сообщений В таблице 1 приведены всевозможные разновидности ICMP-сообщений, определяемые полями тип(type) и код (code). Последние два столбца таблицы позволяют отличить запросы и отклики на них от сообщений об ошибках. Необходимо различать эти Таблица 1 Разновидности ICMP-сообщений
Две разновидности, потому что обработка 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
Рис.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 - 2025 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...
|