31.Кодирование управляющей информации на примере конкретного PDU-SNMP v.1

Вот пример сообщения протокола SNMP, которое представляет собой запрос о значении объекта SysDescr (числовое имя 1.3.6.1.2.1.1.1).
3029020100---------
SEQUENCElen=41INTEGERlen=41vers=0---------
04067075626C6963
stringlen=6public
A01C020405AE5602
getreqlen=28INTEGERlen=4---requested ID------
020100020100------
INTEGERlen=1statusINTEGERlen=1error index------
300E300C0608------
SEQUENCElen=4SEQUENCElen=12objectidlen=8------
2B06010201010100
1.36121110
0500------------------
nulllen=0------------------
Как видно из описания, сообщение начинается с кода 30 (все коды шестнадцатеричные), который соответствует ключевому слову SEQUENCE (последовательность). Длина последовательности указывается в следующем байте (41 байт). Далее следует целое число длиной 1 байт — это версия протокола SNMP (в данном случае 0, то есть SNMP v.l, a 1 означала бы SNMP v.2). Поле community имеет тип string (строка символов) длиной в 6 байт со значением public. Остальную часть сообщения составляет блок данных GetRequest-PDU. То, что это операция Get-request, говорит код АО (это значение определено в протоколе SNMP, а не в нотации ASN.1), а общая длина блока данных — 28 байт. В соответствии со структурой блока Getrequest-PDU, далее идет идентификатор запроса (он определен как целое 4-байтовое число). Затем в блоке следуют два однобайтовых целых числа статуса и индекса ошибки, которые в запросе установлены в 0. И наконец, завершает сообщение список объектов, состоящий из одной пары — имени 1.3.6.1.2.1.1.1.0 и значения null.
Hosted by uCoz