Пример выполнения расшифровки для сообщения № 2

Сообщение 2

0000: 00 00 1d 90 02 20 00 00 aa e8 02 8e 08 00 45 40

0010: 01 1a 0b 25 00 00 60 11 00 09 c0 58 95 ca c4 95

0020: a8 66 c0 7c 00 a1 01 06 4a 51 30 81 fb 02 01 00

0030: 04 06 61 65 73 2d 30 32 a0 81 ed 02 04 35 97 ac

0040: 55 02 01 00 02 01 00 30 81 de 30 0c 06 08 2b 06

0050: 01 02 01 01 03 00 05 00 30 0e 06 0a 2b 06 01 02

0060: 01 02 02 01 05 01 05 00 30 0e 06 0a 2b 06 01 02

0070: 01 02 02 01 08 01 05 00 30 0e 06 0a 2b 06 01 02

0080: 01 02 02 01 09 01 05 00 30 0e 06 0a 2b 06 01 02

0090: 01 02 02 01 0a 01 05 00 30 0e 06 0a 2b 06 01 02

00a0: 01 02 02 01 0b 01 05 00 30 0e 06 0a 2b 06 01 02

00b0: 01 02 02 01 0c 01 05 00 30 0e 06 0a 2b 06 01 02

00c0: 01 02 02 01 0d 01 05 00 30 0e 06 0a 2b 06 01 02

00d0: 01 02 02 01 0e 01 05 00 30 0e 06 0a 2b 06 01 02

00e0: 01 02 02 01 10 01 05 00 30 0e 06 0a 2b 06 01 02

00f0: 01 02 02 01 11 01 05 00 30 0e 06 0a 2b 06 01 02

0100: 01 02 02 01 12 01 05 00 30 0e 06 0a 2b 06 01 02

0110: 01 02 02 01 13 01 05 00 30 0e 06 0a 2b 06 01 02

0120: 01 02 02 01 14 01 05 00


интерфейс сеть дейтаграмма

Выполнение работы

В сообщении №1 администратором сети запрашивается информация об управляемом объекте.

0000: 00 00 1d 90 02 20 00 00 aa e8 02 8e 08 00 45 40

0010: 01 1a 0b 25 00 00 60 11 00 09 c0 58 95 ca c4 95

0020: a8 66 c0 7c 00 a1 01 06 4a 51 30 81 fb 02 01 00

0030: 04 06 61 65 73 2d 30 32 a0 81 ed 02 04 35 97 ac

0040: 55 02 01 00 02 01 00 30 81 de 30 0c 06 08 2b 06

0050: 01 02 01 01 03 00 05 00 30 0e 06 0a 2b 06 01 02

0060: 01 02 02 01 05 01 05 00 30 0e 06 0a 2b 06 01 02

0070: 01 02 02 01 08 01 05 00 30 0e 06 0a 2b 06 01 02

0080: 01 02 02 01 09 01 05 00 30 0e 06 0a 2b 06 01 02

0090: 01 02 02 01 0a 01 05 00 30 0e 06 0a 2b 06 01 02

00a0: 01 02 02 01 0b 01 05 00 30 0e 06 0a 2b 06 01 02

00b0: 01 02 02 01 0c 01 05 00 30 0e 06 0a 2b 06 01 02

00c0: 01 02 02 01 0d 01 05 00 30 0e 06 0a 2b 06 01 02

00d0: 01 02 02 01 0e 01 05 00 30 0e 06 0a 2b 06 01 02

00e0: 01 02 02 01 10 01 05 00 30 0e 06 0a 2b 06 01 02

00f0: 01 02 02 01 11 01 05 00 30 0e 06 0a 2b 06 01 02

0100: 01 02 02 01 12 01 05 00 30 0e 06 0a 2b 06 01 02

0110: 01 02 02 01 13 01 05 00 30 0e 06 0a 2b 06 01 02

0120: 01 02 02 01 14 01 05 00

296 байт = 14 Ethernet + 20 IP + 8 UDP + 254 SNMP

1. Поля протокола Ethernet:

В таблице 1 приведена расшифровка Ethernet.

00 00 1d 90 02 20 00 00 аа e8 02 8e 08 00

Таблица 1 – расшифровка Ethernet

1. Фрагмент трассировки заголовка Ethernet в Hex’-коде
    1d           e8   8e    
  2. Формат заголовка протокола Ethernet (всего - 14 байт)
MAC-DA (Адрес сетевой платы назначения) 6 байт MAC-SA (Адрес сетевой платы источника) 6 байт Length/ Type (Protocol) 2 байта
3. Кодировка полей протокола Ethernet
Vendor   3 байта Serial Number 3 байта Vendor   3 байта Serial Number 3 байта dod IP   2 байта
                             

Согласно этому разделу расшифруем коды вендоров:

00 00 1d – Сетевой интерфейс фирмы назначения Cabletron

00 20 aа – Сетевой интерфейс фирмы источника Xerox

08 00 – Эта кодировка означает, что данный Ethernet-кадр перевозит в поле данных IP-датаграмму (данные Internet-протокола версии 4 (IPv4)).

Поля протокола IP (заголовок IP-датаграммы)

Приведем расшифровку заголовка IP из трассировки сообщения №1 (Табл. 2):

45 40

0010: 01 1a 0b 25 00 00 60 11 00 09 c0 58 95 ca c4 95

0020: a8 66


Таблица 2 - Расшифровка заголовка IP-датаграммы:

                                                               
Версия Длина IP-заголовка (HLength) Тип сервиса ToS   Длина IP-пакета (дейтаграммы), включая заголовки IP и UDP  
      01 1а‘hex=282’Dec (байт)  
                Prio D T R C x                                
                                                               
   
Идентификатор фрагмента Флаги Указатель фрагмента  
0b 25   00 00  
                                                               
   
Время жизни (TTL) Протокол, которому предоставлена услуга Контрольная сумма заголовка  
60’hex (96’Dec) 11’hex (17’Dec - UDP) 00 09  
   
IP-адрес отправителя – Source (откуда)  
С0’hex 192’Dec 58’hex 88’Dec 95’hex 149’Dec са’hex 202’Dec  
IP-адрес получателя – Destination (куда)  
с4’hex 196’Dec 95’hex 149’Dec а8’hex 168’Dec 66’hex 102’Dec  
                                                                 

Из расшифровки видно, что IP-пакет длиной 282 байта, перевозящий данное SNMP-сообщение, направляется от устройства с адресом IP – 192.88.149.202 к устройству с адресом IP – 196.149.168.102, при этом время жизни IP-пакета в сети ограничено значением TTL=96, что допускает 96 транзитных пункта.

Также видно, что приоритет данного пакета самый низкий (0), и для обслуживания SNMP-сообщения используется ненадежный протокол UDP (код – 11’hex или 17’dec).

3. Поля протокола UDP (Заголовок UDP-датаграммы)

Фрагмент (заголовок) UDP-датаграммы (Табл.3): c0 7c 00 a1 01 06 4a 51

Таблица 3 - Расшифровка заголовка UDP-датаграммы:

                                                 
1-ое 32-х разрядное слово UDP-заголовка  
Порт отправителя (от кого) Порт назначения (кому)  
c0 7c (49351’Dec) 00 a1 (161’Dec - SNMP)  
2-ое 32-х разрядное слово UDP-заголовка  
Длина UDP-пакета Контрольная сумма заголовка  
01 06 (262’Dec байт) 4a 51  
                                                   

Из данной расшифровки видно, что UDP-дейтаграмма, обслуживающая SNMP-сообщение, имеет общую длину 262 байта и предназначена для приложения с портом 161. Со стороны источника используется динамически назначенный порт с номером 49351.

4. Поля протокола SNMP

Фрагмент SNMP-сообщения, вложенного в информационную часть протоколов UDP/IP/Ethernet выглядит так:

30 81 fb 02 01 00

0030: 04 06 61 65 73 2d 30 32 a0 81 ed 02 04 35 97 ac

0040: 55 02 01 00 02 01 00 30 81 de 30 0c 06 08 2b 06

0050: 01 02 01 01 03 00 05 00 30 0e 06 0a 2b 06 01 02

0060: 01 02 02 01 05 01 05 00 30 0e 06 0a 2b 06 01 02

0070: 01 02 02 01 08 01 05 00 30 0e 06 0a 2b 06 01 02

0080: 01 02 02 01 09 01 05 00 30 0e 06 0a 2b 06 01 02

0090: 01 02 02 01 0a 01 05 00 30 0e 06 0a 2b 06 01 02

00a0: 01 02 02 01 0b 01 05 00 30 0e 06 0a 2b 06 01 02

00b0: 01 02 02 01 0c 01 05 00 30 0e 06 0a 2b 06 01 02

00c0: 01 02 02 01 0d 01 05 00 30 0e 06 0a 2b 06 01 02

00d0: 01 02 02 01 0e 01 05 00 30 0e 06 0a 2b 06 01 02

00e0: 01 02 02 01 10 01 05 00 30 0e 06 0a 2b 06 01 02

00f0: 01 02 02 01 11 01 05 00 30 0e 06 0a 2b 06 01 02

0100: 01 02 02 01 12 01 05 00 30 0e 06 0a 2b 06 01 02

0110: 01 02 02 01 13 01 05 00 30 0e 06 0a 2b 06 01 02

0120: 01 02 02 01 14 01 05 00

Для упрощения расшифровки данного сообщения, разобьем это сообщение на отдельные состовляющие:

3081 fb

040661 65 73 2d 30 32

a081 ed

020435 97 ac 55

020100

020100

30 81de

300c06 08 2b 06 01 02 01 01 03 00 05 00

300e06 0a 2b 06 01 02 01 02 02 01 05 01 05 00

300e06 0a 2b 06 01 02 01 02 02 01 08 01 05 00

300e06 0a 2b 06 01 02 01 02 02 01 09 01 05 00

300e06 0a 2b 06 01 02 01 02 02 01 0a 01 05 00

300e06 0a 2b 06 01 02 01 02 02 01 0b 01 05 00

300e06 0a 2b 06 01 02 01 02 02 01 0c 01 05 00

300e06 0a 2b 06 01 02 01 02 02 01 0d 01 05 00

300e06 0a 2b 06 01 02 01 02 02 01 0e 01 05 00

300e06 0a 2b 06 01 02 01 02 02 01 10 01 05 00

300e06 0a 2b 06 01 02 01 02 02 01 11 01 05 00

300e06 0a 2b 06 01 02 01 02 02 01 12 01 05 00

300e06 0a 2b 06 01 02 01 02 02 01 13 01 05 00

300e06 0a 2b 06 01 02 01 02 02 01 14 01 05 00

Применим к данному формату конструкцию T-L-V, чтобы расшифровать отдельные ИЭ сообщения SNMP:

Конструкция – T-L-V (Tag-Length-Value)

3081 fb

T L (……… V ……

020100

T L V

040661 65 73 2d 30 32

T L V

a081 ed

T L (……… V ……

020435 97 ac 55

T L V

020100

T L V

020100

T L V

3081 de

T L (……… V ……

300c06 08 2b 06 01 02 01 01 03 00 05 00

T L (T L (V=OID))

300e06 0a 2b 06 01 02 01 02 02 01 05 01 05 00

T L (T L (V=OID))

300e06 0a 2b 06 01 02 01 02 02 01 08 01 05 00

T L (T L (V=OID))

300e06 0a 2b 06 01 02 01 02 02 01 09 01 05 00

T L (T L (V=OID))

300e06 0a 2b 06 01 02 01 02 02 01 0a 01 05 00

T L (T L (V=OID))

300e06 0a 2b 06 01 02 01 02 02 01 0b 01 05 00

T L (T L (V=OID))

300e06 0a 2b 06 01 02 01 02 02 01 0c 01 05 00

T L (T L (V=OID))

300e06 0a 2b 06 01 02 01 02 02 01 0d 01 05 00

T L (T L (V=OID))

300e06 0a 2b 06 01 02 01 02 02 01 0e 01 05 00

T L (T L (V=OID))

300e06 0a 2b 06 01 02 01 02 02 01 10 01 05 00

T L (T L (V=OID))

300e06 0a 2b 06 01 02 01 02 02 01 11 01 05 00

T L (T L (V=OID))

300e06 0a 2b 06 01 02 01 02 02 01 12 01 05 00

T L (T L (V=OID))

300e06 0a 2b 06 01 02 01 02 02 01 13 01 05 00

T L (T L (V=OID))

300e06 0a 2b 06 01 02 01 02 02 01 14 01 05 00

T L (T L (V=OID))

Учитываем, что ИЭ, кодируемые тэгом=30 или a0, содержащим в 6-м бите единицу, имеют составной тип, следовательно, внутри этих элементов содержатся другие ИЭ по принципу матрешки.

Расшифруем теперь отдельные части SNMP-сообщения:

3081 fb

T L (……… V ……

– Заголовок протокола SNMP (флаг), содержащий тэг (30 - Sequence) и длину содержимого (81 fb – длинный формат, обозначающий, что в поле «Длина» содержится 1 байт, а его значение – fb’hex или 251 байт)

020100

T L V

– Версия протокола SNMP (Тэг=02, что означает целое число в поле «содержимое», длина этого содержимого равна 1 байту, а 00 в поле содержимое – означает, что используется версия SNMPv1)

040661 65 73 2d 30 32

T L V

– поле “Community” длиной 6 байт, в котором содержится строка октетов (тэг=04), кодирующих содержимое в формате IA5.

В данном случае поля 61 65 73 2d 30 32’hex означают, что пароль доступа к полю “Community” – vm15-1

a081 ed

T L (……… V ……

– имя PDU-SNMP. В данном случае – это Get-request (тэг=a0), а длина содержимого в этом PDU составляет ed’hex или 237’dec байт

Далее, учитывая, что имя данного PDU – Get, используем его формат (см. рис. 7 и 8 в разделе 2.2, а также форму записи на языке ASN.1 в разделе 2.3.5.3 для заголовка Get-PDU):

020435 97 ac 55

T L V

– идентификатор данного запроса (request-id). Используется для того, чтобы связывать запросы и ответы на них в пары. В данном случае длина этого идентификатора равна 4 байтам, а так как поле содержимого кодируется целым числом (тэг=02’hex, что означает INTEGER), то значение идентификатора будет 35 97 ac 55’hex или 899132501’dec

020100

T L V

– статус ошибки (error-status). Как указано выше, для запросов это значение всегда=0 (always 0)

020100

T L V

– индекс ошибки (error-index). Также как и для статуса, как указано выше, в запросах это значение всегда=0 (always 0)

3081 de

T L (……… V ……

– Тэг=30 (Sequence), означает, что далее идет составной тип данных (последовательность) длиной de’hex или 222’dec байт. В данном случае, в соответствии с форматом Get-PDU – это последовательность переменных (variable-bindings).

Далее следуют переменные, которые собственно и содержат основную управляющую информацию, интересующую менеджера в данном запросе:

300c06 08 2b 06 01 02 01 01 03 00 05 00

T L (T L (V=OID))

Как видно, что первая переменная представляет собой также последовательность (тэг=30, следовательно, тип ИЭ - составной).

Выделим элементы этой последовательности:

300c – последовательность переменных общей длиной 0c’hex или 12 байт

T L (… V …

06 08 2b 06 01 02 01 01 03 00 05 00 – или более детально:

(T L (V=OID), T L)

06 08

(T L

– Тэг=06, следовательно, 1-я переменная в этой последовательности – это идентификатор объекта – OID, длиной 8 байт

2b 06 01 02 01 01 03 00

(V=OID),

- содержимое первой переменной (OID), которое в цифро-точечной нотации означает 1.3.6.1.2.1.1.3.0, что означает – менеджер запрашивает значение переменной, находящейся в базе данных (MIB) по пути (см. п.2.3.4):

iso.org.dod.internet.mgmt.mib.sys

1. 3. 6. 1. 2. 1. 1

По этому пути для объектов группы system находится запрашиваемая переменная – sysUpTime (OID=3 в иерархии группы объектов system) – время с момента последней перезагрузки объекта.

Итак, в запросе Get, менеджер спрашивает: сколько времени прошло с момента последней перезагрузки объекта, что выглядит так:

iso.org.dod.internet.mgmt.mib.sys.sysUpTime.0

1. 3. 6. 1. 2. 1. 1. 3.0

2b 06 01 02 01 01 03 00

Ноль в конце пути говорит о скалярном типе хранимых данных (т.е. в данном случае запрашивается число, а не массив данных или не элемент этого массива).

05 00

T L)

- Вторая переменная в данной последовательности, означает NULL (тэг=05), что в данном случае означает алгоритмический 0, т.е. окончание первой переменной.

2b 06 01 02 01 02 02 01 05 01

(V=OID),

- содержимое первой переменной (OID), которое в цифро-точечной нотации означает 1.3.6.1.2.1.1.3.0, что означает – менеджер запрашивает значение переменной, находящейся в базе данных (MIB) по пути (см. п.2.3.4):

iso. org. dod. internet. mgmt. mib. interfaces. ifTable. IfEntry. IfSpeed

1. 3. 6. 1. 2. 1. 2. 2. 1. 5.1

2b 06 01 02 01 02 02 01 08 01

(V=OID),

- содержимое первой переменной (OID), которое в цифро-точечной нотации означает 1.3.6.1.2.1.1.3.0, что означает – менеджер запрашивает значение переменной, находящейся в базе данных (MIB) по пути (см. п.2.3.4):

iso. org. dod. internet. mgmt. mib. interfaces. ifTable. IfEntry. IfOperStatus

1. 3. 6. 1. 2. 1. 2. 2. 1. 8.1

2b 06 01 02 01 02 02 01 09 01

(V=OID),

- содержимое первой переменной (OID), которое в цифро-точечной нотации означает 1.3.6.1.2.1.1.3.0, что означает – менеджер запрашивает значение переменной, находящейся в базе данных (MIB) по пути (см. п.2.3.4):

iso. org. dod. internet. mgmt. mib. interfaces. ifTable. IfEntry. IfLastChange

1. 3. 6. 1. 2. 1. 2. 2. 1. 9.1

2b 06 01 02 01 02 02 01 0a 01

(V=OID),

- содержимое первой переменной (OID), которое в цифро-точечной нотации означает 1.3.6.1.2.1.1.3.0, что означает – менеджер запрашивает значение переменной, находящейся в базе данных (MIB) по пути (см. п.2.3.4):

iso. org. dod. internet. mgmt. mib. interfaces. ifTable. IfEntry. IfInOctets

1. 3. 6. 1. 2. 1. 2. 2. 1. 0a.1

2b 06 01 02 01 02 02 01 0b 01

(V=OID),

- содержимое первой переменной (OID), которое в цифро-точечной нотации означает 1.3.6.1.2.1.1.3.0, что означает – менеджер запрашивает значение переменной, находящейся в базе данных (MIB) по пути (см. п.2.3.4):

iso. org. dod. internet. mgmt. mib. interfaces. ifTable. IfEntry. IfInUcastPkts

1. 3. 6. 1. 2. 1. 2. 2. 1. 0b.1

2b 06 01 02 01 02 02 01 0c 01

(V=OID),

- содержимое первой переменной (OID), которое в цифро-точечной нотации означает 1.3.6.1.2.1.1.3.0, что означает – менеджер запрашивает значение переменной, находящейся в базе данных (MIB) по пути (см. п.2.3.4):

iso. org. dod. internet. mgmt. mib. interfaces. ifTable. IfEntry. IfInNUcastPkts

1. 3. 6. 1. 2. 1. 2. 2. 1. 0c.1

2b 06 01 02 01 02 02 01 0d 01

(V=OID),

- содержимое первой переменной (OID), которое в цифро-точечной нотации означает 1.3.6.1.2.1.1.3.0, что означает – менеджер запрашивает значение переменной, находящейся в базе данных (MIB) по пути (см. п.2.3.4):

iso. org. dod. internet. mgmt. mib. interfaces. ifTable. IfEntry. IfInDiscards

1. 3. 6. 1. 2. 1. 2. 2. 1. 0d.1

2b 06 01 02 01 02 02 01 0e 01

(V=OID),

- содержимое первой переменной (OID), которое в цифро-точечной нотации означает 1.3.6.1.2.1.1.3.0, что означает – менеджер запрашивает значение переменной, находящейся в базе данных (MIB) по пути (см. п.2.3.4):

iso. org. dod. internet. mgmt. mib. interfaces. ifTable. IfEntry. IfInErrors

1. 3. 6. 1. 2. 1. 2. 2. 1. 0e.1

2b 06 01 02 01 02 02 01 10 01

(V=OID),

- содержимое первой переменной (OID), которое в цифро-точечной нотации означает 1.3.6.1.2.1.1.3.0, что означает – менеджер запрашивает значение переменной, находящейся в базе данных (MIB) по пути (см. п.2.3.4):

iso. org. dod. internet. mgmt. mib. interfaces. ifTable. IfEntry. IfOutOctets

1. 3. 6. 1. 2. 1. 2. 2. 1. 10.1

2b 06 01 02 01 02 02 01 11 01

(V=OID),

- содержимое первой переменной (OID), которое в цифро-точечной нотации означает 1.3.6.1.2.1.1.3.0, что означает – менеджер запрашивает значение переменной, находящейся в базе данных (MIB) по пути (см. п.2.3.4):

iso. org. dod. internet. mgmt. mib. interfaces. ifTable. IfEntry. IfOutUcastPkts

1. 3. 6. 1. 2. 1. 2. 2. 1. 11.1

2b 06 01 02 01 02 02 01 12 01

(V=OID),

- содержимое первой переменной (OID), которое в цифро-точечной нотации означает 1.3.6.1.2.1.1.3.0, что означает – менеджер запрашивает значение переменной, находящейся в базе данных (MIB) по пути (см. п.2.3.4):

iso. org. dod. internet. mgmt. mib. interfaces. ifTable. IfEntry. IfOutUcastPkts

1. 3. 6. 1. 2. 1. 2. 2. 1. 12.1

2b 06 01 02 01 02 02 01 13 01

(V=OID),

- содержимое первой переменной (OID), которое в цифро-точечной нотации означает 1.3.6.1.2.1.1.3.0, что означает – менеджер запрашивает значение переменной, находящейся в базе данных (MIB) по пути (см. п.2.3.4):

iso. org. dod. internet. mgmt. mib. interfaces. ifTable. IfEntry. IfOutDiscards

1. 3. 6. 1. 2. 1. 2. 2. 1. 13.1

2b 06 01 02 01 02 02 01 14 01

(V=OID),

- содержимое первой переменной (OID), которое в цифро-точечной нотации означает 1.3.6.1.2.1.1.3.0, что означает – менеджер запрашивает значение переменной, находящейся в базе данных (MIB) по пути (см. п.2.3.4):

iso. org. dod. internet. mgmt. mib. interfaces. ifTable. IfEntry. IfOutErrors

1. 3. 6. 1. 2. 1. 2. 2. 1. 14.1

Единица (01’hex) в конце пути указывает на то, что запрашивается элемент массива из база данных.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: