Institut national des sciences appliquees de lyon


Description par langage algorithmique



Yüklə 1,32 Mb.
səhifə16/44
tarix02.11.2017
ölçüsü1,32 Mb.
#28728
1   ...   12   13   14   15   16   17   18   19   ...   44

Description par langage algorithmique

  1. Objet

Une description formelle de protocole complète et non ambigüe ne peut être fournie que par un langage adapté. Si Pascal a parfois été utilisé ( par exemple description formelle des protocole Ethernet ou standards OSI 8802.3 ) on a normalement recours à des langages spécifiques.


Le langage de spécification et de description fonctionnelle LDS du CCITT (recommandations Z100 à Z104 ) ou le langage PDIL (Protocol Description and Implémentation Language ) développé à l' Agence de l'Informatique (Projet Rhin) sont des représentants d'une première génération de ces langages. Le langage Estelle en cours de normalisation à l'OSI (standard ISO/IS 9074) doit les remplacer et servir à décrire tous les protocoles de communication. Pour la représentation des données, le CCITT à aussi édité la recommandation X.409 ( "syntaxe de transfert" ) retenu par à l'OSI: Standard ASN0 (Que coder) et ASN1 (Comment coder). Une description de plus haut niveau d'abstraction est fournie par le langage normailsé LOTOS (standard ISO/IS 8807)

    1. Langage Estelle

Le langage Estelle est un surensemble de Pascal OSI qui permet de modéliser des protocoles de communication par automates d'états finis étendus. Il possède une structure modulaire très structurée en "spécifications", "Processus" et "Activité". Il prend en compte le parallélisme entre processus de même niveau sur des architectures mono ou multiprocesseurs. Il introduit non seulement une description des automates mais aussi des interactions avec l'environnement à travers des "canaux" où transitent ces interactions.


La description d'un automate est introduite par le verbe trans.
Les événements entrants sont indiqués par when

l'état actuel par from

l'état suivant par to

un prédicat par provided

un événement sortant par output
Lorsque qu'une transition renvoie dans le même état le nom de celui-ci peut être remplacé par same
Les retards peuvent être introduits par la clause delay
Les canaux, introduits par la clause channel sont décrits avec une grande précision. Les rôles des entités qu'ils relient sont décrites et ils contiennent la listes des événements pouvant transiter dans chaque sens.
D'autres clauses permettent de prendre en compte l'environnement de l'entité décrite et une gestion dynamique des modules instanciés.

Nota: Le tome 5 "Méthodologie de conception des logiciels de communication" fournit une description plus complète des langages de spécification ou description fonctionnelle : LDS, LOTOS et ESTELLE

    1. Exemples de codage algorithmique d'un automate

attendre "événement entrant"

lorsque "événement entrant" vaut

soit CONReq

selon "état"

cas: Repos

si P1 vrai

alors


DATReq (CR)

"état" = Connex

sinon

CONReq


"état" = Attente

cas: Autre

signaler_défaut

soit CONConf

selon "état"

cas: Attente

DATReq (CR)

"état" = Connex

cas: Autre

signaler_défaut

soit LR { DATInd (LR) }

selon "état"

cas: Connex

CONConf-


"état" = Repos

cas: Autre

signaler_défaut

soit CC { DATInd (CC) }

selon "état"

cas: Connex

CONConf+

"état" = Transfert

cas: Autre

signaler_défaut

soit DT { DATInd (DT) }

selon "état"

cas: Transfert

dat = extrait(DT)

DATInd (dat)

cas: Autre

signaler_défaut

soit LC { DATInd (LC) }

selon "état"

cas: Deconnex

LIBConf

"état" = Repos



cas: Autre

signaler_défaut

soit DATReq

selon "état"

cas: Transfert

DT = PCI//dat

DATReq(DT)

cas: Autre

signaler_défaut

soit LIBReq

selon "état"

cas: Transfert

DATReq(LR)

"état" = Deconnex

cas: Autre

signaler_défaut

soit AUTRE

signaler défaut


attendre "événement entrant"

selon "état"

cas: Repos

lorsque "événement entrant" vaut

soit CONReq

si P1 vrai

alors

DATReq (CR)



"état" = Connex

sinon


CONReq

"état" = Attente

soit AUTRE

signaler_défaut

cas: Attente

lorsque "événement entrant" vaut

soit CONConf

DATReq (CR)

"état" = Connex

soit AUTRE

signaler_défaut

cas: Connex

lorsque "événement entrant" vaut

soit LR { DATInd (LR) }

CONConf-

"état" = Repos

soit CC { DATInd (CC) }

CONConf+


"état" = Transfert

soit AUTRE

signaler_défaut

cas: Transfert

lorsque "événement entrant" vaut

soit DT { DATInd (DT)

dat = extrait (DT)

DATInd (dat)

soit DATReq

DT = PCI // dat

DATReq (DT)

soit LIBReq

DATReq (LR)

"état" = Deconnex

soit AUTRE

signaler_défaut

cas: Deconnex

lorsque "événement entrant" vaut

soit LC { DATInd (LC) }

LIBConf


"état" = Repos

soit AUTRE

signaler_défaut

cas: autre

signaler_défaut

Exemple de codage Estelle



Exemple (simplifié) de description Estelle
Specification Exemple systemprocess;
{ déclarations }
channel SUP_acces_point (Utilisateur, Fournisseur)
by Utilisateur:

CONReq


DATReq (dat : dataType)

LIBReq


by Fournisseur

CONConf+


CONConf-

DATInd (dat)

LIBConf
channel INF_acces_point (Utilisateur, Fournisseur)
by Utilisateur:

CONReq


DATReq (DATn : DATnType)

by Fournisseur:

CC { DATInd (CC) }

LR { DATInd (LR) }

DT (dat : dataType) { DATInd (DT) }

LC { DATInd (LC) }

CONConf
initialize
to Repos

begin


"

"

end;



trans
When CONReq

from Repos

provided P1

to Connex

begin

output DATReq (CR)



end;

provided not P1

to Attente

begin


output CONReq

end;


from EITHER

to same


begin

signaler_défaut

end;

When CONConf+



from Attente

to Connex

begin

output DATReq (CR)



end;

from EITHER

to same

begin


signaler_défaut

end;
When DATReq

from Transfert

to same


begin

DT = .....//dat;

output DATReq (DT)

end;


from EITHER

to same


begin

signaler_défaut

end;
When LIBReq

from Transfert

to Deconnex

begin


output DATReq (LR)

end;


from EITHER

to same


begin

signaler_défaut

end;
trans
from Connex

when LR { DATInd (LR) }

to Repos

begin


output CONconf-

end;


when CC { DATInd (CC) }

to Transfert

begin

output CONconf+



end;

from Transfert

when DT { DATInd (DT) }

to same


begin

dat = .......;

output DATInd (dat)

end;


from Deconnex

when LC { DATInd (LC) }

to Repos

begin


output LIBconf

end;


from EITHER

to same


begin

signaler_défaut

end;

LIAISON DE DONNEES



Dans les chapitres suivants nous étudions une liaison de données élémentaire entre deux équipements.
Cette étude portent sur les couches 1 et 2 du Modèle de référence de l'OSI :
- Liaison physique

- Liaison de données (logique)


Une telle liaison permet d'assurer le transfert de blocs de données (trames) fiables entre deux systèmes informatiques ou informatisés.
Nous traiterons une liaison physique classique, utilisant des modems (et une liaison directe entre équipements). Cette étude porte non seulement sur la jonction V24 mais aussi sur la manière de l'utiliser (X20bis et X21bis) et les interfaces d'accès aux réseaux numériques X21 (et X20).
Nous analyserons la liaison logique pour les protocoles (anciens) de type BSC et le protocole HDLC. Ce protocole est le premier protocole moderne; il est aussi traité comme exemple d'un protocole de communication.

LIAISON PHYSIQUE

  1. Yüklə 1,32 Mb.

    Dostları ilə paylaş:
1   ...   12   13   14   15   16   17   18   19   ...   44




Verilənlər bazası müəlliflik hüququ ilə müdafiə olunur ©muhaz.org 2024
rəhbərliyinə müraciət

gir | qeydiyyatdan keç
    Ana səhifə


yükləyin