ASN.1
Abstract Syntax Notation One ( ASN.1 ) este un standard pentru reprezentarea datelor indiferent de mașina utilizată și formele sale de reprezentare internă. Este un protocol de nivel de prezentare în modelul OSI . Protocolul SNMP utilizează ASN.1 pentru a reprezenta obiectele sale gestionabile.
Descrierea informațiilor
ASN.1 folosește notația Backus-Naur ( BNF ) pentru a descrie modul în care sunt stocate informațiile.
Tipuri de date
Tipurile de date sunt clasificate în funcție de faptul că sunt simple (primitive), compuse (construite din altele, simple sau compuse) sau definite, cu o etichetă de nume pentru a le identifica.
Tipuri primitive
Tipurile primitive sunt scalare, adică stochează o singură valoare, cum ar fi un șir sau un întreg. Cele mai importante tipuri primitive sunt:
- Tipul INTEGER este folosit pentru a reprezenta numerele întregi .
- Tipul OCTET STRING stochează o secvență de octeți . Trei subtipuri sunt derivate din acesta:
- DisplayString (pentru șiruri de caractere ASCII )
- OctetBitString (pentru șiruri de biți mai mari de 32)
- PhysAddress (pentru a reprezenta adrese la nivel de link ).
- Tipul OBJECT IDENTIFIER pentru a reprezenta identificatorii de obiect, adică poziția unui obiect în arborele MIB .
- Tipul BOOLEAN pentru valorile care pot fi doar adevărate sau false.
- Tipul NULL pentru a reprezenta absența unei valori.
Tipuri construite
Tipurile construite sunt tipuri compozite. Sunt folosite pentru a crea matrice și tabele. Cele mai importante sunt:
- Tipul SEQUENCE este o structură de date, adică o listă ordonată de diferite tipuri de date. Este tipul folosit pentru a stoca un rând dintr-un tabel.
- Tipul SEQUENCE OF este o listă ordonată de tipuri de date egale. Este similar cu tipul „SEQUENCE”, cu excepția faptului că toate tipurile trebuie să fie aceleași. Este tipul folosit în tabele pentru a stoca toate rândurile.
- Tipul SET este echivalent cu „SEQUENCE”, dar lista nu este ordonată. Rețineți că toate componentele listei SET trebuie să fie diferite, altfel definiția ar fi ambiguă.
- Tipul SET OF este echivalent cu „SEQUENCE OF” dar lista nu este ordonată.
- Tipul CHOICE este un tip de date în care trebuie să alegeți unul dintre tipurile disponibile dintr-o listă. De exemplu, un tip „Animal” ar putea fi o „ALEGERE” între tipurile „Câine”, „Pisică” sau „Pește”.
Tipuri definite
Sunt tipuri derivate din precedentele dar cu un nume mai descriptiv. Cele mai importante sunt:
- IpAddress este folosit pentru a stoca o adresă IP . Are 4 octeți și este definit ca „ȘIR DE OCTET (SIZE (4))”.
- Contorul reprezintă un contor care poate doar să-și crească valoarea și când atinge valoarea maximă, revine la zero. Este definit ca un întreg fără semn, care poate lua numai valori pozitive și zero.
- Indicatorul este ca un indicator de nivel . Este o valoare care poate fi crescută sau micșorată. Poate avea acțiuni asociate care trebuie întreprinse în cazul în care sunt depășite anumite praguri. Un exemplu este un metru al lățimii de bandă măsurat pe o interfață dată. Este definit ca un număr întreg de 32 de biți.
- TimeTicks este un tip de date folosit pentru a măsura timpii. Indică numărul de sutimi de secundă care au trecut de la un anumit eveniment de timp. Este un număr întreg de 32 de biți.
- Opac definește datele arbitrare codificate ca șir OCTET.
- NetworkAddress este o ALEGERE care vă permite să selectați diferite formate de adrese. Momentan doar IpAddress.
Macrocomenzi ASN.1
Putem crea noi tipuri ASN.1 folosind macrocomenzi.
Definiția macrocomenzilor oferă o mai mare flexibilitate sintaxei.
MACRONAME MACRO ::=
START
NOTATIE DE TIP ::=
sintaxă de tip -- format de tip
NOTAREA VALORII ::=
sintaxa valorii -- valorile pe care le poate lua
sintaxă auxiliară -- definirea simbolurilor neterminale
Sfârşit
Simbolurile neterminale încep cu o literă mare.
Clase de date
Fiecare tip de date menționat mai sus, cu excepția CHOICE , este asociat cu o clasă. Există patru clase de date, care etichetează toate celelalte tipuri de date. Fiecare clasă este identificată printr-un nume și un număr întreg pozitiv
- Universal : pentru tipuri de date generale.
| Clasă | Tip de date |
|---|---|
| UNIVERSAL 1 | bolean |
| UNIVERSAL 2 | Întreg |
| UNIVERSAL 4 | Octet String |
| UNIVERSAL 5 | nul |
| UNIVERSAL 6 | Identificator de obiect |
| UNIVERSAL 16 | Secvență, Secvență de |
| UNIVERSAL 17 | Set, Set Of |
- Aplicație : definită pentru aplicația specifică.
| Clasă | Tip de date |
|---|---|
| APLICARE 0 | adresa IP |
| APLICARE 1 | Tejghea |
| APLICARE 2 | Ecartament |
| APLICARE 3 | Timpul trece |
| APLICARE 4 | opac |
- Specific de context : definit pentru contextul local în care sunt utilizate aceste tipuri.
| Clasă | Tip de date |
|---|---|
| CONTEXT 0 | GetRequest |
| CONTEXTUL 1 | GetNextRequest |
| CONTEXTUL 2 | GetResponse |
| CONTEXTUL 3 | SetRequest |
| CONTEXTUL 4 | capcană |
- Privat : definit de utilizator.
Codificare
Sintaxa de transfer specifică modul în care sunt codificate diferitele tipuri de date. Definește modul de codificare în transmițător și decodificare în receptor a valorilor exprimate cu ASN.1.
Acest standard nu definește modul în care datele trebuie să fie codificate, ci este mai degrabă o sintaxă abstractă pentru a indica semnificația datelor. Pentru codificarea datelor sunt utilizate și alte standarde, cum ar fi: BER ( Reguli de codificare de bază ) (BER - X.209), CER ( reguli de codificare canonice ), DER ( reguli de codificare distincte ), PER ( reguli de codificare împachetate ) și XER ( codare XML) . reguli ).
BER
Regulile de codare de bază, sau BER, este unul dintre formatele de codare definite ca parte a standardului ASN.1. Regulile, numite sintaxă de transfer în contextul ASN.1, specifică secvențele exacte de octeți pentru a codifica un anumit element de date. Sintaxa BER, împreună cu două subseturi de BER: Canonical Encoding Rules (CER) și Distinguished Encoding Rules (DER), sunt definite de documentul standardelor ITU-T X.690, care face parte din seria de documente ITU-T. .1. Fiecare element de date este codificat utilizând codificare tip-lungime-valoare , adică printr-un identificator de tip, o descriere a lungimii, elementele de date curente și, acolo unde este necesar, un marcator de sfârșit de conținut. De exemplu, atunci când codifică o valoare construită (adică o valoare care este formată din mai multe valori mai mici deja codificate), expeditorul poate folosi una dintre cele trei moduri diferite de a specifica lungimea datelor. Aceste implementări se bazează pe flexibilitatea pe care o oferă BER pentru a utiliza logica de codificare care este mai ușor de implementat, dar are ca rezultat un flux de date mai mare decât este necesar.
Standarde
- Standarde care descriu notația ASN.1:
- ITU-T Rec.X.680 | ISO/IEC 8824-1
- Rec. ITU-T X.681 | ISO/IEC 8824-2
- ITU-T Rec.X.682 | ISO/IEC 8824-3
- ITU-T Rec.X.683 | ISO/IEC 8824-4
- Standarde care descriu regulile de codificare ale ASN.1:
- ITU-T Rec.X.690 | ISO/IEC 8825-1 (BER, CER și DER)
- ITU-T Rec.X.691 | ISO/IEC 8825-2 (PER)
- ITU-T Rec.X.693 | ISO/IEC 8825-4 (XER)
- ITU-T Rec.X.694 | ISO/IEC 8825-5 (mapping XSD)
- RFC 3641 (GSER)
Vezi și
Referințe