Description par langage algorithmique 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)
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
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
Dostları ilə paylaş: |