ASN.1 - ASN.1

ASN.1
Abstrakt sintaksis yozuvlari
HolatAmalda; X.208 va X.209 (1988) o'rnini egallaydi
Yil boshlandi1995
Oxirgi versiya(08/15)
2015 yil avgust
TashkilotITU-T
Asosiy standartlarASN.1
Tegishli standartlarX.208, X.209, X.680, X.681, X.682, X.683
Domenkriptografiya, telekommunikatsiya
Veb-saythttps://www.itu.int/rec/T-REC-X.680/en

Abstrakt sintaksis yozuvlari (ASN.1) standart hisoblanadi interfeys tavsiflash tili bo'lishi mumkin bo'lgan ma'lumotlar tuzilmalarini aniqlash uchun seriyalashtirilgan va deserializatsiya qilingan o'zaro faoliyat platformada. Bu keng tarqalgan bo'lib ishlatiladi telekommunikatsiya va kompyuter tarmog'i va ayniqsa kriptografiya.

Protokol ishlab chiquvchilari odatda ASN.1 tilida yozilgan kengroq standart hujjatning bo'limi bo'lgan ASN.1 modullarida ma'lumotlar tuzilmalarini belgilaydilar. Afzalligi shundaki, ma'lumotlar kodlashning ASN.1 tavsifi ma'lum bir kompyuter yoki dasturlash tilidan (ASN.1 dan tashqari) mustaqil bo'lganligi sababli ASN.1 ham inson tomonidan o'qilishi mumkin, ham mashinada o'qilishi mumkin bo'lganligi sababli ASN.1 kompilyatori kod kutubxonalariga modullarni kompilyatsiya qilish, kodeklar, ma'lumotlar tuzilmalarini dekodlash yoki kodlash. Ba'zi ASN.1 kompilyatorlari bir nechta kodlashni kodlash yoki dekodlash uchun kod ishlab chiqarishi mumkin, masalan. qadoqlangan, BER yoki XML.

ASN.1 standartning qo'shma standartidir Xalqaro elektraloqa ittifoqi Telekommunikatsiyani standartlashtirish sektori (ITU-T ) ichida ITU-T o'quv guruhi 17 va ISO /IEC, dastlab 1984 yilda CCITT X.409: 1984 tarkibida aniqlangan.[1] 1988 yilda ASN.1 o'z standartiga o'tdi, X.208, keng qo'llanilishi tufayli. 1995 yildagi sezilarli darajada qayta ishlangan versiyasi X.680 seriyali.[2] X.680 qator tavsiyalarining so'nggi tahriri 2015 yilda nashr etilgan 5.0 nashridir.

Tilni qo'llab-quvvatlash

ASN.1 - bu ma'lumotlar turini deklaratsiya qilish. Bunday turdagi o'zgaruvchini qanday boshqarishni aniqlamaydi. O'zgaruvchilarni manipulyatsiyasi kabi boshqa tillarda aniqlangan SDL Amalga oshiriladigan modellashtirish uchun (spetsifikatsiya va tavsiflash tili) yoki TTCN-3 Muvofiqlikni sinovdan o'tkazish uchun (Sinov va sinovlarni boshqarish belgisi). Ushbu ikkala til ham ASN.1 deklaratsiyasini qo'llab-quvvatlaydi. ASN.1 modulini import qilish va modulda e'lon qilingan har qanday ASN.1 turlarining o'zgaruvchisini e'lon qilish mumkin.

Ilovalar

ASN.1 ko'plab protokollarni aniqlash uchun ishlatiladi. Uning eng keng qo'llanilishi telekommunikatsiya, kriptografiya va biometrikada davom etmoqda.

ASN.1 dan foydalanadigan protokollar
ProtokolTexnik xususiyatlariBelgilangan yoki odatiy kodlash qoidalariFoydalanadi
Interledger protokolihttps://interledger.org/rfcs/asn1/index.htmlOktet kodlash qoidalari
NTCIP 1103 - Transportni boshqarish protokollariNTCIP 1103Oktet kodlash qoidalariYo'l harakati, transport va infratuzilmani boshqarish
X.500 katalog xizmatlariITU X.500 tavsiyalar seriyasiKodlashning asosiy qoidalari, taniqli kodlash qoidalariLDAP, TLS (X.509 ) Sertifikatlar, autentifikatsiya
Yengil katalogga kirish protokoli (LDAP)IETF RFC 4511Kodlashning asosiy qoidalari
PKCS kriptografiya standartlariPKCS Kriptografiya standartlariKodlashning asosiy qoidalari va taniqli kodlash qoidalariAsimmetrik kalitlar, sertifikat to'plamlari
X.400 xabarlarni boshqarishITU X.400 tavsiyalar seriyasiElektron pochta xabarlarini yuborish uchun erta raqobatchi
EMVEMVCo nashrlariTo'lov kartalari
T.120 Multimedia konferentsiyalariITU T.120 tavsiyalar seriyasiKodlashning asosiy qoidalari, qadoqlangan kodlash qoidalariMicrosoft-ning [Masofadagi ish stoli protokoli] (RDP)
Oddiy Tarmoqni boshqarish protokoli (SNMP)IETF RFC 1157Kodlashning asosiy qoidalariTarmoqlar va kompyuterlarni boshqarish va nazorat qilish, xususan ishlash va ishonchlilikka oid xususiyatlar
Umumiy boshqaruv to'g'risidagi ma'lumot protokoli (CMIP)ITU tavsiyasi X.711SNMP uchun raqobatdosh, ammo qobiliyatli va deyarli mashhur emas
№ 7 signalizatsiya tizimi (SS7)ITU Q.700 tavsiyalari seriyasiUmumiy telefon tarmog'i (PSTN) orqali telefon aloqalarini boshqarish
ITU H seriyali multimedia protokollariITU H.200, H.300 va H.400 tavsiyalar seriyasiInternet orqali ovoz uzatish protokoli (VOIP)
BioAPI O'zaro ishlash protokoli (BIP)ISO / IEC 24708: 2008
Umumiy biometrik almashinuv formatlari doirasi (CBEFF)NIST IR 6529-AKodlashning asosiy qoidalari
Biometriya uchun autentifikatsiya kontekstlari (ACBio)ISO / IEC 24761: 2019
Kompyuter tomonidan qo'llab-quvvatlanadigan telekommunikatsion dasturlar (CSTA)https://www.ecma-international.org/activities/Communication/TG11/cstaIII.htmKodlashning asosiy qoidalari
Maxsus qisqa masofali aloqa (DSRC)SAE J2735Paketlangan kodlash qoidalari
Mobil aloqa uchun global tizim (GSM)http://www.ttfn.net/techno/smartcards/gsm11-11.pdfMobil telefon aloqasi
Umumiy paketli radio xizmati (GPRS) / Global Evolyutsiya uchun Kengaytirilgan Ma'lumotlar Stavkalari (EDGE)http://www.3gpp.org/technologies/keywords-acronyms/102-gprs-edgeMobil telefon aloqasi
Universal mobil telekommunikatsiya tizimi (UMTS)http://www.3gpp.org/DynaReport/25-series.htmMobil telefon aloqasi
Uzoq muddatli evolyutsiya (LTE)http://www.3gpp.org/technologies/keywords-acronyms/98-lteMobil telefon aloqasi
Umumiy ogohlantirish protokoli (CAP)http://docs.oasis-open.org/emergency/cap/v1.2/CAP-v1.2-os.htmlXML kodlash qoidalariAmber Alerts kabi ogohlantirish ma'lumotlarini almashtirish
Ma'lumotlar havolasi bilan boshqaruvchi-tekshiruvchi (CPDLC)Aeronavtika aloqalari
Space Link kengaytmasi xizmatlari (SLE)Kosmik tizimlar aloqasi
Ishlab chiqarish xabarining spetsifikatsiyasi (MMS)ISO 9506-1: 2003Ishlab chiqarish
Fayllarni uzatish, kirish va boshqarish (FTAM)Fayl uzatish protokolining erta va qobiliyatli raqibi, ammo endi kamdan kam qo'llaniladi.
Masofaviy operatsiyalarga xizmat ko'rsatish elementi protokoli (ROSE)XEI X.880, X.881 va X.882 tavsiyalariNing erta shakli Masofaviy protsedura chaqiruvi
Assotsiatsiya nazorati xizmati elementi (ACSE)ITU tavsiyasi X.227
Avtomatlashtirish va boshqarish tarmoqlarini qurish protokoli (BACNet)ASHRAE 135-2016BACNet kodlash qoidalariQurilishni avtomatlashtirish va boshqarish, masalan yong'in signalizatsiyasi, liftlar, HVAC tizimlari va boshqalar.
KerberosIETF RFC 4210Kodlashning asosiy qoidalariXavfsiz autentifikatsiya
WiMAX 2Keng hududiy tarmoqlar
Intellektual tarmoqITU Q.1200 tavsiyalar seriyasiTelekommunikatsiya va kompyuter tarmoqlari

Kodlash

ASN.1 ma'lumotlar tuzilishini baytlar qatori sifatida ko'rsatishni ko'rsatadigan kodlash qoidalari to'plami bilan chambarchas bog'liq. Standart ASN.1 kodlash qoidalariga quyidagilar kiradi:

ASN.1 kodlash qoidalari
Kodlash qoidalariOb'ekt identifikatoriOID-IRI
Ob'ektni tavsiflovchi qiymati
Texnik xususiyatlari
Serializatsiya birligi
Kodlangan elementlarni aniqlash mumkin
spetsifikatsiyani oldindan bilmasdan
Oktet tekislangan
Kodlashni boshqarish bo'yicha qayd qoidalari aniqlangan
Tavsif
Kodlashning asosiy qoidalari (BER)[3]2.1.1/ASN.1/Basic-KodlashBitta ASN.1 tipidagi asosiy kodlashITU X.690OktetHaHaYo'qBirinchi belgilangan kodlash qoidalari. Elementlarni teg-uzunlik-qiymat (TLV) ketma-ketligi sifatida kodlaydi. Odatda ma'lumotlar qiymatlarini qanday kodlash kerakligi haqida bir nechta variantlarni taqdim etadi. Bu yanada moslashuvchan kodlash qoidalaridan biridir.
Kodlashning taniqli qoidalari (DER)[4]2.1.2.1/ASN.1/BER-Derived/Distinguished- EncodingBitta ASN.1 turini alohida kodlashITU X.690OktetHaHaYo'qAsosiy kodlash qoidalarining cheklangan to'plami (BER). Odatda raqamli imzolangan narsalar uchun ishlatiladi, chunki DER kodlash uchun kamroq imkoniyatlarni yaratishi mumkin va DER kodlangan qiymatlar aynan bir xil baytlarda qayta kodlanishi ehtimoli yuqori, chunki berilgan mavhum qiymat tomonidan ishlab chiqarilgan raqamli imzolar dasturlarda bir xil bo'lishi va DER-kodlangan ma'lumotlar ustida ishlab chiqarilgan raqamli imzolar to'qnashuvga asoslangan hujumlarga kam ta'sir qiladi.
Kanonik kodlash qoidalari (CER)[5]2.1.2.0/ASN.1/BER-Derived/Canonical- EncodingBitta ASN.1 tipidagi kanonik kodlashITU X.690OktetHaHaYo'qAsosiy kodlash qoidalarining cheklangan to'plami (BER). Ajratilgan kodlash qoidalari (DER) bilan deyarli bir xil cheklovlarni qo'llaydi, ammo e'tiborga loyiq farq shundaki, CER ko'p katta qiymatlarni (ayniqsa, satrlarni) 1000 bayt yoki alohida substring elementlariga "maydalash" kerakligini belgilaydi. 1000 belgidan iborat belgi (ma'lumotlar turiga qarab).
Paketlangan asosiy kodlash qoidalari (PER) muvofiqlashtirildi[6]2.1.3.0.0/ASN.1/Packed-Encoding/Basic/AlignedBitta ASN.1 tipidagi paketlangan kodlash (asosiy hizalanmış)ITU X.691BitYo'qHaYo'qBitdagi qiymatlarni kodlaydi, lekin kodlangan bitlar sakkizga teng bo'linmasa, to'ldiruvchi bitlar qiymatni oktetlarning ajralmas soni kodlanguncha qo'shiladi. Juda ixcham kodlashni ishlab chiqarishga qodir, ammo murakkabligi hisobiga va PER ma'lumotlar turlariga qo'yiladigan cheklovlarga juda bog'liq.
Paketlangan asosiy kodlash qoidalari (PER) hizalanmagan[6]2.1.3.0.1/ASN.1/Packed-Encoding/Basic/UnalignedBitta ASN.1 tipidagi paketlangan kodlash (asosiy hizalanmagan)ITU X.691BitYo'qYo'qYo'qHizalanmış asosiy qadoqlangan kodlash qoidalarining (PER) bir varianti, ammo u sektsiyalarning ajralmas sonini hosil qilish uchun ma'lumotlar qiymatlarini bitlar bilan to'ldirmaydi.
Kanonik qadoqlangan kodlash qoidalari (CPER) hizalanmıştır[6]2.1.3.1.0/ASN.1/Packed-Encoding/Canonical/AlignedBitta ASN.1 turidagi qadoqlangan kodlash (kanonik hizalanmış)ITU X.691BitYo'qHaYo'qPaketlangan kodlash qoidalarining (PER) varianti, bu qiymatlarni kodlashning yagona usulini belgilaydi. Kanonik qadoqlangan kodlash qoidalari, qadoqlangan kodlash qoidalari (BER) va kanonik kodlash qoidalari (kodlash) ning asosiy kodlash qoidalariga (BER) o'xshash o'xshashdir.
Kanonik qadoqlangan kodlash qoidalari (CPER) hizalanmagan[6]2.1.3.1.1/ASN.1/Packed-Encoding/Canonical/UnalignedBitta ASN.1 tipidagi paketlangan kodlash (kanonik hizalanmagan)ITU X.691BitYo'qYo'qYo'qHizalanmış kanonik qadoqlangan kodlash qoidalari (CPER) ning bir varianti, ammo u sakkizli sonni hosil qilish uchun ma'lumotlar qiymatlarini bitlar bilan to'ldirmaydi.
XML kodlashning asosiy qoidalari (XER)[7]2.1.5.0/ASN.1/XML-Encoding/BasicBitta ASN.1 tipidagi asosiy XML kodlashITU X.693BelgilarHaHaHaASN.1 ma'lumotlarini XML sifatida kodlaydi.
Kanonik XML kodlash qoidalari (CXER)[7]2.1.5.1/ASN.1/XML-Encoding/CanonicalBitta ASN.1 tipidagi kanonik XML kodlashITU X.693BelgilarHaHaHa
Kengaytirilgan XML kodlash qoidalari (EXER)[7]2.1.5.2/ASN.1/XML-Encoding/ExtendedBitta ASN.1 tipidagi kengaytirilgan XML kodlashITU X.693BelgilarHaHaHa
Oktet kodlash qoidalari (OER)[8]2.1.6.0Bitta ASN.1 tipidagi asosiy OER kodlashITU X.696OktetYo'qHaOktetlardagi qiymatlarni kodlaydigan, lekin asosiy kodlash qoidalari (BER) kabi teglar yoki uzunlik determinantlarini kodlamaydigan kodlash qoidalari to'plami. Oktet kodlash qoidalari yordamida kodlangan ma'lumotlar qiymatlari ko'pincha "yozuvlarga asoslangan" protokollarda mavjud bo'lganga o'xshaydi. Oktet kodlash qoidalari (OER) oson bajarilishi va kodlashning asosiy qoidalari (BER) tomonidan ishlab chiqarilganidan ixchamroq ishlab chiqarilishi uchun ishlab chiqilgan. Kodlashtiruvchi / dekoderlarni ishlab chiqishdagi sa'y-harakatlarni kamaytirishga qo'shimcha ravishda, OER-dan foydalanish tarmoqli kengligidan foydalanishni kamaytirishi mumkin (ammo qadoqlangan kodlash qoidalari kabi emas), CPU tsikllarini tejaydi va kodlash / dekodlashning kechikishini kamaytiradi.
Kanonik kodlash qoidalari (OER)[8]2.1.6.1Bitta ASN.1 turidagi kanonik OER kodlashITU X.696OktetYo'qHa
JSON kodlash qoidalari (JER)[9]ITU X.697BelgilarHaHaHaASN.1 ma'lumotlarini JSON sifatida kodlaydi.
String kodlashning umumiy qoidalari (GSER)[10]1.2.36.79672281.0.0String kodlashning umumiy qoidalari (GSER)IETF RFC 3641BelgilarHaYo'qInson tomonidan o'qiladigan qadriyatlarni ishlab chiqaradigan kodlash qoidalarining to'liq bo'lmagan spetsifikatsiyasi. GSER-ning maqsadi kodlangan ma'lumotlarni foydalanuvchiga taqdim etish yoki foydalanuvchidan ma'lumotlarni kiritish juda sodda shaklda. GSER dastlab uchun mo'ljallangan edi Yengil katalogga kirish protokoli (LDAP) va undan tashqarida kamdan kam qo'llaniladi. Haqiqiy protokollarda GSER-dan foydalanish taqiqlanadi, chunki unda ASN.1 tomonidan qo'llab-quvvatlanadigan barcha belgilar qatorlarining kodlari takrorlanishi mumkin emas.
BACNet kodlash qoidalariASHRAE 135OktetHaHaHaAsosiy kodlash qoidalari (BER) kabi elementlarni teg-uzunlik-qiymat (TLV) ketma-ketligi sifatida kodlaydi.
Signalning maxsus kodlash qoidalari (SER)France Telecom ilmiy-tadqiqot ishlari bo'yicha ichki hujjatOktetHaHaGSM va SS7 kabi telekommunikatsiya bilan bog'liq protokollarda asosan foydalaniladi. ASN.1-da ilgari mavjud bo'lmagan protokollar ishlab chiqaradigan ASN.1-dan bir xil kodlashni ishlab chiqarish uchun mo'ljallangan.
Yengil kodlash qoidalari (LWER)INRIA tomonidan ichki hujjat.Xotira so'ziHaTomonidan ishlab chiqarilgan ichki hujjatdan kelib chiqadi INRIA "Yassi daraxtning engil vaznli sintaksisini" (FTLWS) batafsil bayon qilish. Paketlangan kodlash qoidalarining (PER) yuqori ko'rsatkichlari tufayli 1997 yilda tashlab yuborilgan. Ixtiyoriy ravishda Big-Endian yoki Little-Endian uzatish, shuningdek 8-bit, 16-bit va 32-bitli xotira so'zlari. (Shuning uchun oltita variant mavjud, chunki bu variantlarning oltita kombinatsiyasi mavjud.)
Minimal bit kodlash qoidalari (MBER)Bit1980-yillarda taklif qilingan. Paketlangan kodlash qoidalari (PER) kabi iloji boricha ixcham bo'lishi kerak.
NEMA paketlangan kodlash qoidalariBitNEMA tomonidan ishlab chiqarilgan to'liq bo'lmagan kodlash qoidalari spetsifikatsiyasi. U to'liq emas, chunki u barcha ASN.1 ma'lumotlar turlarini kodlashi va dekodlashi mumkin emas. Paketlangan kodlash qoidalari (PER) kabi ixcham.
Yuqori tezlikda kodlash qoidalari"Yuqori tezlikdagi tarmoqlarni kodlash qoidalari"Ushbu kodlash qoidalarining ta'rifi INRIA ning tekis daraxtning engil vaznli sintaksisidagi (FTLWS) ishining yon mahsuloti edi.

Kodlashni boshqarish yozuvlari

ASN.1 tavsiyalari bir qator oldindan belgilangan kodlash qoidalarini taqdim etadi. Agar mavjud kodlash qoidalarining hech biri mos kelmasa, Kodlashni boshqarish belgisi (ECN) foydalanuvchiga o'zining shaxsiy kodlash qoidalarini belgilash usulini taqdim etadi.

Maxfiylik yaxshilangan pochta (PEM) kodlash bilan bog'liqlik

Maxfiylik bo'yicha yaxshilangan pochta (PEM) kodlash ASN.1 va uning kodeklari bilan umuman bog'liq emas, ammo kodlangan ASN.1 ma'lumotlari (ko'pincha ikkilik) ko'pincha PEM-kodlangan. Bu matnli kodlashni sezgir bo'lgan ommaviy axborot vositalari orqali tashishda yordam beradi, masalan, SMTP o'rni, shuningdek nusxalash va joylashtirish.

Misol

Bu uydirma xabarlarni (ma'lumotlar tuzilmalarini) belgilaydigan ASN.1 modulining misoli Foo Protokol:

FooProtocol TAFINITIONS :: = BEGIN FooQuestion :: = SEQUENCE {trackingNumber INTEGER, savol IA5String} FooAnswer :: = SEQUENCE {questionNumber INTEGER, javob BOOLEAN} END

Bu Foo Protocol-ning yaratuvchilari tomonidan nashr etilgan spetsifikatsiya bo'lishi mumkin. Suhbat oqimlari, tranzaktsiyalar almashinuvi va holatlar ASN.1-da aniqlanmagan, ammo boshqa yozuvlar va protokolning matnli tavsifida qoldirilgan.

Foo protokoliga mos keladigan va qabul qiluvchi tomonga yuboriladigan xabarni qabul qilsangiz, ushbu xabar (protokol ma'lumotlar birligi (PDU)) bu:

myQuestion FooQuestion :: = {trackingNumber 5, savol "Kimdir u erda?"}

ASN.1 qiymatlar va o'lchamlar va kengayish bo'yicha cheklovlarni qo'llab-quvvatlaydi. Yuqoridagi spetsifikatsiyani o'zgartirish mumkin

FooProtocol TAFINITIONS :: = BEGIN FooQuestion :: = SEQUENCE {trackingNumber INTEGER (0..199), IA5String} FooAnswer :: = SEQUENCE {questionNumber INTEGER (10..20), javob BOOLEAN} FooHistory :: = SEQUENCE {SEQUENCE {savollar (SIZE (0..10)) FooQuestion javoblari, SEQUENCE (SIZE (1..10)) of FooAnswer, anArray SEQUENCE (SIZE (100)) INTEGER (0..1000), ...} END

Ushbu o'zgarish kuzatuv raqamlarini 0 dan 199 gacha bo'lgan qiymatga, savol raqamlarini esa 10 dan 20 gacha bo'lgan qiymatga ega bo'lishiga to'sqinlik qiladi. Savollar massivining hajmi 0 dan 10 tagacha, javoblar massivi esa 1 dan 10 gacha elementlar orasida bo'lishi mumkin. AnArray maydoni 0 dan 1000 gacha bo'lishi kerak bo'lgan aniq uzunlikdagi 100 ta elementlar massividir. '...' kengaytiruvchi belgisi FooHistory xabari spetsifikatsiyasi spetsifikatsiyaning kelgusi versiyalarida qo'shimcha maydonlarga ega bo'lishi mumkinligini anglatadi; bitta versiyaga mos tizimlar tranzaktsiyalarni keyingi versiyadan qabul qilishi va uzatishi kerak, lekin faqat oldingi versiyada ko'rsatilgan maydonlarni qayta ishlashga qodir. Yaxshi ASN.1 kompilyatorlari (C, C ++, Java va hokazolarda) manba kodini yaratadilar, bu operatsiyalar ushbu cheklovlar doirasiga kirishini avtomatik ravishda tekshiradi. Cheklovlarni buzadigan bitimlar arizadan qabul qilinmasligi yoki unga taqdim etilmasligi kerak. Ushbu qatlamdagi cheklovlarni boshqarish protokol spetsifikatsiyasini sezilarli darajada soddalashtiradi, chunki ilovalar cheklovlarni buzilishidan himoya qiladi, xavf va xarajatlarni kamaytiradi.

MyQuestion xabarini tarmoq orqali yuborish uchun xabar ketma-ket ravishda seriyalashtirilgan (kodlangan) bayt dan birini ishlatib kodlash qoidalari. Foo protokoli spetsifikatsiyasi aniq bir kodlash qoidalarini ishlatishi kerak, shunda Foo protokoli foydalanuvchilari qaysi birini ishlatishi kerakligini va nimani kutishini bilishlari kerak.

Misol DERda kodlangan

Quyida yuqorida ko'rsatilgan ma'lumotlar tuzilishi kodlangan DER formati (barcha raqamlar o'n oltinchi raqamda):

30 13 02 01 05 16 0e 41 6e 79 62 6f 64 79 20 74 68 65 72 65 3f

DER - bu uzunlik-qiymat kodlash, shuning uchun yuqoridagi ketma-ketlikni standart SEQUENCE, INTEGER va IA5String turlariga murojaat qilib quyidagicha izohlash mumkin:

SEQUENCE-ni ko'rsatadigan 30-turdagi yorliq13 -dan keyingi qiymat oktetalaridagi uzunlik, INTEGER-ni ko'rsatadigan 02-tipli yorliq - 05-sondan keyingi qiymatlar sakkizli uzunlikdagi uzunlik (5) 16-turdagi yorliq IA5String      (IA5 variantlarni o'z ichiga olgan to'liq 7-bitli ISO 646 to'plamini bildiradi, lekin odatda US-ASCII) 0e - qiymat sekretsiyasidagi uzunligi 41 6e 79 62 6f 64 79 20 74 68 65 72 65 3f - qiymat ("Hech kim U yerda?")

Misol XERda kodlangan

Shu bilan bir qatorda, xuddi shu ASN.1 ma'lumotlar tuzilishini kodlash mumkin XML kodlash qoidalari (XER) odamning "sim orqali" ko'proq o'qish qobiliyatiga erishish uchun. Keyin u quyidagi 108 oktet bo'lib ko'rinadi (bo'shliqlar soniga chuqurchaga ishlatiladigan bo'shliqlar kiradi):

<FooQuestion>    <trackingNumber>5</trackingNumber>    <question>U erda kimdir?</question></FooQuestion>

Misol PER bilan kodlangan (tekislanmagan)

Shu bilan bir qatorda, agar Paketlangan kodlash qoidalari ishlatilgan bo'lsa, quyidagi 122 bit (16 oktet 128 bitni tashkil qiladi, ammo bu erda faqat 122 bit ma'lumotga ega va oxirgi 6 bit shunchaki to'ldirilgan):

01 05 0e 83 bb ce 2d f9 3c a0 e9 a3 2f 2c af c0

Ushbu formatda talab qilinadigan elementlar uchun teglar kodlanmagan, shuning uchun uni kodlash uchun ishlatilgan kutilgan sxemalarni bilmasdan ajratib bo'lmaydi. Bundan tashqari, IA5String qiymati uchun baytlar 8 bitli birliklar o'rniga 7 bitli birliklardan foydalangan holda paketlanadi, chunki kodlovchi IA5String bayt qiymatini kodlash uchun faqat 7 bit kerakligini biladi. Biroq uzunlik baytlari bu erda, hattoki birinchi tamsayt yorlig'i 01 uchun ham kodlangan (lekin PER to'plami, agar ruxsat berilgan qiymatlar diapazoni 8 bitga to'g'ri kelishini bilsa va hatto bitta bayt 05 qiymatini kamroq bilan ixchamlashi mumkin bo'lsa ham uni qoldirib yuborishi mumkin) 8 bitdan, agar ruxsat etilgan qiymatlar faqat kichikroq diapazonga to'g'ri kelishini bilsa).

Kodlangan PER-dagi so'nggi 6 bit, oxirgi bayt c0 ning eng kam ahamiyatli 6 bitida nol bit bilan to'ldirilgan: agar bu ketma-ketlik uzunroq hizalanmagan qism sifatida kiritilgan bo'lsa, bu qo'shimcha bitlar uzatilishi yoki boshqa narsalarni kodlash uchun ishlatilishi mumkin emas. PER ketma-ketligi.

Bu shuni anglatadiki, hizalanmagan PER ma'lumotlari asosan tartiblangan bitlar oqimi bo'lib, hizalanmış PER kabi baytlarning tartiblangan oqimi emas va odatdagi protsessorlarda dasturiy ta'minot yordamida dekodlash biroz murakkabroq bo'ladi, chunki bu qo'shimcha kontekstli bit- almashtirish va maskalash va to'g'ridan-to'g'ri bayt-adreslash emas (lekin bir xil eslatma zamonaviy protsessorlar va xotira / saqlash birliklari bilan minimal bo'lishi mumkin bo'lgan birlik 1 oktetdan katta bo'ladi). Ammo zamonaviy protsessorlar va signal protsessorlari bitli oqimlarni tezkor ichki dekodlash uchun apparat ta'minotini o'z ichiga oladi, ular manzilli saqlash bloklari chegaralarini kesib o'tadigan hisoblash birliklari bilan avtomatik ishlov berish bilan ishlaydi (bu siqish / dekompressiya yoki ba'zi bir shifrlash bilan ma'lumotlar kodeklarida samarali ishlov berish uchun kerak) parolni hal qilish algoritmlari).

Agar oktet chegaralarida hizalama zarur bo'lsa, hizalangan PER kodlovchi quyidagilarni ishlab chiqaradi:

01 05 0e 41 6e 79 62 6f 64 79 20 74 68 65 72 65 3f

(bu holda, har bir oktet foydalanilmaydigan eng muhim bitlarida null bitlar bilan alohida-alohida to'ldiriladi).

Asboblar

ASN.1-ni qo'llab-quvvatlovchi vositalarning aksariyati quyidagilarni bajaradi:

  • ASN.1 fayllarini tahlil qilish,
  • dasturlash tilida (C yoki C ++ kabi) ekvivalent deklaratsiyani ishlab chiqaradi,
  • oldingi deklaratsiyalar asosida kodlash va dekodlash funktsiyalarini ishlab chiqaradi.

ASN.1-ni qo'llab-quvvatlovchi vositalar ro'yxati ITU-T Tool veb-sahifasi.

Shunga o'xshash sxemalar bilan taqqoslash

ASN.1 maqsadi va ishlatilish jihatidan o'xshashdir protokol buferlari va Apache tejamkorligi, shuningdek, platformalararo ma'lumotlarni ketma-ketlashtirish uchun interfeys tavsiflash tillari. Ushbu tillar singari, uning sxemasi ("modul" deb nomlangan ASN.1 da) va kodlashlar to'plami mavjud uzunlik-qiymat kodlashlari. Biroq, 1984 yilda aniqlangan ASN.1 ko'p yillar davomida ulardan oldinroq bo'lgan. U shuningdek, ba'zi birlari eskirgan va kengayish imkoniyatlari ko'proq bo'lgan asosiy ma'lumotlar turlarining xilma-xilligini o'z ichiga oladi. Bitta ASN.1 xabari bir nechta standartlarda, hatto yillar oralig'ida belgilangan standartlarda aniqlangan bir nechta modullardan ma'lumotlarni o'z ichiga olishi mumkin.

ASN.1 shuningdek, qadriyat va o'lchamdagi cheklovlarni ichki qo'llab-quvvatlashni o'z ichiga oladi. Masalan, modul 0 dan 100 gacha bo'lishi kerak bo'lgan butun sonli maydonni belgilashi mumkin. Qadriyatlar ketma-ketligining uzunligi (massiv) ham belgilangan uzunlik yoki ruxsat etilgan uzunliklar oralig'i sifatida ko'rsatilishi mumkin. Cheklovlarni asosiy cheklovlar to'plamining mantiqiy kombinatsiyasi sifatida ham ko'rsatish mumkin.

Cheklov sifatida ishlatiladigan qiymatlar PDU spetsifikatsiyasida ishlatiladigan harflar yoki sxema faylining boshqa joylarida ko'rsatilgan ASN.1 qiymatlari bo'lishi mumkin. Ba'zi ASN.1 vositalari ushbu ASN.1 qiymatlarini dasturchilar uchun yaratilgan manba kodida taqdim etadi. Belgilangan protokol uchun doimiy sifatida ishlatiladigan dasturchilar protokol mantig'ini amalga oshirishda ulardan foydalanishlari mumkin. Shunday qilib, barcha PDU va protokol barqarorlari sxemada aniqlanishi mumkin va har qanday qo'llab-quvvatlanadigan tilda protokolning barcha bajarilishi ushbu qiymatlarga asoslanadi. Bu ishlab chiquvchilarning kodlarini bajarishning dastlabki kodlarida doimiy ravishda protokollarni kiritishlarini oldini oladi. Bu protokolni ishlab chiqishda sezilarli darajada yordam beradi; protokolning konstantalarini ASN.1 sxemasida o'zgartirish mumkin va barcha dasturlar shunchaki qayta kompilyatsiya qilish yo'li bilan yangilanadi va tez rivojlanish xavfi past bo'ladi.

Agar ASN.1 vositalari ishlab chiqarilgan manba kodidagi cheklovlarni to'g'ri bajaradigan bo'lsa, bu dastur ishlashi paytida protokol ma'lumotlarini avtomatik ravishda tasdiqlash uchun ishlaydi. Odatda ASN.1 vositalari ishlab chiqarilgan ketma-ketlashtirish / deserializatsiya tartib-qoidalarini tekshirishda cheklovlarni o'z ichiga oladi, agar ular chegaradan tashqaridagi ma'lumotlarga duch kelsa, xatolar yoki istisnolarni keltirib chiqaradi. ASN.1 kompilyatorida ASN.1 cheklashlarining barcha jihatlarini amalga oshirish juda murakkab. Hamma vositalar mumkin bo'lgan cheklovlarning to'liq ifodasini qo'llab-quvvatlamaydi. XML sxemasi va JSON sxemasi ikkalasi ham shunga o'xshash cheklovlar tushunchalarini qo'llab-quvvatlaydi. Ushbu cheklovlarni qo'llab-quvvatlash vositasi har xil. Microsoft-ning xsd.exe kompilyatori ularni e'tiborsiz qoldiradi.

ASN.1 ingl Kattalashtirilgan Backus-Naur shakli (ABNF), bu kabi ko'plab Internet protokollarini aniqlash uchun ishlatiladi HTTP va SMTP. Biroq, amalda ular bir-biridan ancha farq qiladi: ASN.1 ma'lumotlar tuzilishini belgilaydi, ularni har xil usullar bilan kodlash mumkin (masalan, JSON, XML, ikkilik). ABNF esa kodlashni ("sintaksis"), shu bilan birga ma'lumotlar tuzilishini ("semantika") belgilaydi. ABNF matnli, odam tomonidan o'qiladigan protokollarni aniqlash uchun tez-tez ishlatiladi va odatda uzunlik-qiymat kodlashlarini aniqlash uchun foydalanilmaydi.

Ko'pgina dasturlash tillari tilga xos serializatsiya formatlarini belgilaydi. Masalan, Pythonning "tuzlangan" moduli va Rubining "Marshal" moduli. Ushbu formatlar odatda tilga xosdir. Bundan tashqari, ular sxemani talab qilmaydi, bu ularni vaqtincha saqlash stsenariylarida foydalanishni osonlashtiradi, ammo aloqa protokollari uchun mos emas.

JSON va XML xuddi shunday, ulardan foydalanishni osonlashtiradigan sxemani talab qilmaydi. Biroq, ularning ikkalasi ham o'zaro faoliyat platformalar standartlari bo'lib, aloqa protokollari uchun juda mashhurdir, ayniqsa XML sxemasi yoki JSON sxemasi.

Ba'zi ASN.1 vositalari ASN.1 va XML sxemalari (XSD) o'rtasida tarjima qilishga qodir. Tarjima XEI tomonidan standartlashtirilgan. Bu protokolni ASN.1-da va avtomatik ravishda XSD-da belgilashga imkon beradi. Shunday qilib, loyihada ASS.1 vositalari tomonidan tuzilgan XSD sxemasini loyihada JSON simformatiga / dan ob'ektlarni ketma-ketlashtiradigan manba kodini ishlab chiqaradigan XSD sxemasi bo'lishi mumkin (ehtimol noto'g'ri maslahat qilingan bo'lsa ham). ASN.1 sxemasi o'rniga boshqa sub-loyihalarni XSD sxemasini iste'mol qilishiga ruxsat berish, undan ko'ra ko'proq tanlangan sub-loyihalar uchun vositalar mavjudligiga mos keladigan XER protokoli simli format sifatida ishlatilishi mumkin.

Batafsil ma'lumot uchun qarang Ma'lumotlarni seriyalash formatlarini taqqoslash.

Adabiyotlar

  1. ^ "ITU-T tavsiyalari ma'lumotlar bazasi". ITU. Olingan 2017-03-06.
  2. ^ ITU-T X.680 - asosiy yozuvlarning spetsifikatsiyasi
  3. ^ ITU-T X.690 - kodlashning asosiy qoidalari (BER)
  4. ^ ITU-T X.690 - kodlashning taniqli qoidalari (DER)
  5. ^ ITU-T X.690 - Kanonik kodlash qoidalari (CER)
  6. ^ a b v d ITU-T X.691 - qadoqlangan kodlash qoidalari (PER)
  7. ^ a b v ITU-T X.693 - XML ​​kodlash qoidalari (XER)
  8. ^ a b ITU-T X.696 - Oktet kodlash qoidalari (OER)
  9. ^ ITU-T X.697 - JavaScript-ni nishonlashni kodlash qoidalari (JER)
  10. ^ [rfc: 3641 IETF RFC 3641 - String kodlashning umumiy qoidalari (GSER)]

Shuningdek qarang

Tashqi havolalar