Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Kompyuternye_seti.doc
Скачиваний:
155
Добавлен:
10.06.2015
Размер:
14.52 Mб
Скачать

17.5 Формат snmp-сообщений

Протокол SNMP обслуживает передачу данных между агентами и менеджерами. SNMP использует дейтаграммный транспортный протокол UDP, не обеспечивающий надежной доставки сообщений. Протокол, организующий надежную передачу дейтаграмм на основе соединений TCP, весьма загружает управляемые устройства, которые на момент разработки протокола SNMP были не очень мощные, поэтому от услуг протокола TCP решили отказаться.

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

Любое SNMP-сообщение состоит из трех основных частей: версии протокола, идентификатора общности и области данных.

Идентификатор общности (community string) используется для группирования устройств, управляемых определенным менеджером. Идентификатор общности является аналогом пароля, так как для того, чтобы устройства могли взаимодействовать по протоколу SNMP, они должны иметь одно и то же значение этого идентификатора (по умолчанию часто используется строка «public»).

В области данных, собственно, и содержатся описанные выше команды протокола, имена объектов и их значения. Область данных состоит из одного или более блоков PDU, каждый из которых может относиться к одному из пяти различных типов PDU, соответствующих пяти командам протокола SNMP: GetRequest-PDU, GetNextRequest-PDU, GetResponse-PDU, SetRequest-PDU, Trap-PDU. И наконец, для каждого типа PDU имеется определение его формата. Например, формат блока GetRequest-PDU включает следующие поля:

  • идентификатор запроса;

  • статус ошибки (есть или нет);

  • индекс ошибки (тип ошибки, если она есть);

  • список имен объектов SNMP MIB, включенных в запрос.

На рисунке 17.7 показано сообщение протокола SNMP, которое представляет собой запрос о значении объекта SysDescr (числовое имя 1.3.6.1.2.1.1.1).

Рисунок.17.7 Пример сообщения протокола SNMP.

Как видно из рисунка, сообщение начинается с кода 30 (все коды шестнадцатеричные), который соответствует ключевому слову SEQUENCE (последовательность) и говорит о том, что сообщение состоит из последовательности полей. Длина последовательности указывается в следующем байте (41 байт). Далее следует поле, которое представляет собой целое число (integer) длиной 1 байт — это версия (vers) протокола SNMP (в данном случае 0, то есть SNMPvl, a 1 означала бы SNMPv2). Поле идентификатора общности community имеет тип string (строка символов) длиной в 6 байт со значением public. Остальную часть сообщения составляет блок данных GetRequest-PDU. To, что это операция Get-request, говорит код АО, а общая длина этого блока данных равна 28 байт. В соответствии со структурой блока данных Getrequest-PDU далее идет поле идентификатора запроса (он определен как целое 4-байтовое число и имеет значение 05 АЕ 56 02). Затем в блоке следует два однобайтовых целых числа статуса и индекса ошибки, которые в запросе установлены в 0. И наконец, завершает сообщение список имен объектов, значения которых запрашиваются данной командой. Этот список в примере состоит из одной переменной с именем 1.3.6.1.2.1.1.1.0, которое соответствует символьному имени SysDescr. Признак null (значение 05) говорит о том, что достигнут конец сообщения.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]