Vous êtes sur la page 1sur 67

Chapitre La conversion des donnes

-1-

Introduction la conversion des donnes

Tout systme informatique (processeur + systme d'exploitation + langage + ...) effectue de nombreux choix relativement au codage des informations gres. - Les choix possibles sont trs varis. - Ils concernent tous les types de donnes. - Ils conduisent des diffrences majeures concernant des notions qui ont en fait le mme objectif (caractre, entier, ...) Grave htrognit syntaxique et smantique (d'un constructeur un autre, d'un modle l'autre du mme constructeur) Trs pnalisante pour des systmes en rseau de machines htrognes puisque les donnes circulent entre machines (systmes "ouverts").
-2-

La prsentation des donnes - Fonction essentielle de la rpartition (en environnement ouvert). - Elle est effectuer chaque transfert => Performances leves indispensables

Objectif assign la couche prsentation du modle OSI Normes correspondantes. Dfinition de syntaxe abstraite et de syntaxe de transfert ASN1 Service et protocole de prsentation ISO 8822 et 8823 Objectif assign de nombreuses implantations propritaires de logiciels de conversion non normaliss. . Fournisseurs de logiciels rseaux. . Fournisseurs d'architectures client-serveur. . Fournisseurs de systmes d'objets rpartis. . Fournisseurs de bases de donnes rparties
-3-

Problmes lis aux choix matriels (reprsentation interne des donnes)

Codes caractres Premier problme de conversion: choix de la reprsentation des caractres dans le cadre de l'interfonctionnement en mode texte. => Code EBDIC (IBM) et normes ASCII (Ex IA5 International ASCII n5).

-4-

Position des octets ou des bits dans un mot mmoire Deux visions pour la position des octets. Machines "grand boutiste" (Sun Sparc) ("Big endian") Les octets sont numrots de gauche droite [0 1 2 3] Machines "petit boutiste " (Pentium) ("Little endian") Les octets sont numrots de droite gauche [3 2 1 0] changes en srie de donnes contenues en mmoire (ex: une adresse IP sur 32 bits) La srialisation d'un mot mmoire donne selon les cas des rsultats diffrents.

-5-

Reprsentation des types machine de base Pour tous les types de donnes de base grs par le matriel nombreuses variantes: Reprsentation des entiers, Longueur variable (8, 16, 32, 64 bits) Codage (complment 2 ou 1) Reprsentation des flottants, Longueur variable et placement des zones mantisse et exposant. Codages variables des mantisses et exposant (en base 2 ,ou 16) Codage du bit signe. Reprsentation des types complexes . Pour la transmission des donnes dfinies partir de types complexes (agrgats, ou types construits "articles"). Reprsentation des pointeurs . Problme des adresses utilises par le matriel: des pointeurs peuvent figurer dans les structures de donnes changes.
-6-

Problmes lis aux langages (reprsentation abstraite des donnes) - Existence de trs nombreux langages (C, C++, Cobol, Ada, Java) dfinis indpendamment des rseaux. - Chaque langage effectue des choix concernant les types de donnes primitives et leur attribue un nom (syntaxe abstraite). - Chaque langage effectue des choix relativement aux objets (smantique des langages orients objets trs varies). - Chaque langage effectue des choix concernant les modes de transmission des arguments dans les appels procduraux. - Chaque compilateur effectue une correspondance entre les types de donnes du langage et les types du matriel. Faire en sorte que les diffrents choix effectus par les langages concernant les types et la transmission des arguments deviennent compatibles avec les rseaux

-7-

L'htrognit: un problme habituel pour les programmes Un programme crit pour un ordinateur donn (en langage machine) ne peut pas tre excut sur un autre ordinateur La solution "compile" crire l'application dans un langage de haut niveau. Convertir dans le langage d'une machine l'aide d'un compilateur adapt la machine. Compiler strictement le mme langage sur toutes les machines. La solution "interprte" crire l'application dans un langage de haut niveau (exemple pascal, java) puis compiler dans un langage intermdiaire (pcode, bytecode) d'une machine virtuelle. Utiliser sur chaque machine relle un interprteur du langage intermdiaire dans le langage particulier d'une machine cible.
-8-

L'htrognit des donnes dans les rseaux Rsoudre les problmes de reprsentation pour faire communiquer des systmes htrognes Solution directe "transcodage" crire pour un couple de machines deux traducteurs des reprsentations de l'une l'autre (approche analogue de la compilation).
Systme A Systme B

Convertisseur De Syntaxe
Convertisseur de

B -> A A -> B

Conversion directe de syntaxe Approche impraticable s'il faut faire communiquer sans restrictions un grand nombre d'ordinateurs incompatibles: Pour N systmes: N*N-1 convertisseurs.
-9-

Solution d'un langage intermdiaire "pivot" commun tout le rseau crire pour chaque machine un traducteur (compilateur) de la reprsentation de cette machine vers une reprsentation intermdiaire commune au rseau (schma analogue de l'interprtation). Notion de "syntaxe de transfert". (la faon dont les donnes sont codes dans les messages) Chaque machine doit disposer d'un traducteur de la reprsentation rseau (syntaxe de transfert) vers la reprsentation interne de la machine. Pour N machines le nombre de convertisseurs est rduit 2*N Application Application A B

Conversion A -> ST ST -> A

ST Syntaxe de transfert
- 10 -

Conversion B -> ST ST -> B

Syntaxe abstraite commune au rseau Chaque interface de service doit offrir une dfinition prcise et lisible des donnes ncessaires son invocation. Une syntaxe de transfert (plutt de niveau langage machine) est trs peu pratique pour dfinir et comprendre des structures de donnes => C'est le rle d'une syntaxe abstraite Chaque langage volu dfinit sa propre syntaxe abstraite de dfinition des donnes. => Les langages sont plus ou moins bons => Les concepts et les langages voluent. => Aucun langage ne s'impose. => Langages volus dfinis en dehors des problmes de la rpartition : pas tous les ingrdients ncessaires. Ncessit de dfinir une syntaxe abstraite commune au rseau diffrente des syntaxes abstraites des langages existants Nombreuses propositions. Message (ASN "Abstract Syntax Notation") Appel distant (IDL "Interface Definition Language")
- 11 -

Fonctionnement d'une syntaxe abstraite Le langage d'interface permet de dfinir de faon universelle les services d'un logiciel rseau et les donnes ncessaires. Exemples: IDL DCE, DCOM, CORBA Un programmeur utilisant un langage de dveloppement (C++, Java) de son choix: il existe une correspondance ("mapping") entre les donnes (objets) spcifis dans l'IDL et les donnes (objets) du langage. La traduction des directives IDL insres dans le langage volu est opre par un traducteur assez simple (compilateur de syntaxe abstraite).

- 12 -

Schma de fonctionnement

Langage de dfinition d'interface Machine A Machine B Application 1 IDL Application 2 langage L1 langage L2 + IDL + IDL Traduction Traduction IDL IDL Conversion A <-> ST ST Syntaxe de transfert Conversion B <-> ST

- 13 -

Conversion des donnes L'approche ASN1

- 14 -

Introduction ASN1

Reprsentation normalise des donnes changes dans le cadre du modle des systmes ouverts OSI. => Dfinition d'une syntaxe abstraite et d'une syntaxe de transfert ddie l'acheminement des donnes par message. Le codage et le dcodage des structures de donnes selon la norme ASN1 est le principal objet du niveau prsentation du modle OSI. Autres utilisations (hors modle OSI) Administration de rseaux SNMP ("Simple Network Management Protocol") Commerce lectronique SET ("Secure Electronic Transactions")

- 15 -

Plan du cours ASN1

Introduction 1. Syntaxe abstraite 2. Syntaxe de transfert Conclusion

- 16 -

1 Notation de syntaxe abstraite ASN.1

- 17 -

Introduction Syntaxe abstraite normalise ASN1 Normalisation ITU-CCITT CCITT X409 Norme de messagerie Normalisation ISO dans le cadre: Protocole de prsentation avec connexion ISO 8823 Protocole de prsentation sans connexion ISO 9576

Un protoc (APDU : "Application Protocol Data Unit") - Chaque APDU = Un type d'opration particulire faire raliser distance. - Un APDU comprend des donnes dont le nombre et le type peuvent varier pour chaque utilisation particulire de l'application et qui ncessitent une conversion. Pour cela il utilise les services du protocole de prsentation

- 18 -

Exemple Messagerie industrielle (MMS): Objectif MMS ("Manufacturing Messaging Service"): Lire distance, affecter distance des variables d'tat d'une machine, ou changer distance le programme de fabrication d'une machine outil. . Les entits d'applications doivent donner strictement le mme sens aux APDU et aux donnes contenues (suite de bits que le destinataire doit reconnatre). Exemple d'utilisation: lment de protocole destine fixer deux paramtres d'une machine outil VITESBROCHE : Un entier sur 8 bits LUBRIF : Un boolen Le destinataire doit tre capable: - de reconnatre le type d'opration (dans l'entte de l'APDU) - d'interprter les champs (les deux paramtres)
- 19 -

Solution: dfinir les donnes changes dans un langage de haut niveau - Une syntaxe abstraite dcrit des donnes dans une notation formelle non ambigu. - Approche ncessairement fortement type (chaque objet un type). - La description ASN.1 d'un type de donnes est appele sa syntaxe abstraite (parce qu'aucune reprsentation particulire n'est impose ce niveau). - A un type sont associes des oprations qui le caractrisent (lire, crire). - Premiers exemples de types de base Types prdfinis "integer", "boolean" , .... Types structurs "sequence" Liste ordonne de types, "choice" Un type quelconque pris dans une liste, "set" Collection non ordonne de types varis.

- 20 -

Exemple1: Activation d'une machine outil


Demarre_MO ::= SEQUENCE { vitesbroche INTEGER, lubrif BOOLEAN }

Exemple2: Descriptif au fichier du musum des dinosaures


Dinosaure ::= SEQUENCE { nom OCTET STRING, longueur INTEGER, carnivore BOOLEAN, os INTEGER, decouverte INTEGER }

Exemple3: Description partielle d'un journal d'oprations messagerie industrielle


CreatejournalrequestPDU::= confirmes-RequestPDU[0] IMPLICIT SEQUENCE { invokeID Unsigned32, listOfModifier SEQUENCE OF Modifier OPTIONAL, createjournal [69] IMPLICIT SEQUENCE {journalName[0] ObjectName} } Unsigned32 ::= INTEGER ObjectName ::= CHOICE { vmdspecific [0] IMPLICIT Identifier domainspecific[1] IMPLICIT SEQUENCE { domainID Identifier, itemID Identifier}, aaspecific[2] IMPLICIT Identifier}

- 21 -

Les types primitifs ASN.1 (types de base) Ces types servent de briques de base pour laborer des types complexes. Les mots rservs ASN.1 sont crits en majuscules. Les noms des types de base sont des mots rservs. Tableau des types primitifs
INTEGER BOOLEAN BIT STRING OCTET STRING NULL ANY OBJECT IDENTIFIER Entier de longueur quelconque Vrai ou faux Liste de 0 ou plusieurs bits Liste de 0 ou plusieurs octets Aucun type Union de tous les types Nom d'objet

Type primitif

Signification

- 22 -

Dtail des principaux types primitifs - Integer : entiers de taille arbitrairement grande, galement utilisable pour les types numrs par des dfinitions complmentaires (dimanche = 1, lundi = 2,) - Boolean : vrai ou faux - Bit string : dcrit des chanes binaires en binaire '010011101'B ou en hxadcimal '4D'H - Octet string : dfinit des listes ordonnes d'octets. - Any : permet de spcifier n'importe quel type (pour remplissage ultrieur de la zone par n'importe quel type). - Null : dfinit un objet sans type (vide) qui n'a pas besoin d'tre transmis. - Object identifier : dfinit un moyen d'identifier au moyen de chanes de symboles un objet dans un protocole: Exemple : {iso standard 8571 part 4 ftampci(1)} rfrence un objet dfinit dans la partie 4 de la norme 8571 FTAM.

- 23 -

Les types constructeurs ASN.1 - Sequence : permet de construire des types combinaison quelconque (de faon analogue au "record" pascal, "struct" C) . - Sequence of : permet de construire des tableaux d'un seul type. - Set : permet de construire des ensembles (collections non ordonnes) d'objets de types quelconques - Set of : permet de construire des ensembles d'objets du mme type. - Choice : dfinit une structure de donne qui doit comprendre des types appartenant un ensemble de types diffrents.
SEQUENCE SEQUENCE OF SET SET OF CHOICE Liste ordonne de types divers Liste ordonne d'un seul type Collection non ordonne de divers types Collection non ordonne d'un seul type Un type quelconque pris dans une liste

Type constructeur
- 24 -

Signification

Exemple de l'emploi de "choice" - Dfinition d'une application de transfert de travaux distance (un travail comporte trois parties). - La partie principale est constitue de commandes soit locales soit distance => emploi de "choice". - Les dfinitions manquantes sont supposes ralises dans une bibliothque annexe nomme joblib.
Job ::= SEQUENCE { header Account-PDU, body SEQUENCE OF Command-PDU, trailer Termin-PDU } Command-PDU ::= CHOICE { Local-command, Remote-command } Account-PDU ::= Joblib.account Local-command ::= Joblib.local Remote-command::= Joblib.remote Termin-PDU ::= Joblib.termination
- 25 -

Remarques complmentaires En plus des types primitifs et des types construits, ASN.1 spcifie galement des types prdfinis couramment utiliss. - Huit types de chanes diffrents ont t dfinis qui sont des sous-ensemble diffrent de OCTET STRING. - NumericString comporte les chiffres (de 0 9) et le caractre espace. - PrintableString comprend les lettres minuscules, les lettres majuscules, les dix chiffres, le caractre espace ainsi que les 11 caractres suivants : ()'+-.,/:=? - GeneralizedTime permet d'viter toute ambigut sur une date pour dterminer si 5/12 reprsente le 5 dcembre ou le 12 mai. Exemple: la valeur 19980427210538.8 pour le type GeneralizedTime indique 21 heures 05 minutes 38.8 secondes, le 27 avril 1998.
- 26 -

Notion de module On peut regrouper des dfinitions apparentes de type, de valeurs, de soustypes dans un module. Un module est identifi par son nom. La premire lettre d'un nom de module commence toujours par une majuscule. Exemple de module: nom du module puis DEFINITIONS
Couleur DEFINITIONS ::= BEGIN CouleurPrimaire::= ENUMERATED {rouge(0),jaune(1),blanc(2)} couleurParDefaut CouleurPrimaire ::= jaune END

- 27 -

Notion de macro La notation de syntaxe abstraite ASN.1 offre la possibilit de dfinir des types ou des valeurs au moyen de macros dfinition. Exemple de macro dfinition - X,Y abscisse et ordonne dans un systme de coordonnes rectangulaires. On veut traiter le couple X, Y comme un type auquel on donne le nom de complexe. - X et Y peuvent tre de types diffrents et redfinissables :X entier, Y rel (ou autres). - On utilise une notation spciale de faon pouvoir prciser un type COMPLEXE particulier en invoquant:
COMPLEXE TYPEX=.un premier type TYPEY=.un second type

- Avec cette notation on peut dfinir des types COMPLEXE1, COMPLEXE2 etc
COMPLEXE1::= COMPLEXE TYPEX = INTEGER TYPEY = INTEGER COMPLEXE2::= COMPLEXE TYPEX = REAL TYPEY = REAL
- 28 -

Macro dfinition de valeurs On veut que la notation de valeur pour une variable de type complexe soit de la forme: (X=...;Y=....)
-

- Avec par exemple pour une ralisation particulire de la variable de type COMPLEXE1: ( X=56;Y=3561) - Pour arriver dfinir ceci on utilise une macro de la forme :
COMPLEXE MACRO ::= BEGIN TYPE NOTATION::= "TYPEX" "=" type (TypAbscisse) "TYPEY" "=" type (TypOrdonnee) VALUE NOTATION::= "(" "X" "=" value (Abscisse TypAbscisse) ; "Y" "=" value (Ordonnee TypOrdonnee) ")" END

- 29 -

Attributs optionnel et dfaut "OPTIONAL" En pratique, il est trs utile de pouvoir dfinir des types de donnes complexes dont certains champs sont optionnels (renseigns ou pas). En ASN.1 mot cl OPTIONAL. "DEFAULT" Autre possibilit: dclarer ces champs DEFAULT, suivis de la valeur par dfaut qui devrait tre utilise par le rcepteur s'ils ne sont pas transmis. Problme L'existence de types OPTIONAL et DEFAULT pose des problmes pour identifier des donnes lorsque ces dernires sont reues. Supposons qu'une SEQUENCE possde 10 champs de mme type et tous optionnels. Seuls trois d'entre d'eux sont transmis. Comment le rcepteur dtermine-t-il de quels champs il s'agit?

- 30 -

Notion d'tiquette ("tag") - Le but de l'tiquetage est l'identification unique des champs pour lever les ambiguts. - Quatre types d'tiquettes sont prvues UNIVERSAL, APPLICATION, PRIVATE, tiquette spcifique au contexte. - Notation des tiquettes entre crochets. Exemple : [APPLICATION 4]. Chaque tiquette est dfinie par un numro unique (entier) qui identifie l'objet Il est prcd de l'un des mots rservs UNIVERSAL, APPLICATION ou PRIVATE, ou d'aucun mot rserv, auquel cas l'tiquette est spcifique au contexte. - Relativement la syntaxe de transfert. Chaque fois qu'un item est transmis son type, sa longueur et sa valeur sont transmis. Lorsqu'un type ou un champ est tiquet, l'tiquette est galement transmise.

- 31 -

Redondance des informations de type et d'tiquette - Si le rcepteur peut dire de quel item il s'agit en dcodant son tiquette, il est clair qu'il n'est plus ncessaire d'envoyer son type. - ASN.1 offre la possibilit de supprimer le codage du type pour des champs tiquets. - La suppression de l'mission de l'information de type se fait par le mot rserv IMPLICIT aprs l'tiquette. Exemple:[PRIVATE 7] IMPLICIT. - Si IMPLICIT n'est pas mentionn, l'tiquette et le type sont envoys.

- 32 -

Exemple du type dinosaure revisit Il est ici tiquet avec une option et une valeur par dfaut.
Dinosaure ::= [PRIVATE 6] IMPLICIT SEQUENCE { nom longueur carnivore

[0] IMPLICIT OCTET STRING, [1] IMPLICIT INTEGER, [2] IMPLICIT BOOLEAN DEFAULT TRUE, os [3] IMPLICIT INTEGER, decouvert [4] IMPLICIT INTEGER OPTIONAL }

ASN.1 permet de dfinir des types et des instances pour ces types. Soit pour le type Dinosaure l'instance ayant pour valeur celle du stgosaure.
{"stegosaure",10,FALSE,300,1877}

- 33 -

Grammaire de ASN1
ModuleDefinition ::= Name "DEFINITIONS ::= BEGIN" ModuleBody "END" ModuleBody ::= AssignmentList | Empty AssignmentList::=Assignment|AssignmentList Assignment Assignment ::= Name "::=" Type Type ::= ExternalType | BuiltinType ExternalType ::= Name "." Name BuiltinType::=PrimitiveType|ConstructedType|TaggedType PrimitiveType::=Integer|Boolean|BitSt|OctetSt|Any|Null |ObjId ConstructedType::=Sequence|SequenceOf|Set|SetOf|Choice TaggedType ::= Tag Type | Tag "IMPLICIT" Type Integer ::= "INTEGER" | "INTEGER" "{"NamedNumberList"}" Boolean ::= "BOOLEAN" BitStr ::= "BIT STRING" | "BIT STRING" "{"NamedBitList"}" OctetStr ::= "OCTET STRING" Any ::= "ANY" Null ::= "NULL" ObjId ::= "OBJECT IDENTIFIER" Sequence::="SEQUENCE""{"ElementListType"}"|"SEQUENCE{} " SequenceOf ::= "SEQUENCE OF" Type | "SEQUENCE" Set ::= "SET" "{"ElementListType"}" | "SET {}" SetOf ::= "SET OF" Type | "SET" Choice ::= "CHOICE" "{"AlternativeTypeList"}" Tag ::= "[ClassUnsignedNumber"]" Class ::= "UNIVERSAL" | "APPLICATION"|"PRIVATE" |Empty NamedNumberList ::= NamedNumber | NamedNumberList "," NamedNumber NamedNumber ::= Name "(" UnsignedNumber ")" | Name "(" "-" UnsignedNumber ")" NamedBitList ::= NamedBit | NamedBitList "," NamedBit NamedBit ::= Name "(" UnsignedNumber ")" ElementListType ::= ElementType | ElementTypeList "," ElementType ElementType ::= NamedType | NamedType "OPTIONAL" | NamedType "DEFAULT" Value NamedType ::= Name Type | Type AlternativeTypeList ::= NamedType | AlternativeTypeList","NamedType UnsignedNumber ::= Digit | UnsignedNumber Digit Digit ::= "0"| "1"| "2"| "3"| "4"| "5"|"6"|"7"|"8"|"9" Empty ::=

- 34 -

2 Syntaxe de transfert

- 35 -

Introduction la syntaxe de transfert - Dfinition des rgles de codage des structures de donnes ASN.1 en une suite binaire pour la transmission. - Chaque message transmis comprend une suite d'objets cods qui peuvent eux mme comporter dans leur dfinition une suite d'objets cods ... Approche rcursive de l'encodage dcodage. Le codage d'un objet lmentaire est dfini par des rgles simples baptises: BER "Basic Encoding Rules" BER est la reprsentation concrte de chaque objet primitif pour la communication entre entits distantes.

- 36 -

Premire possibilit: syntaxe de transfert avec typage implicite

Typage implicite champ 1

Typage implicite champ 2

Longueur Valeur Longueur Valeur champ 1 champ 1 champ 2 champ 2

Option non retenue Difficult pour les valeurs optionnelles.

- 37 -

Solution retenue: syntaxe de transfert avec typage explicite - Chaque champ est accompagn d'une information permettant de reconstruire son type la rception. - La zone valeur peut-tre dtermine de deux faons. Longueur connue avant l'mission Aucune difficult pour renseigner un champ longueur avant l'mission de la valeur.
Identificateur Type Longueur Valeur du champ 1 champ 1 champ 1 message ...

Longueur inconnue avant l'mission La longueur n'est pas renseigne. La valeur est dtermine par un dlimiteur fin
Type Longueur Valeur Dlimiteur de fin

- 38 -

Structure des objets de la syntaxe de transfert Chaque valeur transmise (d'un type primitif ou d'un type construit) comporte les champs suivants : L'identificateur du type cod comme un type ou cod comme une tiquette ou les deux, La longueur de la donne en octets. La donne,

- La marque de fin si la longueur des donnes est inconnue. Les trois premiers champs sont obligatoires, alors que le dernier est optionnel.

- 39 -

L'identificateur (type ou tiquette) d'un objet - Le premier octet d'un item transmis selon la syntaxe de transfert ASN.1 - Il possde lui-mme trois sous-champs. Premier champ: 2 bits Type d'tiquette "tag" Second champ: 1 bit Type primitif ou construit Troisime champ: 5 bits Code du type universel ou valeur tiquette.

2 bits 1 bit Tag

5 bits Number 0 : type primitif 1 : type constructeur 00 UNIVERSAL 01 APPLICATION 10 spcifique au contexte 11 PRIVATE

- 40 -

Classes de types et codage correspondant

Classe (franais) Universel Application Spcifique un contexte A usage priv

Classe (anglais) Universal Application wide Context spcific Private use

Fonction

Valeur premiers bits 00 01 10 11

Type usage gnral, indpendant de l'application Type particulier une application Type particulier un contexte l'intrieur d'une application Type rserv un usage priv

- 41 -

Affectation des codes de types universels et codage


Code ID 1 2 3 4 5 6 7 8 9 10 11-15 16 17 18 19 20 21 22 23 24 25 26 27 28 Type(franais) Boolen Entier Chane binaire Chane d'octets Vide Identificateur d'objet Descripteur d'objet Externe Rel Enumr Rserv Squence, Squence de Ensemble, ensemble de Chaine numrique Chaine imprimable Chane T.61 Chane videotex Chane IA5 Heure UTC Heure gnralise Chane graphique Chaine ISO 646 Chane gnrale Rserv Type(anglais) BOOLEAN INTEGER BIT STRING OCTET STRING NULL OBJECT IDENTIFIER Object descriptor EXTERNAL REAL ENUMERATED SEQUENCE, SEQUENCE OF SET, SET OF NumericString PrintableString TeletexString VideotexString IA5String UTCTime GeneralizedTime GraphicString VisibleString GeneralString
Bit 6: primitif:0 constructeur:1 Ident de type en hexadcimal

0 0 0/1 0/1 0 0 0 1 0 0 1 1 0/1 0/1 0/1 0/1 0/1 0/1 0/1 0/1 0/1 0/1

01 02 03/23 04/24 05 06 07 28 09 0A 30 31 12/32 13/33 14/34 15/35 16/36 17/37 18/38 19/39 1A/3A 1B/3B

- 42 -

Complments concernant les codages Entiers Les entiers sont cods en complment 2. L'octet le plus significatif est transmis en tte. Le codage du champ de donnes dpend du type de donnes prsentes. . Un entier positif infrieur 128 ncessite un seul octet, . Un entier positif infrieur 32768 ncessite deux octets, etc ... Boolens Les boolens sont cods sur un octet. 0 pour FALSE une valeur diffrente pour TRUE.

- 43 -

Chanes de bits Emises telles que. Seul problme: indiquer leur longueur. Le champ longueur indique le nombre d'octets et non le nombre de bits. => Problme du dernier octet. On transmet un octet avant la chane de bits proprement dite qui indique combien de bits (entre 0 et 7) du dernier octet ne sont pas utiliss. Exemple: Codage de '010011111' En hexadcimal : 07 4F 80. Chanes d'octets Les octets sont numrots de gauche droite ("big endian"). La valeur nulle est repre par un champ de donnes inexistant (0 octet de longueur).

- 44 -

Sequence et Set - On commence par transmettre le type ou l'tiquette pour la squence ou l'ensemble, puis la longueur totale du codage de tous les champs, puis les valeurs. - Les champs d'une squence doivent tre envoys dans l'ordre. Les champs d'un ensemble peuvent tre transmis dans un ordre quelconque. - Si deux ou plusieurs champs d'un ensemble ont le mme type, ils doivent tre tiquets afin que le rcepteur puisse les distinguer les uns des autres. Choice Le codage d'une valeur de type CHOICE est celui de la structure de donnes qui est rellement envoye (avec ce codage le rcepteur peut interprter un type indfini). Exemple: si on a le choix entre un INTEGER et un BOOLEAN, et si la structure de donnes manipule est en fait un INTEGER, alors les rgles de codage du type INTEGER s'appliquent.
- 45 -

Approfondissement: Ralisation des codeurs/dcodeurs (compilateurs de protocoles)

- Le codeur/dcodeur doit raliser la conversion entre la reprsentation concrte de chaque machine et la syntaxe de transfert. - Pour faciliter ces conversions de syntaxe, il est commode d'adopter une reprsentation de la syntaxe abstraite dont la structure reflte l'APDU - L'analyseur syntaxique d'une dfinition de donnes en syntaxe abstraite gnre une structure d'arbre (premire tape habituelle d'un compilateur) sur lequel travaille ensuite les convertisseurs..

- 46 -

Exemple
FichePersonnel ::= [APPLICATION 0] IMPLICIT SET {Nom, matricule [0] IMPLICIT INTEGER, compteSalaire[1] CHOICE { bancaire [0] IMPLICIT VisibleString, postal [1] IMPLICIT VisibleString}} Nom ::= [APPLICATION 1] IMPLICIT SEQUENCE { prenom VisibleString, nomFamille VisibleString}

Reprsentation par arbre de type


FichePersonnel [APPLICATION 0] IMPLICIT SET Nom matricule [APPLICATION 1] [0] IMPLICIT IMPLICIT SEQUENCE INTEGER compteSalaire [1] CHOICE

postal bancaire prenom nomFamille VisibleString VisibleString [0] IMPLICIT [1] IMPLICIT VisibleString VisibleString

Arbre des valeurs pour la ficheMartin


FichePersonnel Nom matricule 3586 nomFamille Martin compteSalaire

prenom Georges

bancaire

postal 528763M

- 47 -

Fonctionnement du codeur Premire passe


60 * 61 * 1A 1A 80 A1 02 * 81 07 47656F72476573 06 4D417274494E 0E02 02 3532383736334D fiche perso nom prnom nomFamille matricule compte postal

. Initialisation des zones valeurs qui correspondent aux symboles terminaux avec dtermination des longueurs dans ce cas. . Les zones longueurs des noeuds intermdiaires sont non calcules. Deuxime passe
60 22 61 11 1A 1A 80 A1 02 09 81 07 47656F72476573 06 4D417274494E 0E02 02 3532383736334D nom prenom nomFamille matricule compte postal

Dtermination complte des longueurs

- 48 -

Ensemble des outils logiciels

Messages entrants Logiciel de dcodage Syntaxe X209

Application rseau PDU dcode

Messages sortants Logiciel de codage Syntaxe X209

Arbre de types

Compilateur

Syntaxe abstraite

- 49 -

Conclusion ASN1 - ASN1 est uniquement dfinie pour coder des donnes transportes dans le mode message. - ASN1 achemine toutes les informations ncessaires pour interprter de faon non ambige toute donne la rception => Un peu de perte de place - ASN1 cherche en codant les informations au plus court optimiser l'encombrement des messages . => Des temps d'excution plus longs pour coder et dcoder un message. => Des performances et des possibilits moyennes. Amliorations - Simplifier les possibilits offertes dans le cadre d'implantations particulires pour aller plus vite (ASN1 pour le temps rel). - Introduire des fonctionnalits pour l'approche appel de procdure distante et l'approche objets rpartis (les IDL).
- 50 -

Le langage IDL CORBA "Interface Definition Language"

- 51 -

Gnralits - Le langage utilis par CORBA pour spcifier les interfaces d'objets: les noms des mthodes, les paramtres , les exceptions ... syntaxe abstraite des interfaces d'objets CORBA - L'IDL CORBA n'est pas un langage destin a produire des programmes excutables habituels (langage algorithmique). - C'est un langage "dclaratif" qui permet d'tablir les correspondances entre un client utilisateur (en langage du programme client) et un objet serveur (dfini en langage du serveur). - Sa compilation produit les souches clients et serveurs. - Dfini partir de C++ il prsente nanmoins des diffrences avec C++ (notion de langage "pivot").
- 52 -

Les types de base (primitifs) Entiers - short entiers 16 bits -215 215 -1 - long entiers 32 bits -231 231 -1 - unsigned short entiers non signs 16 bits 0 216 -1 - unsigned long entiers non signs 32 bits 0 232 -1 Flottants ( la norme IEEE) - float flottants 32 bits (simple prcision) - double flottants 64 bits (double prcision) Boolens Deux valeurs TRUE/FALSE Caractres Cod sur 8 bits. Octets 8 bits quelconques Type quelconque Dsigne n'importe quel type.
- 53 -

- boolean

- char

- octet

- any

Les types complexes - struct Type article struct type_triplet {


float x , y , z ; };

- enum

Type numr enum type_rvb {


rouge , vert , bleu };

- union

Type variable avec discriminant union montant switch (code_pays) { case FR : unsigned float francs ; case SP : unsigned float pesetas ; case IT : unsigned float lires ; }; Type tableau typedef long tableau[25]

- []

- sequence Suite ordonne de valeurs typedef sequence<long> zone; typedef sequence<sequence<short,5>> zone; - string Type chane typedef string<50> chaine ;
- 54 -

Les caractristiques objets Un exemple regroupant les principales caractristiques module Voiture { struct chassis { float longueur; float largeur; } /* Dfinition d'une classe cabriolet */ interface Cabriolet : vhicule_thermique ; { attribute readonly integer puissance ; exception Panne { short code_exception ; string explication ; } long acclre ( in short dure); void rparer ( ....

- 55 -

Quelques lments des caractristiques objets Modules Permettent de structurer une application en regroupant des dclarations de types et d'interfaces logiquement associes. Interfaces Regroupent des attributs et des dclarations d'oprations. Attributs Variables d'un objet accessibles de l'extrieur de l'objet par des mthodes prdfinies lire : _get et crire: _set (cas particulier des attributs readonly).

- 56 -

Oprations Associes chaque mthode la spcification des oprations comporte: . un nom, une liste de paramtres avec un atttribut directionnel in, out, inout. . la spcification d'un type d'information attendue en retour (void si aucune information n'est retourne). Exceptions La spcification des exceptions permet de dfinir des types de problmes prvus l'avance. Une exception comporte des informations permettant de prciser la nature du problme. A une exception correspond un traitant d'exception qui est dcrit dans le langage d'excution. On doit spcifier pour chaque opration lve quelles exceptions sont leves (mot cl raises). Hritage Les spcifications d'interfaces peuvent tre rutilises. L'hritage peut tre multiple. interface Cabriolet : vhicule_thermique;
- 57 -

L'interoprabilit en CORBA

- Dans ses premires versions CORBA spcifiait de faon insuffisante les ORB: messages changes, rfrence d'objets. => Des implantations de CORBA pouvaient tre conformes sans tre interoprables. Avec CORBA 2, l'OMG a dfini des protocoles normaliss d'interactions entre ORB. GIOP 'General Inter ORB Protocol' Un standard de communication gnrique entre ORB. - Ensemble des messages utiliser - Syntaxe de transfert des donnes CDR "Common data representation" IIOP 'Internet Inter ORB Protocol' Une implantation de IIOP sur TCP/IP. ESIOP 'Environment Specific Inter ORB Protocol' Implantation utilisant le RPC DCE.
- 58 -

GIOP 'General Inter ORB Protocol' But principal: fournir un cadre pour permettre l'invocation d'objets distants quelquesoit l'ORB utilis pour les grer. Rfrence Interoprable d'objets IOR Interoperable Object Reference Dfinit une structure de donne normalise utilisable pour identifier de manire unique les objets. - L'adresse de la machine ou se trouve l'ORB - Le moyen d'accder cet ORB (Ex: son adresse de transport). - Une rfrence locale de l'objet laisse au libre choix de chaque ORB. Un exemple d'IOR 1.0:sunrpc_2_0x61a79_153029598/rm=tcp_ 163.173.128.208_3503:IDL%3AMath%3A/ Math/Calcul

- 59 -

Protocole GIOP (1) 7 types de messages diffrents. Request : mis par le client pour invoquer des oprations sur les objets ou serveurs CORBA. - identificateur de requte. - valeurs des paramtres en entre (mode in et inout). Reply : mis par le serveur en rponse un message Request. - identificateur de la requte. - valeur des rsultats de l'opration ainsi que les paramtres en sortie de celle-ci (mode inout et out). - valeur de l'exception s'il y en a. CancelRequest: un client d'informe un serveur qu'il n'attend plus la rponse une requte. LocateRequest : localisation d'une rfrence IOR (si le serveur interrog est capable de recevoir des requtes pour l'objet donn) Sinon dtermination de la nouvelle adresse IOR permettant d'accder l'objet (localisation migration des objets).

- 60 -

Protocole GIOP (2) LocateReply : Rponse un message de type LocateRequest. - Un boolen indique si la rfrence IOR dsigne un objet local. - Si ce boolen est faux, alors le message contient en plus une rfrence IOR indiquant la nouvelle localisation de l'objet. CloseConnection : Le serveur interrompt son service. Toutes les requtes en attente de rponses ne seront jamais traites. MessageError : Erreur de protocole En rponse tout message GIOP qui ne peut pas tre trait car il est erron. numro de version inconnu, type de message inconnu, en-tte erron...;

- 61 -

La syntaxe de transfert de CORBA "CDR Common Data Representation" Le format dans lequel CORBA reprsente les donnes dcrites en IDL transfres de machine machine. Les types primitifs - Notion de flot d'octets ("octets streams") qui encodent les donnes: 0 .. n-1 - Contraintes de remplissage des flots d'octets par les diffrents types (alignement). Type Alignement char 1 octet 1 short 2 unsigned short 2 long 4 unsigned long 4 float 4 double 8 boolean 1 enum 4
- 62 -

Types entiers short: entiers signs en complment 2 sur 16 bits unsigned short : entiers non signs sur 16 bits long: entiers signs en complment 2 sur 32 bits unsigned long : entiers non signs sur 32 bits Deux versions de codage (grand boutiste et petit boutiste)
Grand-boutiste Big-Endian
octet

Petit-boutiste Little-Endian
octet LSB MSB 0 1 0

short

MSB LSB

MSB

0 1 2 LSB 3 MSB

LSB

0 1 2 3

long

- 63 -

Types flottants Selon la normalisation IEEE signe s, exposant e, mantisse ( "fraction part") f float: flottants sur 32 bits s:1bit, e:8 bits, f:23 bits Valeur := (-1)s * 2(e-127) * (1+f) double: flottants sur 64 bits s:1bit, e:10 bits, f:52 bits Valeur := (-1)s * 2(e-1023) * (1+f)
Grand-boutiste Big-Endian
octet s e1 f1 f2 f3 0 1 2 3 e2 s f3 f2 f1 e1

Petit-boutiste Little-Endian
octet 0 1 2 3

float

e2

s e2

e1 f1 f2

0 1 2 3 4 5 6 7 s e2

f7 f6 f5 f4 f3 f2 f1 e1

0 1 2 3 4 5 6 7

double

f3 f4 f5 f6 f7

- 64 -

Type octet Valeurs sur 8 bits non interprtes. Aucune conversion n'est applique pendant la transmission. On peut par exemple considrer qu'il s'agit d'entiers sur 8 bit non signs. Type boolen Encods sur un octet. TRUE la valeur 1 FALSE la valeur 0. Type caractre Encods sur un octet. Selon l'alphabet ISO 8859.1 (Latin-1).

- 65 -

Les types construits Principe gnral: ralisation de l'alignement "marshalling" par compilation d'une liste d'appels des routines de conversion. Pas de contraintes particulires de frontires de mots ou d'octets. Type struct Les composants d'une structure sont ranges dans un message dans l'ordre des dclarations. Type union On code d'abord le discriminant du type union puis on code la reprsentation de la variable transmettre selon le type associ au discriminant.

- 66 -

Type array On code le tableau par une suite d'lments de mme type. Pour les tableaux multidimensionnels on utilise l'ordre des indices. Type sequence On code d'abord le nombre d'lments dans la squence par un entier non sign long. Type chane On code d'abord la longueur de la chane par un entier non sign long. Puis la suite des caractres en ISO latin 1 Type enum On code les types numrs sur entier non sign long. les valeurs des entiers associs sont dtermins par l'ordre dans lequel apparat chaque valeur numre en commenant par 0.
- 67 -

Vous aimerez peut-être aussi