Опубликован: 11.08.2008 | Доступ: свободный | Студентов: 8955 / 1501 | Оценка: 4.20 / 3.78 | Длительность: 25:00:00
ISBN: 978-5-94774-884-0
Лекция 15:

Простой протокол управления сетью

Простой тип

Простой тип – это частичка типа данных, некоторые из них прямо поступают в ASN.1, некоторые дополняются SMI. Большинство важных единиц даны в таблице 15.1. Первые 5 — из ASN.1; следующие семь определены SMI.

Таблица 15.1. Тип данных
Тип Размер Описание
INTEGER 4 байта Целое со значением между 0 и 231-1
Integer 32 4 байта То же самое, что и INTEGER
Unsigned32 4 байта Значения без знака между 0 и 231
OCTET STRING Переменный Строка байтов не более 65 535 байтов длины
OBJECT IDENTIFIER Переменный Идентификатор объекта
IPAdress 4 байта IP-адрес, состоящий из четырех байтов
Counter32 4 байта Целое, значение которого может быть увеличено от 0 до 232; когда оно достигает максимального значения, оно свертывается назад в нуль
Counter64 8 байтов 64-битовый счетчик
Gauge32 4 байта Тот же самый 32-битовый счетчик (counter32), но он достигает максимального значения и не сворачивается в ноль; он остается там, пока не сбрасывается
TimeTics 4 байта Считает значение, в котором записано время в 1/100 секунды
BITS Строка бит
Opaque Переменный Неинтерпретируемая строка
Структурированный тип

Комбинируя простой и структурированный типы данных, мы можем создать новые структурированные типы данных. SMI определяет два вида структурированных типов данных: sequence (последовательности) и sequence of (последовательности из).

  • Sequence (последовательность). Тип данных sequence (последовательности) – это комбинация простых типов данных, не обязательно одного типа. Это аналог понятий struct (структура) или record (комбинированный), используемых в языках программирования, таких как C.
  • Sequence of (последовательность из). Тип данных sequence of (последовательность из) — комбинация из простых типов данных одного типа или комбинации последовательного типа данных одного типа. Это аналог понятия массив, используемого в языках программирования, таких как C.

Рисунок 15.5. показывает концептуальный обзор типов данных.

Концептуальные типы данных

Рис. 15.5. Концептуальные типы данных

Метод кодирования

SMI использует другой стандарт, основные правила кодирования (BERBasic Encoding Rules), чтобы кодировать данные, которые будут переданы по сети. BER определяет, что каждая часть данных кодируется в формате тройки: тег, длина и значение, как проиллюстрировано на рисунке 15.6.

Формат длины

Рис. 15.6. Формат длины
  • Тег. Тег – однобайтовое поле, которое определяет тип данных. Оно составлено из трех подполей: класс (2 бита), формат (1 бит), и номер (5 битов). Подполе класса определяет область действия данных. Определены четыре класса: универсальный (00), прикладной (01), контекстно-определенный (10) и частный (11). Универсальные типы данных взяты из ASN.1 (INTEGER, OCTET STRING и ObjectIdentifeir). Прикладные типы данных — те, которые добавлены SMI (IPAddress, Counter, Gauge и TimeTicks). Пять контекстно-определенных типов данных имеют значения, которые могут измениться от одного протокола к другому. Частные типы данных определяются поставщиком.

    Подполе "Формат" указывает, являются ли данные простыми (0) или структурированными (1). Далее подполе "номера" делит простые или структурированные данные на подгруппы. Например, в универсальном классе, с простым форматом, INETGER имеет значение 2, OCTET STRING имеет значение 4, и так далее. Таблица 15.2. показывает типы данных, которые мы используем в этой лекции, и их теги в двоичных и шестнадцатеричных числах.

    Таблица 15.2. Коды для типов данных
    Тип данных Класс Формат Номер Тег (двоичный) Тег (шестнад.)
    INTEGER (Целый) 00 0 00010 00000010 02
    OCTET STRING (октет последовательностей) 00 0 00100 00000100 04
    OBJECT IDENTIFIER (ИДЕНТИФИКАТОР ОБЪЕКТА) 00 0 00110 00000110 06
    NULL (ПУСТОЙ УКАЗАТЕЛЬ) 00 0 00101 00000101 05
    Последовательность, последовательность из 00 1 10000 00110000 30
    IPAddress (IP-адрес) 01 0 00000 01000000 40
    Counter (Счетчик) 01 0 00001 01000001 41
    Gauge (Шаблон) 01 0 00010 01000010 42
    TimeTicks (Сигналы времени) 01 0 00011 01000011 43
  • Длина. Поле длины – один или более байт. Если поле длины один байт, старший знаковый бит должен быть равен нулю. Другие 7 бит определяют данные. Если поле длины больше чем 1 байт, старший знаковый первого байта должен быть равным единице. Другие 7 бит первого байта определяет число байт, нужных для определения длины. Формат отображения поля длины ( Рис 15.7.):
    Формат длины

    Рис. 15.7. Формат длины
  • Значение. Поле кодирует значение данных в соответствии с правилами, определенными в правилах кодирования (например, ANSI).

Для того чтобы показать, как эти три поля — тег, длина и значение – могут определить объект, мы приведем несколько примеров.

Пример 1

Рисунок 15.8. показывает, как определяется INTEGER 14:

Пример 1 INTEGER 14

Рис. 15.8. Пример 1 INTEGER 14

Пример 2

Рисунок 15.9. показывает, как определяется OCTET STRING "H1":

Пример 2 OCTET STRING "H1"

Рис. 15.9. Пример 2 OCTET STRING "H1"

Пример 3

Рисунок 15.10. показывает, как определяется OBJECT Identifier 1.3.6.1 (iso.dod.internet):

Пример 3 ObjectIdentifier 1.3.6.1

Рис. 15.10. Пример 3 ObjectIdentifier 1.3.6.1

Пример 4

Рисунок 15.11. показывает, как определить IPAddress 131.21.14.8:

Пример 4 IPAdress 131.21.14.8

Рис. 15.11. Пример 4 IPAdress 131.21.14.8
Наталья Шульга
Наталья Шульга

Курс "информационная безопасность" .

Можно ли на него записаться на ПЕРЕПОДГОТОВКУ по данному курсу? Выдается ли диплом в бумажном варианте и высылается ли он по почте?

Мария Архипова
Мария Архипова