close

ASN.1

Przejdź do nawigacji Przejdź do wyszukiwania

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

  • PKCS7 , nie zawiera klucza prywatnego.
  • PKCS12 , zawiera klucz prywatny.

Referencje