8. Serialization using the Basic Encoding Rules (Serialisierung unter Verwendung der grundlegenden Codierungsregeln)
8. Serialization using the Basic Encoding Rules (Serialisierung unter Verwendung der grundlegenden Codierungsregeln)
Wenn eine SNMP-Entität eine SNMP-Nachricht serialisiert, verwendet sie die grundlegenden Codierungsregeln (Basic Encoding Rules, BER) von ASN.1 [BER] mit den folgenden Einschränkungen:
-
Beim Codieren des Längenfelds wird nur die definierte Form verwendet. Die Verwendung der undefinierten Form ist verboten.
-
Beim Codieren eines Werts vom Typ INTEGER gilt die Einschränkung, dass der Wert im Bereich von -2^31 bis 2^31-1 einschließlich liegen muss.
-
Beim Codieren des Werts eines Typs Counter32, Counter64 oder Gauge32 werden nur nicht-negative Werte verwendet. Der Wert wird als INTEGER codiert, aber die Einschränkung in Punkt 2 gilt nicht.
-
Beim Codieren eines Werts vom Typ TimeTicks gilt die Einschränkung, dass der Wert im Bereich von 0 bis 2^32-1 einschließlich liegen muss.
-
Beim Codieren eines OCTET STRING wird der Wert unter Verwendung der primitiven Methode mit definierter Länge codiert.
Die BER sind sehr nachsichtig in Bezug auf die Codierungen, die sie akzeptieren. Beispielsweise werden beim Decodieren des Längenfelds sowohl die definierte Form als auch die undefinierte Form akzeptiert. Im Interesse der Protokollsimplizität und der einfachen Implementierung MÜSSEN alle SNMP-Implementierungen beim Codieren von Werten die in den Punkten 1 bis 5 oben definierten Einschränkungen befolgen. Dies stellt sicher, dass alle Empfänger Werte decodieren können.
Beim Decodieren von Werten SOLLTE eine SNMP-Implementierung jedoch Werte akzeptieren, die nicht den oben genannten Einschränkungen entsprechen. Im Falle einer nicht konformen Codierung sollte die SNMP-Implementierung den Wert so gut wie möglich interpretieren und mit der Nachricht fortfahren.