Skip to content
EntityQ333301· pop 19· linked from 162 articles

Abstract Syntax Notation One (ASN.1) is a standard interface description language (IDL) for defining data structures that can be serialized and deserialized in a cross-platform way. It is broadly used in telecommunications and computer networking, and especially in cryptography.

Key facts

Technology standard.title
ASN.1
Technology standard.long_name
Abstract Syntax Notation One
Technology standard.status
In force; supersedes X.208 and X.209 (1988)
Technology standard.year_started
1984
Technology standard.version
(02/21)
Technology standard.version_date
February 2021
Technology standard.organization
ITU-T
Technology standard.committee
Study Group 17
Technology standard.base_standards
ASN.1
Technology standard.related_standards
X.208, X.209, X.409, X.509, X.680, X.681, X.682, X.683
Technology standard.domain
cryptography, telecommunications
Technology standard.website
https://www.itu.int/rec/T-REC-X.680/

via Wikipedia infobox

Wikidata facts

Show 1 more fact
Sources (3)

via Wikidata · CC0

Article · Italiano

Il termine ASN.1 sta per Abstract Syntax Notation One e indica un linguaggio astratto che può essere usato per descrivere una notazione, le relative procedure di encoding e il software che viene utilizzato per maneggiare il codice. È stato definito nel 1990 nello standard ISO 8824 e ripreso nel 2000 all'interno della raccomandazione CCITT X.208. Le particolarità che rendono l'ASN.1 importante sono: * è una notazione internazionalmente standardizzata indipendente dall'implementazione, dalla piattaforma e dal linguaggio, per specificare strutture dati ad alto livello di astrazione. * è supportato da regole che determinano la precisa organizzazione dei bit, per rappresentare i valori della struttura dati, quando questi devono essere trasferiti su una rete di computer, utilizzando codifiche non necessariamente verbose. * è supportato da strumenti disponibili per numerose piattaforme e diversi linguaggi di programmazione che mappano la notazione ASN.1 in definizioni di strutture dati nel linguaggio di programmazione scelto e che supportano la conversione automatica tra i valori delle strutture dati nella memoria e l'organizzazione dei bit definita per il trasferimento sulla linea di comunicazione. * gestisce la coesistenza di sistemi di versione 1 e versione 2 sviluppati e costituiti anche a diversi anni di distanza. Questo avviene grazie ai tipi estensione che permettono di "lasciare aperto" il codice, non richiedendo la presenza di determinati dati o l'assenza degli stessi. * gestisce un gran numero di strutture dati che sono generalmente molto più complete rispetto a quelle dei normali linguaggi di programmazione, come la dimensione degli interi, la nomenclatura delle strutture e la specifica del tipo di carattere. La semantica e la sintassi di ASN.1 è varia, ma non complicata. Ogni struttura è definita secondo un preciso schema, le variabili o le altre strutture sono definite man mano che il codice viene scritto. Si parte dalla struttura base e la si amplia legando sequenze diverse che specificano le variabili usate. I dati sono contraddistinti da un tipo ("data type") e da un valore ("data value"): * un tipo è una classe che descrive una collezione di valori. * un valore è un particolare elemento di informazione, ovvero una particolare istanza di un tipo. Una dichiarazione in questa notazione consta di quattro tipi differenti di unità lessicali: * parole, costituite da lettere maiuscole e minuscole, cifre e trattini, che differenziano i tipi di variabili e le sequenze. * numeri, costituiti da cifre. * stringhe di caratteri, esadecimali e binarie. * punteggiatura. Per individuare immediatamente il tipo di oggetto al quale la parola si riferisce, usa la seguente convenzione: * nome di un tipo, la parola inizia con una lettera maiuscola (es. Nameoftype), per i tipi di base si usano le asn1_dat, che come tali vanno interamente in maiuscolo (es. INTEGER). * nome di un valore (un'istanza di un tipo), la parola inizia con una lettera minuscola (es. nameofvalue). * nome di un modulo, la parola inizia con la lettera maiuscola (es. Module). * valori, non esistono particolari convenzioni. Le assegnazioni di tipi avvengono tramite produzione, utilizzando il simbolo "::=". I moduli indicano una collezione di descrizioni ASN.1: [module]DEFINITIONS [tags] ::= BEGIN[linkage][declarations]END Il campo tags è opzionale e indica se i tags nel modulo sono impliciti o espliciti. I tags sono utili, qualora più elementi componenti la struttura complessiva appartengano allo stesso tipo semplice, in quanto permettono a un ricevente di riconoscere univocamente il tipo cui appartiene il valore ricevuto. Non viene praticamente più utilizzato, ma si sfrutta l'assegnazione automatica. Il termine linkage indica quali tipi, valori e macro sono esportati e quali importati da altri moduli. Declarations contiene tutte le dichiarazioni relative al modulo. Quello che rende veramente utile questo tipo di linguaggio è la sua maneggevolezza dovuta al fatto che è studiato per funzionare come la pila ISO/OSI, ovvero all'interno del codice le sequenze sono create lasciando degli "holes". Gli "holes" non sono nient'altro che strutture non definite direttamente dal programmatore, ma che vengono riempite, man mano che il codice viene eseguito, dal livello superiore o inferiore della pila. Si può quindi scrivere una specifica generica con all'interno "holes" che verranno riempiti da utenti che a loro volta inseriranno "holes", creando quindi un codice che si adatta alle caratteristiche dell'utente e al suo tipo di utilizzo. Il linguaggio ASN.1 è utilizzato in diversi standard e in diversi ambiti, normalmente viene utilizzata una codifica base (BER) che non tiene conto della ridondanza dei bit e della presenza di bit non utilizzati. ASN.1 è incentrato sullo sfruttamento di questa notazione nel campo delle telecomunicazioni, lavorando con un tipo di (PER). La codifica PER Packed Encoding Rules La codifica PER è separata dalla specifica di un protocollo, è quello che viene creato dal compilatore ASN.1. Dopo aver scritto la specifica in linguaggio ASN.1 questa viene passata al compilatore. Il compilatore può creare un'uscita con diversi tipi di codifica (BER, XER, DER, PER) in base alle richieste di utilizzo.Quindi nella codifica PER vengono utilizzate regole da applicare all'organizzazione dei bit, per creare una struttura dati il più possibile concreta senza campi inutili, che permetta la pacchettizzazione per trasmettere l'informazione più velocemente.Non utilizza tags impostati manualmente, perché occuperebbero spazio sulla PDU, ma tags automatici. Ci sono due varianti di questa codifica: * ALIGNED: la struttura dei bit è organizzata in modo che ci sia allineamento tra i byte inserendo bit ridondanti. * UNALIGNED: è un tipo di struttura più pacchettizzata in quanto ogni bit utilizzato è un bit utile, d'informazione.

Abstract from DBpedia / Wikipedia · CC BY-SA

Connections

Categories