8. Serialization using the Basic Encoding Rules (Sérialisation utilisant les règles d'encodage de base)
8. Serialization using the Basic Encoding Rules (Sérialisation utilisant les règles d'encodage de base)
Lorsqu'une entité SNMP sérialise un message SNMP, elle utilise les règles d'encodage de base (Basic Encoding Rules, BER) d'ASN.1 [BER], avec les restrictions suivantes:
-
Lors de l'encodage du champ de longueur, seule la forme définie est utilisée. L'utilisation de la forme indéfinie est interdite.
-
Lors de l'encodage d'une valeur de type INTEGER, la restriction que la valeur soit dans la plage de -2^31 à 2^31-1 inclus s'applique.
-
Lors de l'encodage de la valeur d'un type Counter32, Counter64 ou Gauge32, seules les valeurs non négatives sont utilisées. La valeur est encodée comme un INTEGER, mais la restriction de l'élément 2 ne s'applique pas.
-
Lors de l'encodage d'une valeur de type TimeTicks, la restriction que la valeur soit dans la plage de 0 à 2^32-1 inclus s'applique.
-
Lors de l'encodage d'un OCTET STRING, la valeur est encodée en utilisant la méthode primitive de longueur définie.
Le BER est très indulgent en ce qui concerne les encodages qu'il acceptera. Par exemple, lors du décodage du champ de longueur, à la fois la forme définie et la forme indéfinie sont acceptées. Dans l'intérêt de la simplicité du protocole et de la facilité d'implémentation, toutes les implémentations SNMP DOIVENT suivre les restrictions définies dans les éléments 1 à 5 ci-dessus lors de l'encodage des valeurs. Cela garantit que tous les destinataires peuvent décoder les valeurs.
Cependant, lors du décodage des valeurs, une implémentation SNMP DEVRAIT accepter les valeurs qui ne sont pas conformes aux restrictions ci-dessus. Dans le cas d'un encodage non conforme, l'implémentation SNMP devrait interpréter la valeur du mieux qu'elle peut et continuer avec le message.