Computerpartner

  
Sie befinden sich hier: HOMENachrichtenKnow HowIT-Grundlagen
23.05.2017

Abstract Syntax Notation

Das Dokument unter dem Titel "Structure and Identification of Management Information" (SMI) definiert, dass alle Management Information Base Variablen in der von der Internationalen Standard Organisation (ISO) definierten Abstract Syntax Notation beschrieben werden müssen. Als Abkürzung für die Abstract Syntax Notation wird das Kürzel "ASN.1" (sprich: A-S-N dot one) verwendet; von Mathias Hein *)

M. Hein

Die Abstract Syntax Notation wurde von der ISO im Laufe der achtziger Jahre entwickelt und in folgenden Publikationen veröffentlicht:

  • ISO IS 8824 "Specification of Abstract Syntax Notation One (ASN.1)", International Organization for Standardization.

  • ISO IS 8825 "Specification of Basic Encoding Rules for Abstract Notation One (ASN.1)", International Organization for Standardization.

Die ASN.1 wird heute fast immer in einem Atemzug mit den ISO Kommunikationsprotokollen genannt. Die Zielsetzung der ISO zielte jedoch auf einen sehr viel allgemeineren Anwendungsfall. ASN.1 ist ein Beschreibungsmittel ("Sprache") zum Aufbau von komplexen Datenstrukturen und Informationsgebilden. Vereinfacht ausgedrückt, dient die Abstract Syntax Notation zur allgemeingültigen, herstellerübergreifenden, hardwareunabhängigen und betriebsunabhängigen Beschreibung von Daten. In der Fachsprache werden die zu administrierenden Daten als "Objekte" (Object Type) bezeichnet. Diese Daten Objekte werden durch Namen und Attribute charakterisiert. Die Namen werden zur eindeutigen Identifizierung der zu managenden Daten benutzt. Die durch das SMI festgelegte Struktur ist hierarchisch und  baumförmig aufgebaut.

ASN.1 Regeln

Die Abstract Syntax Notation One definiert einige Regeln, die zum Verständnis des Simple Network Management Protokolls (SNMP) unbedingt notwendig sind.

  • Der Standard beschreibt eine Vielzahl von definierten ASN.1 Typen
  • Die Namen der ASN.1 Typen beginnen immer mit einem Großbuchstaben
  • Bestimmte reservierte Schlüsselworte werden komplett in Großbuchstaben dargestellt. Diesen Schlüsselworten kommt innerhalb des Standards eine spezielle Bedeutung zu.
  • Bestimmte Namen beginnen mit Kleinbuchstaben. diese Namen werden nur eingefügt um den Leser beim Verständnis der ASN.1 Notation zu unterstützen.

Templates

Die SMI legt für jedes zu managende Objekt den alle Attribute in Form von Datensätzen (Templates) fest. Diese Template bestehen aus den folgenden fünf Komponenten: Dem Object Descriptor, der Syntax, der Definition, der Zugriffsberechtigung und dem Status des betreffenden Objekts. Die Syntax des Objekt Templates definiert die ASN.1 Codierung des Objektes (Integer, Octet String, NULL, Network Address, IP Address, Counter, Gauge, TimeTicks, Opaque)

Beispiel: Interface Type Template

Objekt: ifType OBJECT-TYPE

Syntax: INTEGER {

other(1),

regular1822(2),

hdh1822(3),

ddn-x25(4),

rfc877-x25(5),

ethernet-csmacd(6),

iso88023-csmacd(7),

iso88024-tokenBus(8),

iso88025-tokenRing(9),

iso88026-man(10),

starLan(11),

proteon-10Mbit(12),

proteon-80Mbit(13),

hyperchannel(14),

fddi(15),

lapb(16),

sdlc(17),

ds1(18),

e1(19),

basicISDN(20),

primaryISDN(21),

propPointToPointSerial(22),

ppp(23),

softwareLoopback(24),

eon(25),

ethernet-3Mbit(26),

nsip(27),

slip(28),

ultra(29)

ds3(30),

sip(31),

frame-relay(32)

}

 

Definition: "Der Interface Typ unterscheidet zwischen den einzelnen physikalischen Protokollen auf dem Data Link Layer.

ACCESS: read-only

STATUS: mandatory

::= { ifEntry 3 }

 

Primitive Types

Die Syntax eines Objekt Typs definiert die abstrakte Datenstruktur für den jeweiligen Objekt Typ. Aus der Vielzahl der durch die Abstract Notation One (ASN.1) Spezifikation möglichen Objekt Typen wurden nur ein Subset dieser Typen als sogenannte primitive Application-wide Types zur Definition der SNMP MIB benutzt. Die primitive Application-wide Typen werden manchmal auch als die "non-aggregate" Typen bezeichnet. Die folgenden primitive Types wurden festgelegt: INTEGER, NULL, OBJECT IDENTIFIER und OCTET STRING.

 

INTEGER Typ

Als Basistyp zur Darstellung von Zahlen wurde bei der ASN.1 der Integer Typ definiert. Mit einem Integer lassen sich alle Zahlen bestehend aus folgenden Ziffern: 0, 1, 2, 3, 4, 5, 6, 7, 8 und 9 beschreiben. Als Ausnahme gilt, dass die Ziffer 0 nur in Kombination mit anderen Ziffern zulässig ist und nie für sich allein auftreten darf.

Beispiel: INTEGER Typ

OBJECT: tcpConnState { tcpConnEntry 1 }

Syntax: INTEGER {

closed(1),

listen(2),

synSent(3),

synReceived(4),

established(5),

finWait1(6),

finWait2(7),

closeWait(8),

lastAck(9),

closing(10),

timeWait(11)

}

 

Definition: Status der TCP Verbindung

Access: read-only.

Status: mandatory

 

Der TcpConnState Objekt-Typ definiert den Zustand einer TCP Verbindung. Folgende Werte für den TCP Connection State Objekt Typ wurden festgelegt: Closed (1), Listen (2), SynSent (3), SynReceived (4), Established (5), FinWait1 (6), FinWait2 (7), CloseWait (8), LastAck (9), Closing (10), TimeWait (11) und DeleteTCB (12). Durch das Abfragen eines des Integerwertes des TcpConnState Objekt-Typ kann der Zustand einer TCP Verbindung überwacht werden.

 

NULL Typ

Der Null Typ dient bei der Abstract Syntax Notation One zur Kennzeichnung, daß die Information interessant ist, jedoch nicht der eventuell darin enthaltene Wert.

 

Objekt Identifier Typ

Der Objekt Identifier dient bei der Abstract Syntax Notation One zur Beschreibung von abstrakten Informationsobjekten. Im Management MIB Tree (Object Identifier tree) wird jeder Knoten durch einen Objekt Identifikator gekennzeichnet. Da die einzelnen Zweige des Baumes durch Zahlen repräsentiert werden, ist ein Objekt Identifikator praktisch eine Folge von Integer-Zahlen.

 

Beispiel OBJECT IDENTIFIER Typ:

 

mib-2 OBJECT IDENTIFIER ::= { mgmt 1 }

            system           OBJECT IDENTIFIER ::= { mib-2 1 }

            interfaces       OBJECT IDENTIFIER ::= { mib-2 2 }

            at                    OBJECT IDENTIFIER ::= { mib-2 3 }

            ip                    OBJECT IDENTIFIER ::= { mib-2 4 }

            icmp               OBJECT IDENTIFIER ::= { mib-2 5 }

            tcp                  OBJECT IDENTIFIER ::= { mib-2 6 }

            udp                OBJECT IDENTIFIER ::= { mib-2 7 }

            egp                 OBJECT IDENTIFIER ::= { mib-2 8 }

            cmot               OBJECT IDENTIFIER ::= { mib-2 9 }

            transmission OBJECT IDENTIFIER ::= { mib-2 10 }

            snmp              OBJECT IDENTIFIER ::= { mib-2 11 }

 

Der OBJECT IDENTIFIER für die MIB 2 ist im Object Identifier Tree wie Folgt angesiedelt: ISO (1) - Organistation (3) - Department of Defence (6) - Internet (1) - Management (2) - MIB 2 (1). Darunter befinden sich die einzelnen MIB 2 Untergruppen (System (1), Interfaces (2), AT (3), IP (4), ICMP (5), TCP (6), UDP (7), EGP (8), CMOT (9), Transmission (10) SNMP (11). Aus den einzelnen Zahlen (Sequenzen) der einzelnen Zweige im Baum ergibt sich für den SNMP OBJECT IDENTIFIER der Wert 1.3.6.1.2.1.11.

 

OCTET STRING Typ

Als Typ zur Darstellung von Textinformationen wurde bei der Abstract Syntax Notation One der Octett String Typ definiert. Ein Oktett entspricht immer einer Folge von 8 Bits und enthält alle Zeichen die im NVT ASCII Character Set (0-255 dezimal) enthalten sind. Die im SNMP Protokoll verwendeten OCTET STRING Typen sind der DisplayString und die PhysAddress.

 

DisplayString ::=

OCTET STRING

 

PhysAddress ::=

OCTET STRING

 

Beispiel DisplayString:

Im folgenden Beispiel wird mit dem System Descriptor die Hardware und Software des jeweiligen Gerätes durch einen OCTET STRING dargestellt.

 

sysDescr OBJECT-TYPE

SYNTAX  DisplayString (SIZE (0..255))

ACCESS  read-only

STATUS  mandatory

DESCRIPTION

"Enthält einen Text der den kompletten Namen, die jeweilige Version der eingesetzten Hardware, des Betriebssystems und der Netzwerk Software beschreibt."

::= { system 1 }

 

Beispiel PhysAddress:

Im folgenden Beispiel wird die physikalische Adresse der verwendeten Netzwerk Komponente dargestellt.

 

ifPhysAddress OBJECT-TYPE

SYNTAX  PhysAddress

ACCESS  read-only

STATUS  mandatory

DESCRIPTION

"Die Interface Adresse repräsentiert die Adresse des Protokoll Layers der direkt unterhalb des Netzwerk Layers eingesetzt wird."

::= { ifEntry 6 }

 

Zusammengesetzte Typen

Um Listen und Tabellen zu erstellen werden die zusammengesetzten Typen (Constructor Types) beim ASN.1 verwendet. Beim SNMP Protokoll werden dazu die SEQUENCE und die SEQUENCE OF verwendet

 

SEQUENCE

Der Constructor Type SEQUENCE ermöglicht eine Aneinanderreihung von einfachen Typen. Das SNMP Protokoll erlaubt nicht die Benutzung von DEFAULT und OPTIONAL Werten innerhalb einer SEQUENCE Definition. Die Syntax der SEQUENCE ist wie folgt aufgebaut, wobei der Type einen gültigen ASN.1 Typ darstellt:

SEQUENCE { , ..., }

 

Beispiel:

ifEntry OBJECT: { ifTable 1 }

Syntax: IfEntry ::= SEQUENCE {

ifIndex

INTEGER,

ifDescr

OCTET STRING,

ifType

INTEGER,

ifMtu

INTEGER,

ifSpeed

Gauge,

ifPhysAddress

OCTET STRING,

ifAdminStatus

INTEGER,

ifOperStatus

INTEGER,

ifLastChange

TimeTicks,

ifInOctets

Counter,

ifInUcastPkts

Counter,

ifInNUcastPkts

Counter,

ifInDiscards

Counter,

ifInErrors

Counter,

ifInUnknownProtos

Counter,

ifOutOctets

Counter,

ifOutUcastPkts

Counter,

ifOutNUcastPkts

Counter,

ifOutDiscards

Counter,

ifOutErrors

Counter,

ifOutQLen

Gauge

}

Zugriff: read-write.

Status: mandatory.

 

 SEQUENCE OF

Tabellen stellen eine abstrakte Datenstruktur dar, die aus einer Reihenfolge von Komponenten bestehen. Die Syntax der SEQUENCE OF ist wie folgt aufgebaut, wobei mit Entry die Bezeichnung der Liste darstellt wird:

 

SEQUENCE OF

 

Beispiel: atTable

In der Address Translation Tabelle (atTable) werden alle IP Adressen mit der zugehörigen Hardware Adresse dargestellt.

 

atTable OBJECT-TYPE

SYNTAX  SEQUENCE OF AtEntry

ACCESS  not-accessible

STATUS  deprecated

DESCRIPTION

"In der Address Translation Tabelle sind alle Netzwerkadressen zu denen eine physikalische Adresse gemapped wurde enthalten."

::= { at 1 }

 

atEntry OBJECT-TYPE

SYNTAX  AtEntry

ACCESS  not-accessible

STATUS  deprecated

DESCRIPTION

"Jede Reihe enhält die der jeweiligen Netzwerk Adresse zugeordnete physikalische Adresse."

INDEX   { atIfIndex,

atNetAddress }

::= { atTable 1 }

 

AtEntry ::=

SEQUENCE {

atIfIndex

INTEGER,

atPhysAddress

PhysAddress,

atNetAddress

NetworkAddress

}

 

Aus den Basis Typen (INTEGER, NULL, OBJECT IDENTIFIER und OCTET STRING) können weitere Typen durch Aufzählungen und Konstruktionen (Tabellen, Listen) erstellt werden. Als bekannteste Beispiele für zusammengesetzte Typen werden die folgenden Kostruktionen verwendet: die Network Address, die IP Address, die Counter, die Gauge, die TimeTicks und die Opaque.

 

NetworkAddress

Der NetworkAddress Typ ermöglicht eine Auswahl der verschiedensten in der Netzwerkwelt verfügbaren Netzwerkadressformaten. Im Moment wird nur die Internetprotokoll-Familie (TCP/IP) unterstützt.

 

Beispiel:

atNetAddress OBJECT-TYPE

SYNTAX  NetworkAddress

ACCESS  read-write

STATUS  deprecated

DESCRIPTION

"Enhält die Netzwerk Adresse die einer physikalischen Adresse zugeordnet ist."

::= { atEntry 3 }

 

IPAddress

Die 32 Bit lange Internet Protokoll (IP) Adresse wird durch einen OCTET STRING mit einer Länge von 4 dargestellt.

 

Beispiel:

ipAdEntAddr OBJECT-TYPE

SYNTAX  IpAddress

ACCESS  read-only

STATUS  mandatory

DESCRIPTION

"Enthält die IP-Adresse des Eintrags in der ipAddrEntry Objekt Tabelle."

::= { ipAddrEntry 1 }

 

Counter

Der Counter Typ repräsentiert einen nicht negativer Zähler, der nur hochzählt. Sein Wertebereich ist von 0 bis 4294967295 (232-1) definiert. Nach einem Überlauf (Wrap-around) beginnt der Zähler erneut bei dem Wert 0 mit dem zählen.

 

Beispiel:

icmpInMsgs OBJECT-TYPE

SYNTAX  Counter

ACCESS  read-only

STATUS  mandatory

DESCRIPTION

"Dieser Zähler stellt alle bisher empfangenen ICMP Pakete dar."

::= { icmp 1 }

 

Gauge

Der Gauge Typ repräsentiert einen nicht negativer Zähler, der sowohl inkrementiert als auch dekrementiert werden kann. Sein Wertebereich ist von = bis 4294967295 (232-1) definiert. Der Gauge Zähler verfügt über keinen Überlauf (Wrap-around), nach erreichen des Höchstwerts bleibt der Zähler stehen.

 

 

Beispiel:

tcpCurrEstab OBJECT-TYPE

SYNTAX  Gauge

ACCESS  read-only

STATUS  mandatory

DESCRIPTION

"Anzahl der TCP Connections die sich in folgenden Zuständen befinden: ESTABLISHED oder CLOSE-­WAIT."

::= { tcp 9 }

 

TimeTicks

Der TimeTicks Typ repräsentiert einen nicht negativer Zähler, der die Zeit in 1/100-Sekunden seit dem Start oder Ereignis zählt.

 

Beispiel:

sysUpTime OBJECT-TYPE

SYNTAX  TimeTicks

ACCESS  read-only

STATUS  mandatory

DESCRIPTION

"Definiert die Zeit (in 1/100 Sekunden) seit der letzten Reinitialisierung der Netzwerk Management Software."

::= { system 3 }

 

Opaque

Der Opaque Typ wurde als Pseudo-Datentyp eingeführt, um etwaige Einschränkungen der restriktiven Definition der SMI zu umgehen. Ein Opaque Typ ermöglicht die Definition von beliebigen ASN.1-Konstruktionen.

 

Encoding

Alle Object Typen werden beim SNMP Protokoll gemäß den von der Internationalen Standard Organisation (ISO) im Standard ISO 8824 veröffentlichten  "Specification of Basic Encoding Rules for Abstract Notation One (ASN.1)" codiert. Die ASN.1 Daten werden, wie in den Basic Encoding Rules (BER) festgelegt, immer mit dem "most significant Bit", also dem Bit der höchsten Ordnung,  als ersten Wert auf das Datennetz übertragen. Wie in Bild x (Bit Ordering) werden die Bits 8 - 1 immer von links nach rechts fortlaufend auf die nächst tiefere Protokollschicht übermittelt. Das Bit 8 ist somit das Bit der höchsten Ordnung, Bit 1 das Bit der niedrigsten Ordnung. Dem Empfänger dieser Protokollmessage wird dementsprechend Bit 8 -1 als serieller Datenstrom übergeben. Alle anderen Darstellungen der Daten, z.B. das Bit der höchsten Ordnung am rechten Ende des Oktetts (Bit 1) sind ungültig.

 

8

7

6

5

4

3

2

1

 Bit Ordering

 

Im Gegensatz zu den meisten TCP/IP Protokollen bestehen die SNMP Messages nicht aus einem festen Headerformat. Gemäß den Basic Encoding Rules (BER) des ASN.1 wird beim SNMP jeder Datentyp in die folgenden drei Felder aufgegliedert: einen Tag Feld, einem Längenfeld und einem Datenfeld.

 

Tag Feld

Längenfeld

Datenfeld

 Die drei ASN.1 Werte-Felder

 

Das Tag Feld

Mit dem Tag Feld wird der ASN.1 Typ festgelegt. Dieses Feld wird in der Fachliteratur deshalb auch oft als das Bezeichnerfeld benannt. Das Tag Feld aller im SNMP Protokoll verwendeten Typen unterteilt sich in die folgenden Bestandteile: das Klasse Feld, das Format Bit und das TAG Nummern Feld.

 


7

6

5

4

3

2

1

Klasse

F

Tag Nummer

 Das Tag Feld

 

Klasse

Die ersten zwei Bits höchster Ordnung (Bit 8 und Bit 7) im TAG Feld beschreiben die Klasse des nachfolgenden Tagwertes. Folgende Tagklassen wurden festgelegt: Universal, Application, Context specific und Private.

 

Bit 8

Bit 7

Klasse

0

0

Universal

0

1

Applikations spezifisch

1

0

Kontext spezifisch

1

1

Privat

 Einteilung der Tag Klassen

 

Universal

Das Universal Tag Feld definiert alle universell einsetzbaren und von der ASN.1 festgelegten (well known) Daten Typen. Die folgenden Universal Tags wurden bisher festgelegt:

 

Wert

Beschreibung

1

Boolean

2

Integer

3

Bit String

4

Oktett String

5

Null

6

Object Identifier

7

Object Descriptor

8

External

9

Real

10

Enumerated

11

Reserviert

12

Reserviert

13

Reserviert

14

Reserviert

15

Reserviert

16

Sequence und Sequence of

17

Set und Set of

18

Numeric String

19

Printable String

20

Teletex String

21

Videotex String

22

IA5 String

23

UTC Time

24

Generalized Type

25

Graphics String

26

Visible String

27

General String

28

Character String

29-..

Reserviert für Erweiterungen

 

Application specific

Die Application specific Tags ermöglichen die Erweiterung der Universal Tags für eine bestimmte Applikation oder einen bestimmten Standard. Ein Application specific Tag muss in diesem bestimmten Standard/Applikation eindeutig definiert sein und nur einem Typ zugeordnet werden.

 

Context specific

Die Context specific Tags ermöglichen die Einführung von spezifischen Tags die nur in dem Zusammenhang in dem sie definiert wurden, interpretiert werden können.


Private

Die Private Tags ermöglicht die benutzerspezifische Einführung von eigenen Tags.

 

Beim SNMP Protokoll werden nur der Einsatz von Universal Tags und Application specific Tags erlaubt.

 

Das Format Bit

Das Bit 6 im Tag Feld wird als das Format Bit (F-Bit) bezeichnet.

Das F-Bit unterscheidet zwischen einer primitiven Codierung oder einer zusammengesetzten Codierung der nachfolgenden Tag Nummer. Im Falle einer primitiven Codierung wird das F-Bit immer auf den Wert = 0 gesetzt. Bei einer zusammengesetzten Codierung der nachfolgenden Tag Nummer wird das F-Bit immer auf den Wert = 1 gesetzt.

 

Wert

Bedeutung

0

primitiv

1

zusammengesetzt

 

Tag Nummern Feld

Im Tag Nummern Feld (Bit 5-1) werden die Tag Nummern als binäre Zahlen dargestellt. Das Nummern Feld wird immer von links nach rechts beginnend mit dem "most significant Bit" (Bit 5) abwärts zum "least significant Bit" (Bit 1) codiert. Da in diesen 5 Bits nur die Werte von 0-31 dargestellt werden können wurde der binäre Wert 11111 zur Kennzeichnung größerer Tag Wertenummern reserviert. Deshalb können in den 5 Bits in der Realität nur von 0-30 dargestellt werden. Alle größeren Tagnummern werden in den nachfolgenden Datenoktetts repräsentiert. In einem solchen Fall wird das "most significant Bit" (Bit 8) immer auf den Wert 1 gesetzt. Die Ausnahme bildet das letzte Oktett, bei dem das das "most significant Bit" (Bit 8) auf den Wert 0 gesetzt wird.

 

1. Oktett

2. Oktett

Klasse

F

1

1

1

1

1

0

Tag Nummer










Das verlängerte Tag Feld

 

Das Längenfeld

Zur Übermittlung von Informationen werden beim ASN.1 zwei verschiedene Arten von Längenfelder verwendet. Die beiden Arten werden als die "definite Form" und die "undefinite Form" bezeichnet. Das Simple Network Management ermöglicht nur die Verwendung der "definite Form". Bei der festen Form können ein oder mehrere Oktetts die Anzahl der Datenoktetts im nachfolgenden Informationsfeld festlegen. Das sogenannten high order Bit im ersten Oktett des Längenfeld dient zur Unterscheidung zwischen einem 1 Oktett- oder einem Multi-Oktett-Längenfeld.

 

Das 1 Oktett Längenfeld

Die Anzahl der Datenoktetts im nachfolgenden Informationsfeld kann in einem 1 Oktett Längenfeld festgelegt werden, wenn die Informationen im Informationsfeld (Bit 1 - 7) zwischen 0 und 127 Oktett lang ist. Die 1 Oktett Länge wird in der Literatur auch oft als Short Form bezeichnet. Das High order Bit im ersten Oktett des Längenfeld wird bei der Short Form immer auf den Wert 0 gesetzt.

 

8

7

6

5

4

3

2

1

0

Länge

1 Oktett Längenfeld

 

Multi-Oktett-Längenfeld

Für den Fall, dass die Anzahl der Datenoktetts im nachfolgenden Informationsfeld die Menge von 127 Oktetts übersteigt, werden zur Darstellung der Länge mehrere Oktetts zur Längenfeldcodierung verwendet. Das Multi-Oktett-Längenfeld wird in der Literatur auch oft als Long Form bezeichnet. Das High order Bit im ersten Oktett des Längenfeld wird bei der Long Form immer auf den Wert 1 gesetzt. Alle weiteren Bits im ersten Oktett (Bit 1 - 7) definieren die Anzahl (in binärer Form) der nachfolgenden Längenoktetts. Das Multi-Oktett-Längenfeld wurde beim SNMP Protokoll auf die maximale Länge von 3 Oktett begrenzt, da das IP Protokoll nur Datagramme von maximal 65535 Daten Oktetts verarbeiten kann.

 

8

7

6

5

4

3

2

1

(variabel)

1

Längendefinition

Längen Oktetts

Multi-Oktett-Längenfeld

 

Das Datenfeld

Im Datenfeld werden die einzelnen Funktionen des ASN.1 kodiert.

Das SNMP Protokoll erlaubt nur die Verwendung folgender primitiver Typen: INTEGER, NULL, OBJECT IDENTIFIER, OCTET STRING, SEQUENCE und SEQUENCE OF.

 

Integer

Als Basistyp zur Darstellung von Zahlen wurde bei der Abstract Syntax Notation One der Integer Typ definiert. Mit einem Integer lassen sich alle Zahlen bestehend aus folgenden Ziffern: 0, 1, 2, 3, 4, 5, 6, 7, 8 und 9 beschreiben. Beim SNMP gilt als Ausnahme, dass die Ziffer 0 nur in Kombination mit anderen Ziffern zulässig ist und nie für sich allein auftreten darf.


Codierung von Integer Werten

Beispiel: Wert 221 (DD hexadezimal)

 

Integer           Länge             Wert

<02>               <01>              

 

Tag

Länge

Inhalt

0

0

0

0

0

0

1

0

0

0

0

0

0

0

0

1

1

1

0

1

1

1

0

1

0

 

2

01

DD

























Codierung von Integer Werten

 

Null

Der Null Typ dient bei der Abstract Syntax Notation One zur Kennzeichnung, daß die Information interessant ist, jedoch nicht der eventuell darin enthaltene Wert.

 

Codierung von Null Werten

Hexadezimal: 05 00

 

Null    Länge

<05>   <00>

 

Klasse

F

Nummer

Längenfeld

0

0

0

0

0

1

1

0

0

0

0

0

0

0

0

0

0

 

5

00

















Codierung eines Nullwertes

 

Oktett Strings

OCTET STRING Typ

Als Typ zur Darstellung von Dateninhalten (z.B Texten) wurde bei der Abstract Syntax Notation One der Octett String Typ definiert. Ein Oktett entspricht immer einer Folge von 8 Bits.

 

Codierung von Oktett Strings

Beispiel: Chaos & Desaster

 

Oktett String             Länge             Wert

 

<04>                          <10>               <43> <68>

                                                           <61> <6F> <73> <00>

                       <26> <00> <44> <65>

                       <73> <61> <73> <74>

                       <65> <72>

Tag

Länge

C

h

0

0

0

0

0

1

0

0

0

0

0

1

0

0

0

0

0

1

0

0

0

0

1

1

0

1

1

0

1

0

0

0

0

 

4

10

43

68

a

o

s

(Blank)

0

1

1

0

0

0

0

1

0

1

1

0

1

1

1

1

0

1

1

1

0

0

1

1

0

0

0

0

0

0

0

0

61

6F

73

00

&

(Blank)

D

e

0

0

1

0

0

1

1

1

0

0

0

0

0

0

0

0

0

1

0

0

0

1

0

0

0

1

1

0

0

1

0

1

26

00

44

65

s

a

s

t

0

1

1

1

0

0

1

1

0

1

1

0

0

0

0

1

0

1

1

1

0

0

1

1

0

1

1

1

1

0

0

0

73

61

73

74

e

r

 

0

1

1

0

0

1

0

1

0

1

1

1

0

0

1

0

 

65

72

 

 Codierung eines Oktettstrings

 

OBJECT IDENTIFIER Typ

Der OBJECT IDENTIFIER dient bei der Abstract Syntax Notation One zur Beschreibung von abstrakten Informationsobjekten. Im Management MIB Tree (Object Identifier tree) wird jeder Knoten durch einen OBJECT IDENTIFIER gekennzeichnet. Da die einzelnen Zweige des Baumes durch Zahlen repräsentiert werden, ist ein OBJECT IDENTIFIER praktisch eine Folge von Integer-Zahlen. Ein OBJECT IDENTIFIER wird immer als in primitiver Form dargestellt und enthält ein oder mehrere Datenoktetts. Die Codierung eines Object Identifikatoren erfolgt immer als primitiver Wert, dessen Inhaltswert setzt sich aus einer geordneten Liste der Codierungen zusammen. Da die Werte immer anhand des Object Identifikator Baums dargestellt sind, muss deren Reihenfolge immer genau eingehalten werden. Für die der Wurzel folgenden Objekt Identifikatoren wird auch der Begriff Unterbezeichner verwendet. Die Reihenfolge der Unterbezeichner muss strikt eingehalten werden. Jeder Unterbezeichner wird durch eine Folge von einem oder mehreren Oktetten repräsentiert. Das Bit 8 in jedem Oktettes legt fest, ob es sich bei dem aktuellen Oktett um das letzte Oktett in der Folge handelt. Besitzt Bit 8 den Wert 0, so wird dadurch signalisiert, dass dies das abschließende Oktett ist. Ansonsten folgen weitere Oktette, die den Objektbezeichner-Wert verschlüsseln. Die aneinandergereihte Folge der Bits 7 bis 1 aller Oktette kodieren die Werte der Unterbezeichner. Diese Bits werden als binäre Zahl interpretiert, wobei Bit 7 des ersten Oktettes den höchsten und Bit 1 des letzten Oktetts den niedrigsten Wert führt. Die Unterbezeichner sind in der minimal möglichen Anzahl von Oktetts zu verschlüsseln, d.h. das führende Oktett eines Unterbezeichners darf nicht den Wert <08> führen. Der numerische Wert des ersten Unterbezeichners wird von den Werten der beiden ersten Objektbezeichner-Komponenten abgeleitet. Dabei wird folgende Berechnungsformel verwendet:

 

(X * 40) + Y

 

Der Wert X ist der aktuelle Wert der ersten Objektbezeichner-Komponente, d.h. 0 für ccitt, 1 für iso und 2 für joint-iso-ccitt. Für den Wert Y muss der Wert der zweiten Objektbezeichner-Komponente eingesetzt werden. Daraus ergibt sich in der Praxis, dass die Anzahl der Subbezeichner um genau einen Zahlenwert kleiner ist als die Anzahl der Objektbezeichner-Komponenten.

 

Für den Standardwert der ersten Objektbezeichner-Komponente (ISO-ORG) beim SNMP Protokoll ergibt sich gemäß der obigen Formel der folgende Wert: (1 * 40) + 3 = 43 (dezimal) oder 2B (hex). 

 

Beispiel OBJECT IDENTIFIER Typ

 

mib-2             OBJECT IDENTIFIER ::= { mgmt 1 }

            system           OBJECT IDENTIFIER ::= { mib-2 1 }

                        sysDescr        OBJECT IDENTIFIER ::= { system 1 }

 

Der OBJECT IDENTIFIER für den System Descriptor ist im Object Identifier Tree wie folgt angesiedelt: ISO (1) - Organistation (3) - Department of Defence (6) - Internet (1) - Management (2) - MIB 2 (1). Als eine der Untergruppen ist die Gruppe System (1) unterhalb der MIB 2 angesiedelt. Das erste Objekt der Systemgruppe ist der sysDescr (1). Aus den einzelnen Zahlen (Sequenzen) der einzelnen Zweige im Baum ergibt sich für den SNMP OBJECT IDENTIFIER der Wert 1.3.6.1.2.1.1.1.

 

Für den sysDescr OBJECT IDENTIFIER (1.3.6.1.2.1.1.1) ergeben sich folgende Objektbezeichner-Komponenten:

 

Komponente

dezimal

hexadezimal

binär

1

43

2B

00101011

2

06

06

00000110

3

01

01

00000001

4

02

02

00000010

5

01

01

00000001

6

01

01

00000001

7

01

01

00000001

Codierung von OBJECT Identifikatoren

 

Beispiel: 1.3.6.1.2.1.1.1

 

OBJECT IDENTIFIER

TAG

Länge

Wert

<06>

<07>

<43>

<06>

 

<01>

<02>

<01> <01>

 

<01>

 

 

 

Tag

Länge

 

 

0

0

0

0

0

1

1

0

0

0

0

0

0

1

1

1

0

1

0

0

0

0

1

1

0

0

0

0

0

1

1

0

0

 

6

07

43

06

 

 

 

 

0

0

0

0

0

0

0

1

0

0

0

0

0

0

1

0

0

0

0

0

0

0

0

1

0

0

0

0

0

0

0

1

01

02

01

01

 

 

 

 

0

0

1

0

0

1

1

1

0

0

0

0

0

0