ASN.1 (Abstract Syntax Notation One) è un modo standard per descrivere un messaggio (un'unità di dati dell'applicazione) che può essere inviato o ricevuto in una rete. ASN.1 è diviso in due parti: (1) le regole di sintassi per descrivere il contenuto di un messaggio in termini di tipo di dati e sequenza o struttura del contenuto e (2) come si codifica effettivamente ciascun elemento di dati in un messaggio. ASN.1 è definito in due standard ISO per le applicazioni destinate al framework OSI (Open Systems Interconnection):
- ISO 8824 / ITU X.208 specifica la sintassi (ad esempio, quale elemento di dati viene visualizzato per primo nel messaggio e qual è il suo tipo di dati)
- ISO 8825 / ITU X.209 specifica le regole di codifica di base per ASN.1 (ad esempio, come stabilire la lunghezza di un elemento di dati)
Ecco un esempio di una definizione di messaggio specificata con la notazione ASN.1:
Report :: = SEQUENCE {autore OCTET STRING, titolo OCTET STRING, corpo OCTET STRING, biblio Bibliografia}
In questo esempio molto semplice, "Report" è il nome di questo tipo di messaggio. SEQUENCE indica che il messaggio è una sequenza di elementi di dati. I primi quattro elementi di dati hanno il tipo di dati OCTET STRING, il che significa che ognuno è una stringa di byte a otto bit (è stato utilizzato il termine OCTET anziché BYTE perché non si può presumere che tutti i computer avranno otto bit in un byte) . L'elemento dei dati della bibliografia è un'altra definizione denominata "Bibliografia" utilizzata all'interno di questa. Potrebbe assomigliare a questo:
Bibliografia :: = SEQUENCE {autore OCTET STRING titolo OCTET STRING editore OCTET STRING anno OCTET STRING}
Altri tipi di dati che possono essere specificati includono: INTEGER, BOOLEAN, REAL e BIT STRING. Un tipo di dati ENUMERATED è uno che accetta uno dei diversi valori possibili. Gli elementi dati possono essere specificati come FACOLTATIVI (non necessariamente presenti).