Next: Àpropos de ce
Up: Petite Classe Concept Reseaux
Previous: Multiplexage
L'objectif est de construire de manière incrémentale les
éléments de base d'un protocole de liaison de données orienté
bit.
On considère une liaison de donnés point-à-point avec
transmission de messages utilisateurs uniquement d'un ETTD vers un
ETTD . On ne s'occupera de plus que de la phase de transfert
d'information (de vers ) et pas des fonctions de gestion de la
connexion (établissement, libération, maintien).
On suppose le circuit de données totalement fiable et une capacité
de mémorisation illimitée sur l'ETTD .
- Quelles sont les fonctions à remplir par le protocole ?
- Donner la structure la plus simple pour la trame.
- Ecrire une procédure E1 pour l'émetteur et une
procédure R1 pour le récepteur pour la mise en oeuvre du protocole.
On lève maintenant l'hypothèse de capacité illimitée de l'ETTD
.
On suppose que le récepteur ne peut stocker qu'une trame à la
fois. Une trame arrivant en est mémorisée, analysée puis
remise à l'utilisateur mais avec un temps de traitement non
négligeable et bien sûr inconnu de .
- Quelles sont les nouvelles fonctions à implanter ?
- Comment modifier la structure de trame et les procédures ?
- Ecrire les procédures E2 et R2 correspondantes.
On lève maintenant l'hypothèse de fiabilité du circuit de
données. Répondre aux mêmes questions. On validera de plus
les 2 affirmations suivantes :
- Le récepteur doit traiter de la même façon les
trames reçues érronées et les trames non reçues : ne rien faire.
- Il est nécessaire de numéroter les trames (1 bit suffit)
pour assurer le séquencement et la non duplication des informations
utilisateurs.
Dans les 3 étapes, l'écriture des procédures se fera
en utilisant des formes algorithmiques usuelles par exemple dans le
style PASCAL (tant que faire, si alors sinon, repeter jusqu'a,
DebutBloc FinBloc ...).
On pourra supposer que la communication entre les procédures
que l'on veut écrire et l'utilisateur qui veut envoyer des
messages se fait par l'intermédiaire d'un buffer User-Buffer
(rempli par l'utilisateur). On utilisera alors les fonctions :
- Est_Vide(buffer) qui indique si le buffer est vide ou non.
- Contenu(buffer) qui retourne le premier message du buffer
sans modifier le buffer.
- Purge(buffer) qui supprime le premier message du buffer.
Pour l'intéraction entre le support physique (circuit de données)
et les procédures que l'on écrit, on pourra supposer définies
les procédures suivantes :
- Envoyer(sequence-bit) qui prend une séquence de bit
pour la mettre sur le support physique.
- Insere-Zero(sequence-bit) qui retourne la séquence de
bits après insertion d'un bit zéro après chaque sous-séquence de 5
bits consécutifs à 1. (de manière plus générale
on pourrait prendre une fonction Transparence avec un
algorithme différent)
- Lecture_jusqu'a_flag qui écoute le support physique et
retourne la séquence de bits jusqu'au prochain Flag. Le Flag n'est pas
retourné par la procédure. La séquence peut donc être
vide.
- Supprime_Zero(sequence_bit) qui retourne la séquence
après suppression des bits zéro de transparence.
N.B. : dans la réalité cette fonction serait incluse dans
Lecture_jusqu'a_flag car l'élimination de la transparence et la
reconnaissance du Flag correspondent au même algorithme interne.
Next: Àpropos de ce
Up: Petite Classe Concept Reseaux
Previous: Multiplexage
Pascal Hennequin (LOR-AIGRI)
Tue Jan 21 15:53:39 MET 1997