ASN.1
Abstract Syntax Notation One ( ASN.1 ) to standard reprezentacji danych niezależnie od używanej maszyny i jej wewnętrznych form reprezentacji. Jest to protokół warstwy prezentacji w modelu OSI . Protokół SNMP używa ASN.1 do reprezentowania zarządzanych obiektów.
Opis informacji
ASN.1 używa notacji Backus-Naur ( BNF ) do opisania sposobu przechowywania informacji.
Typy danych
Typy danych są klasyfikowane według tego, czy są proste (prymitywne), złożone (zbudowane z innych, proste lub złożone) lub zdefiniowane, z etykietą nazwy do ich identyfikacji.
Typy pierwotne
Typy pierwotne są skalarne, to znaczy przechowują pojedynczą wartość, na przykład ciąg lub liczbę całkowitą. Najważniejsze typy prymitywne to:
- Typ INTEGER służy do reprezentowania liczb całkowitych .
- Typ OCTET STRING przechowuje sekwencję bajtów . Wywodzą się z niego trzy podtypy:
- DisplayString (dla ciągów znaków ASCII )
- OctetBitString (dla ciągów bitowych większych niż 32)
- PhysAddress (do reprezentowania adresów na poziomie łącza ).
- Typ OBJECT IDENTIFIER do reprezentowania identyfikatorów obiektów, czyli pozycji obiektu w drzewie MIB .
- Typ BOOLEAN dla wartości, które mogą być tylko prawdziwe lub fałszywe.
- Typ NULL reprezentujący brak wartości.
Skonstruowane typy
Typy skonstruowane są typami złożonymi. Służą do tworzenia tablic i tabel. Najważniejsze z nich to:
- Typ SEQUENCE to struktura danych, czyli uporządkowana lista różnych typów danych. Jest to typ używany do przechowywania wiersza tabeli.
- Typ SEQUENCE OF to uporządkowana lista równych typów danych. Jest podobny do typu „SEQUENCE”, z tą różnicą, że wszystkie typy muszą być takie same. Jest to typ używany w tabelach do przechowywania wszystkich wierszy.
- Typ SET jest odpowiednikiem „SEQUENCE”, ale lista nie jest uporządkowana. Należy zauważyć, że wszystkie składniki listy SET muszą być różne, w przeciwnym razie definicja byłaby niejednoznaczna.
- Typ SET OF jest odpowiednikiem „SEQUENCE OF”, ale lista nie jest uporządkowana.
- Typ WYBÓR to typ danych, w którym należy wybrać jeden z dostępnych typów z listy. Na przykład typ „Zwierzę” może być „WYBÓR” między typami „Pies”, „Kot” lub „Ryba”.
Zdefiniowane typy
Są to typy wywodzące się z poprzednich, ale o bardziej opisowej nazwie. Najważniejsze z nich to:
- IpAddress służy do przechowywania adresu IP . Ma 4 bajty i jest zdefiniowany jako „ŁAŃCUCH OKTETU (ROZMIAR (4))”.
- Licznik reprezentuje licznik, który może tylko zwiększać swoją wartość, a gdy osiągnie maksymalną wartość, powraca do zera. Jest definiowana jako liczba całkowita bez znaku, która może przyjmować tylko wartości dodatnie i zero.
- Wskaźnik jest jak wskaźnik poziomu . Jest to wartość, którą można zwiększyć lub zmniejszyć. Może mieć powiązane działania, które należy podjąć w przypadku przekroczenia określonych progów. Przykładem jest miernik przepustowości mierzonej na danym interfejsie. Jest definiowana jako 32-bitowa liczba całkowita.
- TimeTicks to typ danych używany do mierzenia czasu. Wskazuje liczbę setnych sekundy, które upłynęły od danego zdarzenia czasowego. Jest to 32-bitowa liczba całkowita.
- Nieprzezroczysty definiuje dowolne dane zakodowane jako STRING OCTET.
- NetworkAddress to WYBÓR, który pozwala wybrać różne formaty adresu. Obecnie tylko adres IP.
Makra ASN.1
Możemy tworzyć nowe typy ASN.1 za pomocą makr.
Definicja makr zapewnia większą elastyczność składni.
MAKRO NAZWY MAKRO ::=
POCZĄTEK
OZNACZENIE TYPU ::=
składnia typu -- format typu
OZNACZENIE WARTOŚCI ::=
składnia wartości – wartości, jakie może przyjąć
składnia pomocnicza -- definicja symboli nieterminalnych
KONIEC
Symbole nieterminalowe zaczynają się od wielkiej litery.
Klasy danych
Każdy wymieniony powyżej typ danych, z wyjątkiem CHOICE , jest powiązany z klasą. Istnieją cztery klasy danych, które oznaczają wszystkie inne typy danych. Każda klasa jest identyfikowana przez nazwę i dodatnią liczbę całkowitą
- Universal : dla ogólnych typów danych.
| Klasa | Typ danych |
|---|---|
| UNIWERSALNY 1 | boleański |
| UNIWERSALNY 2 | Liczba całkowita |
| UNIWERSALNY 4 | Oktet ciąg |
| UNIWERSALNY 5 | zero |
| UNIWERSALNY 6 | Identyfikator obiektu |
| UNIWERSALNY 16 | Sekwencja, Sekwencja |
| UNIWERSALNY 17 | Zestaw, zestaw |
- Aplikacja : Zdefiniowane dla konkretnej aplikacji.
| Klasa | Typ danych |
|---|---|
| ZASTOSOWANIE 0 | adres IP |
| ZASTOSOWANIE 1 | Licznik |
| ZASTOSOWANIE 2 | Miernik |
| ZASTOSOWANIE 3 | Czas tyka |
| ZASTOSOWANIE 4 | nieprzejrzysty |
- Specyficzne dla kontekstu : Zdefiniowane dla kontekstu lokalnego, w którym te typy są używane.
| Klasa | Typ danych |
|---|---|
| KONTEKST 0 | Pobierzżądanie |
| KONTEKST 1 | PobierzDalejZapytanie |
| KONTEKST 2 | Otrzymać odpowiedź |
| KONTEKST 3 | Ustaw żądanie |
| KONTEKST 4 | pułapka |
- Prywatne : Zdefiniowane przez użytkownika.
Kodowanie
Składnia przesyłania określa sposób kodowania różnych typów danych. Określa sposób kodowania w nadajniku i dekodowania w odbiorniku wartości wyrażonych ASN.1.
Ten standard nie definiuje, w jaki sposób dane mają być kodowane, ale raczej jest abstrakcyjną składnią wskazującą znaczenie danych. Do kodowania danych używane są inne standardy, takie jak: BER ( podstawowe reguły kodowania ) (BER-X.209), CER ( kanoniczne reguły kodowania ), DER ( rozróżniane reguły kodowania ), PER ( pakowane reguły kodowania ) i XER ( kodowanie XML ). zasady ).
BER
Basic Encoding Rules (BER) to jeden z formatów kodowania zdefiniowanych jako część standardu ASN.1. Reguły, zwane składnią transferu w kontekście ASN.1, określają dokładne sekwencje oktetów do kodowania danego elementu danych. Składnia BER, wraz z dwoma podzbiorami BER: Canonical Encoding Rules (CER) i Distinguished Encoding Rules (DER), jest zdefiniowana w dokumencie standardów ITU-T X.690, który jest częścią serii dokumentów ITU-T. .1. Każdy element danych jest zakodowany przy użyciu kodowania typ-długość-wartość , czyli przez identyfikator typu, opis długości, bieżące elementy danych i, w razie potrzeby, znacznik końca zawartości. Na przykład podczas kodowania skonstruowanej wartości (czyli wartości, która składa się z wielu mniejszych już zakodowanych wartości), nadawca może użyć jednego z trzech różnych sposobów określenia długości danych. Te implementacje opierają się na elastyczności zapewnianej przez BER w zakresie używania logiki kodowania, która jest łatwiejsza do wdrożenia, ale skutkuje większym strumieniem danych niż to konieczne.
Normy
- Normy opisujące notację ASN.1:
- ITU-T Rec.X.680 | ISO/IEC 8824-1
- Zalecenie 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
- Standardy opisujące zasady kodowania 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 (mapowanie XSD)
- RFC 3641 (GSER)
Zobacz także
Referencje