ASN.1

De la Wikipedia, enciclopedia liberă.
Salt la navigare Salt la căutare

Termenul ASN.1 înseamnă Abstract Syntax Notation One și indică un limbaj abstract care poate fi folosit pentru a descrie o notație, procedurile sale de codificare și software - ul care este utilizat pentru a gestiona codul . A fost definit în 1990 în standardul ISO 8824 și preluat în 2000 în recomandarea CCITT X.208 .

Particularitățile care fac ASN.1 important sunt:

  • este o implementare standardizată la nivel internațional, platformă și notație independentă de limbă pentru specificarea structurilor de date cu un nivel ridicat de abstractizare.
  • este susținut de reguli care determină organizarea precisă a biților , pentru a reprezenta valorile structurii de date, atunci când acestea trebuie transferate printr-o rețea de calculatoare , folosind nu neapărat codificări detaliate.
  • este susținut de instrumentele disponibile pentru multe platforme și diferite limbaje de programare care mapează notația ASN.1 în definițiile structurii de date în limbajul de programare la alegere și care acceptă conversia automată între valorile structurilor de date din memorie și organizarea de biți definite pentru transfer la linia de comunicare.
  • gestionează coexistența sistemelor versiunea 1 și versiunea 2 dezvoltate și stabilite chiar și cu câțiva ani distanță. Acest lucru se întâmplă datorită tipurilor de extensii care vă permit să „lăsați deschis” codul , nu necesită prezența anumitor date sau absența acestora.
  • gestionează un număr mare de structuri de date care sunt în general mult mai complete decât cele ale limbajelor de programare normale, cum ar fi dimensiunea întregului, nomenclatura structurii și specificația fontului.

Semantica și sintaxa ASN.1 sunt variate, dar nu complicate. Fiecare structură este definită conform unui model precis, variabilele sau alte structuri sunt definite pe măsură ce codul este scris. Începe de la structura de bază și o extinde prin legarea diferitelor secvențe care specifică variabilele utilizate.

Datele se disting printr-un tip („tip de date”) și o valoare („valoare de date”):

  • un tip este o clasă care descrie o colecție de valori.
  • o valoare este o anumită informație, adică o instanță particulară de un tip.

O declarație în această notație constă din patru tipuri diferite de unități lexicale :

  • cuvinte, formate din litere mari și mici, cifre și liniuțe, care diferențiază tipurile și secvențele variabile.
  • numere, formate din cifre.
  • șiruri de caractere, hexazecimale și binare.
  • punctuaţie.

Pentru a identifica imediat tipul de obiect la care se referă cuvântul, utilizați următoarea convenție:

  • numele unui tip, cuvântul începe cu o literă majusculă (de exemplu, Nameoftype), pentru tipurile de bază folosim asn1_dat, care ca atare sunt cu majusculă (de exemplu INTEGER).
  • numele unei valori (o instanță de tip), cuvântul începe cu o literă minusculă (de exemplu, nameofvalue).
  • numele unui modul , cuvântul începe cu o literă mare (de exemplu, modul).
  • valori, nu există convenții speciale.

Atribuțiile de tip se fac prin producție, folosind simbolul „:: =”.

Modulele indică o colecție de descrieri ASN.1:

 [modul] DEFINIȚII [etichete] :: = ÎNCEPE
[legătură]
[declarații]
SFÂRȘIT

Câmpul de etichete este opțional și indică dacă etichetele din formular sunt implicite sau explicite. Etichetele sunt utile atunci când mai multe elemente care alcătuiesc structura generală aparțin aceluiași tip simplu, deoarece permit unui receptor să recunoască în mod unic tipul căruia îi aparține valoarea primită. Practic nu mai este utilizat, dar se utilizează atribuirea automată.

Termenul legătură indică ce tipuri, valori și macrocomenzi sunt exportate și care sunt importate din alte module.

Declarații conține toate declarațiile legate de modul.

Ceea ce face acest tip de limbaj cu adevărat util este gestionarea sa datorită faptului că este proiectat să funcționeze ca stiva ISO / OSI, adică în cadrul codului secvențele sunt create lăsând „găuri”. Găurile nu sunt altceva decât structuri care nu sunt definite direct de programator, dar care sunt umplute, pe măsură ce codul este executat, de la nivelul superior sau inferior al stivei. Prin urmare, este posibil să scrieți o specificație generică cu „găuri” în interior care să fie umplute de utilizatori care la rândul lor vor introduce „găuri”, creând astfel un cod care să se adapteze caracteristicilor utilizatorului și tipului său de utilizare.

Limbajul ASN.1 este utilizat în diferite standarde și în diferite domenii, în mod normal se utilizează o codificare de bază ( BER ) care nu ia în considerare redundanța biților și prezența biților neutilizați. ASN.1 se concentrează pe exploatarea acestei notații în domeniul telecomunicațiilor , lucrând cu un tip de codare a pachetelor (PER).

PER Reguli de codificare ambalate

Codificarea PER este separată de specificarea unui protocol, este ceea ce este creat de compilatorul ASN.1. După scrierea specificației în limbajul ASN.1, aceasta este transmisă compilatorului . Compilatorul poate crea o ieșire cu diferite tipuri de codificare (BER, XER, DER, PER) în funcție de solicitările de utilizare. Prin urmare, în regulile de codificare PER se utilizează pentru a se aplica organizării biților , pentru a crea o structură de date cât mai concretă fără câmpuri inutile, care permite ambalajelor să transmită informații mai repede. Nu folosește etichete setate manual, deoarece acestea ar ocupa spațiu pe PDU, ci etichete automate.

Există două variante ale acestei codificări:

  • ALINEAT: structura de biți este organizată astfel încât să existe o aliniere între octeți prin inserarea de biți redundanți.
  • Nealiniat: este un tip de structură mai ambalat, deoarece fiecare bit utilizat este un bit util de informații.
Controlul autorității LCCN ( EN ) sh2001003087