Im einfachsten Fall wird der tag
nur in einem Oktett codiert, dargestellt in der nächsten Abbildung.
Identifier Octet
| 8 |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
| Class |
P/C |
Number |
Ein tag enthält also Informationen über die
Klasse, darüber, ob das im Value-Feld enthaltene Element eine einfaches
(atomic) oder zusammengesetztes (structured) Element ist und die Nummer
des Sub-Typs innerhalb einer Klasse.
Das Element class wird durch zwei Bit codiert und
kann die in der folgenden Tabelle dargestellten Werte annehmen.
Codierung des class Elements
|
Class |
Bit 8 |
Bit 7 |
| Universal |
0 |
0 |
| Application |
0 |
1 |
| Context-specific |
1 |
0 |
| Private |
1 |
1 |
Die Klasse UNIVERSAL ist dabei
für Typen reserviert, die im ASN.1-Standard definiert sind und damit
universelle Gültigkeit besitzen. Typen der Klasse APPLICATION sind nur
für eine Anwendung gültig, für eigene Spezifikationen kann man Typen
der Klasse PRIVATE definieren. Kontext-spezifische Typen unterliegen
keinerlei Einschränkungen, ihre Bedeutung geht, wie es der Name bereits
sagt, aus dem Kontext hervor.
Bit Nr. 6 (P/C) wird bezeichnet als primitive/constructed
Bit, d.h. dieses Bit gibt an, ob der Value-Teil der codierten Struktur
wiederum TLV-Elemente enthält (z.B. eine SEQUENCE) oder nur ein einfaches
Element. Im ersten Fall wird Bit 6 auf "1", im zweiten
Fall auf "0" gesetzt.
Die Bits 5 bis 1 codieren den Sub-Typ des Elements,
dabei stehen die Werte bis 30 zur Verfügung, der Wert 31 dient als
Escape-Sequenz für größere tag-Werte.
UNIVERSAL Class Tags
(Auswahl)
| UNIVERSAL 0 |
End of Content (EOC) |
| UNIVERSAL 1 |
Boolean type |
| UNIVERSAL 2 |
Integer type |
| UNIVERSAL 3 |
Bit-string type |
| UNIVERSAL 4 |
Octet-string type |
| UNIVERSAL 6 |
Object identifier type |
| UNIVERSAL 16 |
Sequence and Sequence-of types |
| UNIVERSAL 17 |
Set and Set-of types |
| UNIVERSAL 31 |
ContinuedNumber type |
Falls der Wert eines tags
größer ist als 30 dann sind im ersten Okett Bit 5 bis 1 auf
"1" gesetzt. In den nachfolgenden Oktetts ist das MSB dann auf
"1" gesetzt, wenn noch weitere Oktett folgen. Dieser Fall ist
dargestellt in der folgenden Abbildung.

Der Length-Teil
In den BER existieren drei verschiedene Formen der
Längencodierung, die Kurzform, die Langform und die unbestimmte Form.
Kurzform
Die kurze Form der Längencodierung besteht aus einem
Oktett, wobei das MSB auf "0" gesetzt ist und die Bits 7 bis 1
die Länge der Daten in Value-Feld bestimmen; demzufolge ist es möglich,
in der Kurzform maximal 127 Byte Daten im Value-Feld zu transportieren.

Langform
In der Langform ist das MSB auf "1" gesetzt,
Bit 7 bis 1 codieren die Anzahl der nachfolgenden Oktett, die insgesamt
die Anzahl der Oktett im Value-Feld bestimmen.

Das Element N ist dabei begrenzt auf einen maximalen
Wert von 126, der Wert 127 ist reserviert für zukünftige Erweiterungen.
Die Langform sollte für die meisten Zwecke vollkommen ausreichen, wenn
N=126 dann stehen insgesamt 1008 Bit zur Codierung der Länge zur
Verfügung, d.h. die Anzahl an Oktett kann maximal 2.74306*E303 betragen,
eine Zahl größer als die Anzahl der Sterne in unserer Galaxy. Wollte man
das längstmögliche Value-Feld über eine Leitung übermitteln, die mit
einer Übertragungsgeschwindigkeit von einem Tera-Bit/Sekunde arbeitet,
dann würde die Übermittlung ca. 100 Millionen Jahre dauern. Man sieht
also, die Langform bietet ausreichend Codierungsmöglichkeiten.
Die unbestimmte Form
Wozu gibt es noch die unbestimmte Form, wo doch die
Kurz- und die Langform eigentlich ausreichend Codierungsmöglichkeiten
bieten? Der Vorteil der unbestimmten Form liegt darin, daß der Sender zu
Beginn der Codierung/ Übertagung nicht die genaue Länge der zu
übertragenden Elemente wissen muß, d.h. die Übertragung kann beginnen
obwohl noch nicht alle Daten vorhanden oder gezählt worden sind. Dabei
ist zu beachten, daß die unbestimmte Form nur genutzt werden darf, wenn
das Value-Feld wieder TLV Elemente enthält (also z.B. für eine SEQUENCE).
Im Falle der unbestimmten Form ist das MSB des ersten
Oktett auf "1" gesetzt und Bit 7 bis 1 auf "0". Die
Codierung des MSB entspricht der Langform, eine Länge von Null ergibt
aber keinen Sinn, deshalb ist die Zuordnung zur unbestimmten Form
eindeutig. Diesem ersten Oktett folgen dann die kompletten TLV-Codierungen
der einzelnen Elemente; abgeschlossen durch einen Delimiter, zwei zu Null
gesetzten Oktett, dargestellt in Abbildung-4.

Der Value-Teil
Der Value-Teil enthält den eigentlichen Wert des
Elements, dies läßt sich wahrscheinlich am besten mit verschiedenen
Beispielen erläutern, die auf der nächsten Seite
folgen.