Все реализации версии 1 должны быть способны обрабатывать сообщения длиной, по крайней мере, в 484 октета.
20.9 Форматы сообщений SNMP
Сообщение SNMP версии 1 состоит из некоторого вводного материала — "обертки",— сопровождаемого сообщением Protocol Data Unit одного из пяти типов: get-request, get-next-request, get-response, set-request или trap. Вводный материал содержит:
Версию протокола 0 для SNMP версии 1 и 1 для версии 2 Имя сообщества используется как парольАгент конфигурируется на ограничение (по имени сообщества) доступа к информации по чтению или записи. Кроме того, можно указать IP-адрес станции управления, которой разрешен доступ по чтению или записи информации MIB.
К сожалению, имя сообщества в сообщении можно легко подглядеть с помощью любого сетевого анализатора, а IP-адрес иногда можно сфальсифицировать. Одним из решений является доступ к важным устройствам (например, маршрутизаторам) через отдельную, безопасную линию связи, особенно при изменении конфигурации или статуса системы.
20.9.1 Формат сообщений gets, sets и responses в версии 1
Главное информационное содержимое во всех этих сообщениях одинаково. Оно состоит из списка (пары этого списка обычно называют "связыванием переменной"):
Имя переменной Значение Имя переменной Значение … …Идентификатор объекта используются как имя переменной. В сообщениях get и get-next поля значений пустые. В них агент разместит необходимые значения.
Элемент данных протокола (Protocol Data Unit) для сообщений get-request, get-next-request, set-request или response включает:
Идентификатор запроса Служит для согласования запроса и ответа на него. Поле статуса ошибки 0 в запросах. Ненулевые значения в ответах означают различные ошибки. Поле индекса ошибки 0 в запросах. В ответах указывает переменную, создавшую ошибку. Список идентификаторов объектов и значений В get или get-next — пустые, но заполнены в set или response.20.9.2 Запрос get и ответ на него
На рис. 20.10 показаны запрос get-request и ответ на него (response), полученные в анализаторе Sniffer компании Network General. Запрос содержит список из пяти переменных, значения которых нужно получить. После каждого идентификатора переменной стоит заполнитель NULL. Чтобы создать ответ, агент должен только заполнять пробелы и заменять пустые поля фактическими значениями.
SNMP: Version = 0
SNMP: Community = public
SNMP: Command = Get request
SNMP: Request ID = 112
SNMP: Error status = 0 (No error)
SNMP: Error index = 0
SNMP:
SNMP: Object = {1.3.6.1.2.1.1.3.0} (sysUpTime.0)
SNMP: Value = NULL
SNMP:
SNMP: Object = {1.3.6.1.2.1.5.1.0} (icmpInMsgs.0)
SNMP: Value = NULL
SNMP:
SNMP: Object = {1.3.6.1.2.1.5.2.0} (icmpInErrors.0)
SNMP: Value = NULL
SNMP:
SNMP: Object = {1.3.6.1.2.1.5.3.0} (icmpInDestUnreachs.0)
SMMP: Value = NULL
SNMP:
SNMP: Object = {1.3.6.1.2.1.5.4.0} (icmpInTimeExcds.0)
SNMP: Value = NULL
SNMP: Version = 0
SNMP: Community = public
SNMP: Command = Get response
SNMP: Request ID = 112
SNMP: Error status = 0 (No error)
SNMP: Error index = 0
SNMP:
SNMP: Object = {1.3.6.1.2.1.1.3.0} (sysUpTime.0)
SNMP: Value = 1037388 hundredths of a second SNMP:
SNMP: Object = {1.3.6.1.2.1.5.1.0} (icmpInMsgs.0)
SNMP: Value = 1 messages
SNMP:
SNMP: Object = {1.3.6.1.2.1.5.2.0} (icmpInErrors.0)
SNMP: Value = 0 messages
SNMP:
SNMP: Object = {1.3.6.1.2.1.5.3.0} (icmpInDestUnreachs.0)
SNMP: Value = 0 messages
SNMP:
SNMP: Object = {1.3.6.1.2.1.5.4.0} (icmpInTimeExcds.0)
SNMP: Value = 0 message
Рис. 20. 1. Пример get-request и response
20.9.3 Запрос get-next и ответ на него
Сообщение get-next работает по-другому. Когда отсылается идентификатор объекта, возвращается значение следующего объекта. Например, если послать запрос:
SNMP: Object = {1.3.6.1.2.1.5.1.0} (icmpInMsgs.0)
SNMP: Value = NULL
ответ будет содержать имя и значение для следующей переменной:
SNMP: Object = {1.3.6.1.2.1.5.2.0} (icmpInErrors.0)
SNMP: Value = 0 messages
Такой запрос позволяет просматривать значения MIB или перемещаться на следующую строку таблицы.
20.9.4 Запрос set
Запрос set позволяет записывать информацию в базу данных агента. Формат сообщения очень прост, он выглядит как get-request, но приводит к изменению указанных в запросе переменных. На рис. 20.11 показано отслеживание запроса set.
SNMP: Version = 0
SNMP: Community = xyz
SNMP: Command = Set request
SNMP: Request ID = 0
SNMP: Error status = 0 (No error)
SNMP: Error index = 0
SNMP:
SNMP: Object = {1.3.6.1.2.1.4.1.0} {ipForwarding.0}
SNMP: Value = 2
SNMP: Object = {1.3.6.1.2.1.4.2.0} (ipDefaultTTL.0)
SNMP: Value = 70