Udvalgte emner inden for datanet Abstract Syntax Notation One ASN.1 DIKU.PEH.415
ASN.1 - indhold Introduktion til Abstract Syntax Notation One (ASN.1) Præsentationslaget Forskelle i repræsentation Hvad er ASN.1 Notation (Abstract syntax) Indkodning (Transfer syntax) ASN.1 Notation ASN.1 typer Object Identifier (OID) ASN.1 tags ASN.1 indkodnings regler Eksempler på brug Notation Indkodning DIKU.PEH.41
OSI Basic Reference Model User A User B Application Layer Application Layer Presentation Layer Presentation Layer Session Layer Session Layer Transport Layer Transport Layer Network Layer Network Layer Network Layer Network Layer Data Link Layer Data Link Layer Data Link Layer Data Link Layer Physical Layer Physical Layer Physical Layer Physical Layer Communication media DIKU.PEH.416
Formålet med præsentationslaget at udligne forskelle i den måde data repræsenteres på internt i de maskiner, der udveksler data funktionerne i præsentationslaget vedrører derfor syntaksen af de udvekslede data DIKU.PEH.417
Forskelle i repræsentation (I) Repræsentation af tegn: Byte nummerering: ASCII Little endian : EBCDIC byte er loworder Repræsentation af tal: byte x byte 1 s komplement Big endian : 2 s komplement byte er highorder byte byte x DIKU.PEH.418
Forskelle i repræsentation (II) Little endian Big endian type end; dinosaur = record name: array [1..12] of char; length: integer; carnivorous: boolean; bones: integer; discovery: integer; g u e a s t s u 1 s o r 1 44 4 8 12 16 2 4 8 12 16 2 s o r 1 44 t s u 1 e a s g u { stegosaurus, 1, False, 3, 1877} 7 85 24 24 85 7 44* 2 24 16 8 + 1* 2 + * 2 + *2 = 44*16.777.216 + 1* 65.536 = 738.263.4 DIKU.PEH.419
Forskelle i repræsentation (III) struct QtxfHead { char qtxfversion; 1 1 CD CD char long long qtxfpdutype; qtxfseqno; qtxfsid; short qtxfdatalgth; char qtxfdata[1]; }; struct hellodata { 13 CD CD 58 A CD char long hellocid; hellofseqno; 51 54 58 46 short char }; hellohbvalue; hellodata[1]; 5F 6E 64 65 6D {1, 1,,, 19, X,, 1, QTXF_demo } DIKU.PEH.42
Konvertering mellem maskiner A A A A B B B B C C C ASN.1 C D D D D E E E E n (n -1) konverteringer 2n konverteringer DIKU.PEH.421
5 35 1 4 1 4 integer integer 4 bytes integer start of record 4 bytes integer Eksempel på indkodning 4 12 s t e g o s a u r u s 4 bytes integer 1 2 1 1 4 1 44 7 85 DIKU.PEH.422 boolean 1 byte boolean integer 35 bytes record string 12 bytes string
Hvad er ASN.1 et internationalt standardiseret værktøj til definition af application layer protokol syntakser et sådant værktøj er nødvendig, idet applikations protokoller ofte indeholder komplekse data strukturer behovet blev identificeret af ITU (CCITT) i forbindelse med standardiseringen af Message Handling (MHS) ITU standardiserede det i X.49 i 1984 ITU og ISO blev enig om den samme tekst ITU: X.28 og X.29 ISO: ISO/IEC 8824 og ISO/IEC 8825 anvendes også i TCP/IP verdenen (Managed Objects - SNMP) DIKU.PEH.423
Hvad er specificeret i ASN.1 der er to komponenter, en notationsform og et sæt indkodnings (encoding) regler notationen er Abstract Syntax Notation One (normalt omtalt ASN.1) indkodnings reglerne er ASN.1 Basic Encoding Rules (normal omtalt BER) ASN.1 optræder i protokol specifikationer for at beskrive de datastrukturer, der skal transmiteres (Abstract Syntax) BER specificerer hvorledes disse strukturer indkodes for transmission (Transfer Syntax) Notation -> Abstarct Syntax -> Protokol specifikation Indkodning -> Transfer Syntax -> Kommunikations forbindelsen DIKU.PEH.424
ASN.1 notation notationen (ASN.1) tillader design af komplekse datastrukturer udfra få simple typer de simple typer inkludere integer, real, boolean, forskellige typer af strings (bit string, octet string, character string) og object identifier designeren kan opbygge mere komplekse typer ud fra simple typer komplekse typer kan også opbygges på grundlag af typerne sets, sequences og choices of simpler types f.eks. kan en fil være struktureret som et antal records, der kan bestå af et antal fields, som kan være tal, tegn strenge eller komplekse strukturer af subfields DIKU.PEH.425
Eksempel på ASN.1 notation EventReportArgument ::= SEQUENCE { managedobjectclass ObjectClass, managedobjectinstance ObjectInstance, eventtime [5] IMPLICIT GeneralizedTime, eventtype EventTypeId, eventinfo [8] ANY DEFINED BY eventtype } ObjectClass ::= CHOICE { globalform [] IMPLICIT OBJECT IDENTIFIER, localform [1] IMPLICIT INTEGER } ObjectInstance ::= CHOICE { distinguishedname [2] IMPLICIT DistinguishedName, nonspecificform [3] IMPLICIT OCTET STRING, localdistinguishedname [4] IMPLICIT RDNSequence } DistinguishedName ::= RDNSequence RDNSequence ::= SEQUENCE OF RelativeDistinguishedName RelativeDistinguishedName ::= SET OF AttributeValueAssertion AttributeValueAssertion ::= SEQUENCE { attributetype AttributeType, attributevalue AttributeValue } AttributeType ::= OBJECT IDENTIFIER AttributeValue ::= ANY DIKU.PEH.42
Eksempler på simple ASN.1 typer integer heltal (positiv, negativ og ) boolean True og False bit string Liste af eller flere bits octet string Liste af eller flere oktetter real M * B E M mantise (integer) B base (2 eller 1) E exponent (integer) object identifier {1 2 3 4 5} DIKU.PEH.426
Object Identifier (OID) top ccitt () iso (1) joined ccitt-iso (2) org (3) dod (6) internet (1) directory (1) mgmt (2) mib-2 (1) system (1) sysdescr: sysdescr (1) iso org dod internet mgmt mib-2 system sysdescr ip (4) 1. 3. 6. 1. 2. 1. 1. 1. experimental (3) private (4) enterprises (1) DIKU.PEH.784
Object Identifier (OID) - cont. Der findes ingen steder, hvor man kan få et samlet overblik Men på http://www.alvestrand.no/objectid/top.html findes en hel del Internet ligger under DoD, der er en ISO Identified Organization OID= 1.3.6.1 Under Internet Private ligger Enterprices (1.3.6.1.4.1), som er firmaer m.m., f.eks.: Cisco (1.3.6.1.4.1.9) Sun (1.3.6.1.4.1.42) Stanford University (1.3.6.1.4.1.299) DIKU.PEH.43
ASN.1 tags en tag har en tag class og et tag number. To tags er forskellige, hvis enten tag class eller tag number er forskellig der er fire tag classes: universal context-specific application-wide private tag number er et ikke-negativt heltal alle typer defineret i ASN.1 (og kun disse typer) er universal DIKU.PEH.427
Basic Encoding Rules (BER) al information indkodes i en nested struktur al indkodning har det samme basale layout (denne ensartethed gør parsing let) hver indkodning består af en identifikation (I), en længde angivelse (L) og indholdet (contents (C)). Dette layout betegnes nogle gange også TLV (Type - Length - Value) identifikationen indeholder oplysning om datatypen længe angivelsen muliggør at afslutningen på indkodningen kan findes indholdet er de aktuelle data. Dette kan igen være en række af indkodninger. Dette tillader at rekursive datastrukturer afspejles i indkodningen DIKU.PEH.428
Basic Encoding Rules - Identifier Der findes to formater: single octet : CCFTTTTT multiple octest : CCF11111 1TTTTTTT... TTTTTTT CC er Tag Class ( = universal, 1 = application-wide, 1 = context-specific og 11 = private) F er Form ( = primitive og 1 = constructed) TTTTTT er Tag number og repræsenteret som et unsigned binary number DIKU.PEH.429
Basic Encoding Rules - Length Der findes tre formater: short: LLLLLLL long: 1[<n<127] LLLLLLLL... LLLLLLLL indefinite: 1, der afsluttes med DIKU.PEH.43
Eksempel på encoding (I) : 6 8 9 AD CF -24 31 45 29 8 45.`...$1E)..E. 1: 1 2D C 1 4 8 6-95 9 AC 19 3 AC 19.-..@... 2: 4 4 B 6 2D 27-41 4D 29 25 D9 5 18...-.'AM.)%.P. 3: 21 98 64 B4 3-1 5 2 F 8 1 1!.d... 4: 3 19 1 3 61 8 3 8-2 1 1 A 8 A1 8 2...a... 5: 1 2 2 1 3 8 8-8 3 92 4F A 3...O... 6: 5 A2 8 31 B 3 9 6-3 55 4 6 13 2 44 4B...1...U...DK 7: 31 C 3 A 6 3 55 4-A 13 3 54 44 4B 31 D 1...U...TDK1. 8: 3 B 6 3 55 4 B 13-4 55 54 54 4E 31 12 3...U...UTTN1. 9: 1 6 3 55 4 C 13 9-74 6D 6E 2D 6E 6F 74 65...U...tmn-note A: 31 31 14 3 12 6 5 59-3 2 7 4 19 9 73 74 11...Y...st B: 61 69 41 67 65 6E 74 31-19 3 17 6 7 D 98 aiagent1... C: 1C 7 1C 19 C 55 43-5 4D 49 4E 49 54 45 4B...UCPMINITEK D: 53 54 31 11 3 F 6 7- D 98 1C 7 26 19 ST1...&. E: 4 58 3 32 39 85-13 31 39 39 38 3 33 3.X29...19983 F: 39 31 34 33 35 34 3 2B-3 31 3 3 86 5 59 3 914354+1..Y. 1: 2 A 2 A8 2C 3 2A 6-6 59 3 2 4 A...,*..Y... 11: 1 1 1 1 83 1-85 1 2 19 14 58 2E 32...X.2 12: 35 2 63 6F 6E 6E 65 63-74 69 6F 6E 2 6C 6F 73 5 connection los 13: 74 - t... DIKU.PEH.55
Eksempel på encoding (II) 3 8 8 8 3 92 4E A 3 5....... 5 = 11 => 5 3 = 11 => 3 = => A = 11 => 1 = => 92 4E = 111 11111 => x11x11111 = 2383 3 = 4m + n => m =, n = 3 3 92 4E A 3 5 = Value = Object Identifier.3.2383..1..3.5 8 = Length: 1= 8 octets 8 = Identifier: 1 (CCFTTTTT)=> Class=Context-specific, Format=Primitive, Tag= (globalform, OID) 8 8 3 92 4E A 3 5.... = Value 8 = Length: 1= Indefinite, dvs. afsluttes med - 3 = Identifier: 11 (CCFTTTTT)=> Class=Universal, Format=Constructed, Tag=16 (SEQUENCE) DIKU.PEH.551
Eksempel på encoding (III) ISO ROSE ------------------------------------------ PDU 1 : ROIV ROSEapdus: roiv-apdu [C 1] IMPLICIT invokeid [U 2] INTEGER operation-value: localvalue [U 2] INTEGER Display of User Data has been turned off. ISO CMIP ------------------------------------------ PDU 1 : M-EVENT-REPORT REQ EventReportArgument SEQUENCE (OF) value... managedobjectclass: globalform [C ] IMPLICIT OBJECT IDENTIFIER value... { 3 2383 1 3 5 } managedobjectinstance: distinguishedname [C 2] IMPLICIT value... relativedistinguishedname [U 17] SET (OF) value... AttributeValueAssertion [U 16] SEQUENCE (OF) value... attributetype [U 6] OBJECT IDENTIFIER value... { 2 5 4 6 } attributevalue ANY DEFINED BY attributetype, USER DATA value... DK DIKU.PEH.552