Protokolloraijegyzet2010 12
A VIK Wikiből
Ez az oldal a korábbi SCH wikiről lett áthozva.
Ha úgy érzed, hogy bármilyen formázási vagy tartalmi probléma van vele, akkor, kérlek, javíts rajta egy rövid szerkesztéssel!
Ha nem tudod, hogyan indulj el, olvasd el a migrálási útmutatót.
Protokoll Technológiák
12. óra
Protokollok létrehozása:
Szabályok
- SEQUENCE: struct: nevek, amelyeknek mezői vannak
pl.: Személyes_adat ::= SEQUENCE { név IA5String, szül_év Integer }
- SEQUENCE OF: Tömb
- SET
- Ugyanazt jelenti, mint a SEQUENCE, csak a SET nél mindegy a sorrend
- SET OF: Tömb:
- Guszti bá' még nem látott ilyen állatot.
- CHOICE
- Unionnak felel meg, de mindig egy konkrét mező van csak benne
- A nem csupa nagybetűs típus, az nem beépített típus
- International Alphabet 5: IA5String
- "... ahogy idézőjelben 'normális nyelvekben' szoktuk." AwG
Korlátozások
- Értéktartomány korlátozás
két pötty | from .. to | | XXszazat ::= INTEGER(1901..2000)
- Felsorolás
Kis_prímszámok ::= INTEGER(2|3|5|7)
- Tömb méret
méret <alsó>..<felső> értékek közt változhat | | Tömb_64_elemmel ::= SEQUENCE SIZE(64..64) OF INTEGER Tömb_1_64_elemmel ::= SEQUENCE SIZE(1..64) OF INTEGER // egy és 64 elem közt lehet az elemek száma // pl listaelemek
- Elemekből állhat korlát
Tel_szám ::= IA5String(FROM("1"|"2"|"3"|"4"|"5"|"6"|"7"|"8"|"9"|"0"|"*"|"#"|"+"))
Problémák
- Fontos, hogy ki tudjuk találni, hogy hogy is van az az üzenet
- ez az OPTIONAL tag-nél lesz kérdés először.
Koordináták ::= SEQUENCE { x INTEGER OPTIONAL, y INTEGER OPTIONAL }
- Most küldjük, vagy nem küldjük vagy mi van?
- Megoldás: TAG! :)
Koordináták ::= SEQUENCE { x[0] INTEGER OPTIONAL, y[1] INTEGER OPTIONAL }
- OPTIONAL-t lehet a DEFAULT-al helyettesíteni, akkor az az érték kerül bele a helyére.
- a [0]-át minnyá tovább magyarázza.
BER: Basic Encoding Rules
- TAG+LENGTH+VALUE
- PER Packed (Per Encoding Rules)
- TAG kódolás:
- class: 2 bit: mondja meg, hogy adott adattípus milyen körben használható (scope)
- 00: Universal: Ezek a beépített típusok (a számértékeket NEM kell benyalni... Csak hogy mik vannak :D )
- 01: Application: Nemzetközi szabányosító szervezet álltal szabványosított izé
- 11: Private: nem szabványosított, csak vállalati szférában, etc...
- 10: Context Specific: Környezet függő adattípus - pl struktúra mezők: csak adott helyen fordulhat elő
- format: 1 bit:
- 0: Simple: Attól függ mi számít összetettnek: ha a VALUE konkrét, akkor lesz egyszerű
- 1: Structure
- TAG value:
- 1: BOOLEAN
- 2: INTEGER
- 4: OCTET STRING
- 5: NULL
- 10: ENUMERATED
- 16: SEQUENCE(OF)
- 17: SET(OF)
- a nem beépítetteben a típuskód az lesz, amit mi adunk neki.
- ha az érték 11111: (31) akkor long formátum
- mindig az első bit érték mutatja, hogy lesz e még méret érték ->LENGTH korlát
- class: 2 bit: mondja meg, hogy adott adattípus milyen körben használható (scope)
- LENGHT kódolás: első bit: ha nulla, akkor SHORT
- ha 1-es, akkor LONG formátum: addíg megy, amíg a hosszban van, és itt a hossz a hossz hossza .... haha.
- 3. fajta hossz kódolás: nem mondjuk meg mekkora lesz, a végét jelezzük.
- Hossz érték: 1000 0000: ez lesz az indefinit kódja
- kettő nulla lesz a végén, az jelzi majd, hogy vége. Vala.
- itt jött egy példa.
- meg mégyegy.
- SáláláláS
- EGY KIS HÁZI FELADAT!
|-> üzenet típus kód x ::= [10] SEQUENCE { a INTEGER, // 10 b[1] INTEGER, // 20 c[32] BOOLEAN, // FALSE d[5] OCTET STRING // 200db 0 }
-- Liba - 2010.03.22.