|



| |
Home
> Inginerie > Calculatoare
> Ghid retele > Prezentare4. Servicii de
prezentare
Motivaţie
Rezolavrea
problemei de reprezentare
ASN.1: Notaţia 1 pentru sintaxa abstractă
Servicii de Prezentare: intenţia de închidere
Esenţa problemei:
-
avem de-a face cu
semnificaţia
informaţiei, nu cu reprezentarea
-
diferite calculatoare, SO,
compilere au convenţii diferite pentru datele de reprezentare
-
arhitectura: numere mari la
sfârşit, faţă de numere mici la sfârşit
-
format de punct flotant
-
dimensiunea tipului de date:
16, 32, 64 bit
-
dimensiuni şi layout
diferite ale structurilor de date
struct{
char code;
int x;
} test;
test. x = 259;
test.code = 'a'; |
test.code
test.x |
masina X
|
test.code
test.x |
masina Y |
-
expeditorul codează în
formatul destinatarului
-
destinatarul decodează din
formatul expeditorului
-
metodă independentă pentru
maşină + SO + limbaj, de descriere a structurii de date

Standardul ISO
Sintaxa abstractă:
"limbaj" pentru descrierea
structurii de date
-
este limbaj pentru descrierea
datelor, nu limbaj de programare
-
defineşte tipuri universale
de date
-
permite tipuri de date
definite pentru utilizator
Reguli de bază pentru încodare:

ASN.1: Tipuri universale
Tipuri predefinite cu valori
date ale tagurilor:
| Tagul |
Tip |
Comanda |
| 1 |
BOOLEAN |
valoarea este adevărată sau
falsă |
| 2 |
INTREG |
poate fi arbitrar de mare |
| 3 |
ŞIR DE BIT |
lista unui sau mai multor
biţi |
| 4 |
ŞIR DE OCTET |
lista unuia sau mai multor
octeţi |
| 5 |
NUL |
nici o valoare |
| 6 |
IDENTIFICATOR DE OBIECT |
se referă la un "obiect",
de ex., număr de protocol |
| 9 |
REAL |
punct flotant |
Exemplu:
gândeşte-te la ::= ca definind
tipuri noi de date în termeni de tipuri universale de date
Married ::= BOOLEAN
SSN ::= INTEGER
Lname ::= OCTETSTRING
Salary ::= REAL
IPAddress ::= OCTETSTRING (SIZE 4)
Sintaxa ASN.1:
constructori
ASN.1 defineşte tipul de
constructor pentru construcţia tipurilor mai complexe de date din tipuri
de date "mai simple":
| Tag |
Tip |
Comentariu |
| 16 |
SECVENŢĂ |
listă ordonată, fiecare
element este un tip ASN.1 |
| 17 |
SET |
la fel ca la secvenţă, dar
neordonat |
| 11 |
ALEGERE |
un tip luat din listele
specificate |
Exemplu de tip de date
construite:
studentRecord ::= SEQUENCE {
Lname OCTETSTRING,
Fname OCTETSTRING,
Mname OCTETSTRING,
Married BOOLEAN DEFAULT FALSE,
SSN INTEGER
}
Sintaxa ASN.1:
realizarea tagurilor şi codarea
Datele ASN.1
sunt autoidentificabile.
Tagul de 8-bit
- tipul tagului, 2 biţi.
(00 este UNIVERSAL)
- primitivă versus construită,
1 bit
- valoarea tagului (5 biţi)
Lungimea de 8-bit:
lungimea datelor încodate.
Valoarea:
datele însăşi încodate
- întregii sunt încodaţi în al
2-lea complement, de lungime arbitrară
- boolean, este încodat în un
octet, 0 este FALS
- şir de octeţi: transmite
valorile bytului
- real: sunt posibile mai multe
încodări.
ASN.1 Exemplu de încodare:
Definiţia ASN.1:
Attendee ::= SEQUENCE {
name OCTET STRING,
paid BOOLEAN }
Data {"Smith",T}
trebuie încodată:

De notat structura de cuib a
TLV în exemplul de mai sus.
ASN.1: Cum se foloseşte?
"Compilerele" ASN.1
iau modulul de sintaxă abstractă a lui ASN.1
şi produc
-
definiţii de tipuri de date C
(de ex., typedef) pe care
utilizatorul poate să le includă pentru a crea structuri de date
conţinând aceste tipuri
-
bioblioteca de rutine C -
apelabile (de ex., una
pentru fiecare tip de date) pentru a încoda/decoda
fiecare typedef în/din încodarea TLV.

Consumuri cu procesarea
prezentării:
Alt "nivel" popular de
prezentare este xdr al lui SUN (reprezenare de date externe)
Referinţe:
-
John Larmouth's book "Understanding OSI" :
chapter 8: ASN.1 , role of ASN.1 in
next generation http
-
Neufeld and Y. Yang, "An ASN.1 to C compiler,"
IEEE Trans. Software Engineering, Oct. 1990
-
C. Huitema and A. Doghri, "Defining Faster
Transfer Syntaxes for the OSI Presentation Protocol," ACM Computer
Communication Rev. Oct. 1989
| |

|