Title: Chapitre%204
1Chapitre 4
- Lacquittement
- (acknowledgment)
Auteur des transparents L. Logrippo w3.uqo.ca/lui
gi
2Protocoles
- Procédures concernant la communication
- Afin que deux ou plusieurs parties puissent
communiquer, ils doivent utiliser un protocole
commun - P.ex. pour communiquer par la poste, il faut
informer les autres de votre adresse, il faut
regarder dans la boîte aux lettres
périodiquement, poster aux boîtes rouges,
utiliser des enveloppes, des timbres, etc.
3Deux généraux qui doivent prendre une ville
- Seulement en agissant ensemble peuvent-ils
gagner - Un général nattaquera que sil est certain que
lautre attaquera aussi - Le seul moyen de communication est un pigeon
4Un dialogue sans espoir
- Général A envoie un message attaquons à 6h
demain - Attaqueront-ils?
- Non, A attendra confirmation
- Général B envoie une réponse daccord à 6h
demain - Attaqueront-ils?
- Non, B attendra confirmation
- Général A répond encore daccord à 6 h demain
- Attaqueront-ils?
- Non, A attendra confirmation
- Etc
5Il ny a pas de protocole pour résoudre ce
problème!
- Preuve (informelle) (v. notes de cours du Prof.
Pelc pour une preuve plus générale) - Supposez quun protocole existe
- Il doit impliquer au moins un message
- Il doit être tel que si le dernier message est
perdu, les généraux attaquent - Donc le dernier message ne serait pas nécessaire
- Enlevons le dernier message pour un protocole
plus efficace - Le même raisonnement sapplique inductivement à
tout message, y inclus le premier! - Aucun message ne serait nécessaire
- contradiction
6Erreurs résiduels
- Après analyse, on découvre que ce résultat
sapplique à nimporte quel protocole! - Il nest pas possible détablir laccord certain
dans le cas de canaux avec perte - Un aspect fondamental de la preuve est que nous
ne savons pas combien de fois le milieu va
échouer - Si nous savons que sûrement il y aura succès au
moins 1 fois sur 10, alors lenvoi de 10 pigeons
suffira - Étant donné que normalement il est impossible
détablir ce type de borne, il nest pas possible
détablir la certitude globale dans les systèmes
répartis - Nimporte la complexité du protocole et la
fiabilité du milieu, il y a toujours la
possibilité derreurs résiduels - On parle donc de taux derreur résiduel (residual
error rate) - Il est vrai cependant que dans les supports de
communication modernes (fibres optiques, etc.) la
fiabilité est extrêmement élevée - Et nous avons aussi des applications pour
lesquelles la fiabilité absolue nest pas
nécessaire - Si un paquet est perdu dans la transmission de la
parole, de la musique, dune image de télévision,
lusager pourrait ne pas sen rendre compte
7Problèmes de sécurité
- Considérez aussi la possibilité que le pigeon
puisse être intercepté et remplacé par un autre
pigeon avec un message différent
8Fonctionnalité des acquittements
- Dans les systèmes télématiques, les acquittements
peuvent avoir deux fonctions différentes - Simplement faire savoir que le message a été reçu
- Surtout dans la couche liaison de données
- Répondre à la requête
- Surtout dans la couche application
- Cest la première fonction qui nous préoccupe en
ce chapitre
9La détection derreurs dans les modèles à couche
- Quelle couche est la plus appropriée pour la
détection derreurs? - Dans l OSI, la détection derreurs se fait
- un peu partout dans les premières 4 couches
- surtout dans la couche 2 Liaison de données
- pas du tout après la couche Transport
- Dans le TCP/IP, elle se fait à la couche TCP
(Transport) - Cependant en principe il ny a pas de couche
préférable - Chaque couche doit en quelque sorte se préoccuper
derreurs à son niveau - Détectable p.ex. comme réception non spécifiée
- Même dans les applications nous devons nous
préoccuper de la possibilité derreurs - P.ex. une application de base de données qui
reçoit une requête dans un format non valable
10Protocoles à trois étapes Three-way handshake
- Utilisé dans TCP, connexion et déconnexion
- Et dans un grand nombre dautres protocoles
Invitation
Accept (ou non)
Confirm.
11Avec ré-essai
- Chaque côté renvoie après un certain temps
- Ici aussi, il ny a pas certitude après lenvoi
de conf. - Afin de chercher à la créer, on pourrait avoir
une temporisation et boucle pour conf, ce qui
demanderait une 2ème conf, etc.
! invit
? invit
tempor.
? accept
! accept
tempor.
! conf
? conf
Peut commencer à envoyer sans être certain.
12Le protocole du bit alterné (BA)
- Le protocole BA fut le 1er protocole qui fut
spécifié en utilisant la notion de modèle de
transitions détat - Article de Bartlett et Scantlebury dans Comm. ACM
May 1969, disponible à partir de lUQO sur
http//portal.acm.org/portal.cfm - Excellent et fameux article, 2 pages seulement!
- Parfois cité comme 1er article dans lingénierie
des protocoles - BA est un des plus simples protocoles de liaison
données possible, mais il - Démontre les principes fondamentaux de tous les
protocoles de liaison de données - Réussit à récupérer des erreurs de transmission
- Dans certaines limites, nous verrons
- Il a été utilisé dans un grand nombre détudes
sur la validation des protocoles
13Découvrons le protocole du bit alterné
- Exigence un protocole qui accepte une séquence
de paquets de données et les remet à lautre côté
dans le même ordre
0
Message 0
1
1
2
2
3
3
Effet désiré comment lobtenir?
14Contrôle derreurs
- Problème, le canal peut perdre des données
0
0
1
Le récepteur a perdu lordre des messages
1
2
2
3
15Compter les messages
- Chaque message contient son numéro, afin que le
récepteur sache quel message il vient de recevoir - Besoin de connexion les deux côtés doivent
initialiser une connexion, ce qui permet
dinitialiser le comptage - Étant donné quil faut pas gaspiller les bits
pour le comptage, essayons avec le plus petit
compteur possible 1 bit
16Utilisation du bit alterné
- Le protocole commence le comptage à 0
- Pour pouvoir reprendre, il faut donner au
récepteur la possibilité de demander le renvoi du
message perdu
bit0
Attend 0, OK
0
Message 0
1
Message 1
0
Attend 1, reçoit 0 Erreur
2
3
17Deux méthodes
- Le récepteur peut envoyer un message NACK 0,
signalant le fait que le message 0 na pas été
reçu - Cependant ce message pourra lui-même être perdu
- Une solution équivalente est dexiger un ACK pour
chaque message reçu - Qui peut lui aussi être perdu
- ARRÊT ET ATTENTE Stop and Wait Protocol
- Lémetteur envoie, attend acquittement
- Si lacquittement arrive, continue avec proch.
message - Sinon (le message ou lacquittement pourraient
être perdus!) renvoie message précédent - Problème combien de temps attendre
- Solution établir un temps sur la base du temps
dallée/retour du message et son acquittement (le
double?) - Minuterie positionner , annuler
18Arrêt et attente (stop-and-wait)
n-1 messages déjà transmis, n pair
Message n
Attend bit 0 accepté
D0
t
positionne minuterie t
Ack
OK minuterie t annulée
t
Message n1
D1
t
positionne minuterie t
Etc.
19Perte de message dans arrêt-attente(si lattente
nest pas assez longue)
n-1 messages déjà transmis, n pair
Message n
D0
Attend bit 0 accepté
Ack
D0
Retransmet DO et pense que lacquittement est
pour le 2ème
Ack
D1
Ceci est lacquittement du 2ème DO mais il paraît
être pour D1
Ne sait pas si ce D0 est une retransmission du
1er ou sil sagit dun nouveau message
D0
Etc.
20Protocole du bit alternéBit dans lacquittement
- Il faut donc que lacquittement contienne
lidentification du message reçu
n-1 messages déjà transmis, n pair
Message n
Attend bit 0 accepté
D0
A0
D0
D0 acquitté
A0
D1
Écarte ceci et il saura quil doit retransmettre
D1
D1
OK
A1
21Protocole bit alterné Arrêt et attente
- Cas de perte de message (OK)
n-1 messages déjà transmis, n impair
Message n
B0
Positionne Minuterie
Temporisation Doit renvoyer n
B0
n
A0
22Protocole bit alterné Arrêt et attente
- Cas de perte dacquittement (OK)
n-1 messages déjà transmis, n pair
D0
n
Positionne Minuterie
A0
Temporisation Doit renvoyer n
D0
Attend 1 écarté
A0
Continue denvoyer lacquittement du dernier msg
bien reçu
D1
23Protocole bit alterné Arrêt et attente
- Chevauchement de message! (OK)
n-1 messages déjà transmis, n pair
n
D0
Positionne Minuterie
Temporisation Doit renvoyer
D0
n
Attend 1, reçoit 0 Écarter
A0
24Protocole bit alterné Arrêt et attente
n-1 messages déjà transmis, n pair
D0
n
Positionne Minuterie
A0
Temporisation Doit renvoyer
D0
Attend 1, écarter
Attend ack de 0, OK
D1
n1
n1
A1
25Collision
- Nous venons de voir un cas de collision, cad une
situation où deux entités envoient des messages
en même temps (D0-A0) - Les collisions ne sont pas nécessairement des
erreurs, cependant elles doivent être prises en
considération dans la conception - P.ex. deux entités qui demandent connexion ou
déconnexion indépendamment - Deux données qui voyagent en direction opposée
dans les protocoles bi-directionnels
26Bit alterné unidirectionnel, diagramme de
transition
émetteur
récepteur
?D1
8
!D1
8
!A1
?A1
To, ?A0
!A1
1
1
4
6
Données de lusager
?D0
Données à usager
!D1
2
5
2
5
Données à usager
Données de l usager
!D0
?D1
?A0
4
3
6
3
!A0
To, ?A1
!A0
!D0
?D0
7
7
To temporisation A Ack
27Usagers émetteur et recepteur
Donner message à lémetteur
Prendre message du récepteur
28Architecture globale 4 machines à états
Usager émetteur
Usager récepteur
Émetteur
Récepteur
29Messages altérés - Erreurs
- Nous navons pas considéré le cas de réception de
messages altérés (messages avec erreur détectée) - Lhypothèse étant quun message altéré est comme
un message non-reçu - Dans le diagramme de transition nous pourrions
ajouter ce cas derreur aux transitions - 3? 7 et 6 ? 8 dans lémetteur
- 6?7 et 1?8 dans le récepteur
30Problèmes (montrant que ce protocole nest pas
parfait, comme attendu)
- Double chevauchement de message!
- Un vieux message échu avec un bit égal à ce qui
est attendu sera considéré bon
D0
1?3
n
3?7
n
7?3
n
1?3
A0
3?6
3?4
D1
6?4
n1
n1
4?6
A1
4?1
6?1
1?3
OK! (croit avoir reçu n2)
A0
Acquitte vieille donnée
3?6
D0
Pense que ceci est un msg répété par erreur!
6?7
31Réceptions non spécifiées dans BA
- Que va faire lenvoyeur avec un A0 après avoir
reçu un A1 lorsquil na rien envoyé? - Il pourrait lécarter
- le récepteur recevra un deuxième D0 quil
acquittera et ignorera - Ou il pourrait lire dans le canal seulement après
avoir envoyé D0 - Il considérera son dernier D0 acquitté
- Et il répondra avec !D1 à lA0 que le récepteur
lui enverra - Dans les deux cas, le protocole retournera enfin
à la normalité - Mais la mauvaise donnée a été livrée à lusager
32Et aussi
- Double chevauchement dACK
D0
1?3
1?3
n
n
A0
3?6
3?7
D0
n
6?7
7?3
A0
3?4
7?6
D1
6?4
n1
4?6
n1
A1
4?1
6?1
D0
1?3
A0
3?4
D1
1?8
D0 na pas été reçu, D1 sera écarté
4?6
33Problèmes de sécurité
- Nous aurons évidemment des problèmes semblables
si nous admettons que le milieu puisse générer
par lui-même des mauvais messages, - ou si ceci serait possible par intervention dun
tiers
34Transmission bidirectionnelle
- Le protocole que nous venons de donner est pour
transmission dans 1 direction seulement (simplex) - Le protocole BA original pouvait fonctionner dans
les 2 directions (alternat ou half-duplex) - Piggybacking un seul paquet sert pour transférer
les nouvelles données en même temps que lack du
message précédent dans la direction opposée
35Protocole BA alternat bidirectionnel, compacté
- Deux stations A et B, chacune garde son propre
bit local - Bit local1 au début pour les deux
- A commence en état 1
- B commence en état 3
- NDonnées de lusager, bit local est renversé
- !D envoi données avec bit local
- ?Db réception de données avec
- Pour A, bit local de A
- Pour B, bit ? local de B
- ?Dm réception opposée (erreur)
- Udonnées à lusager
A
1
N
U
2
?Dm, To
!D
4
3
?Db
B
36Architecture globale 4 machines à états
Usager émetteur
Usager récepteur
U
N
Émetteur
Récepteur
37Mais...
- La vitesse des deux usagers doit être la même
- Quoi faire si A envoie un message, B doit
acquitter mais son usager na pas de données
prêtes à envoyer? - A devra donc attendre, ou sinon des messages
vides pourraient être livrés avec certains
acquittements...
38Terminologie
- Simplex Unidirectionnel
- Half-Duplex ou alternat bidirectionnel
alternative - Canal qui peut fonctionner dans une direction ou
lautre, mais pas simultanément - Full duplex bidirectionnel simultané
39Propriété qui peut être prouvée pour le BA
- Dans le cas dun milieu avec possibilité derreur
mais sans double chevauchement, il est possible
de prouver que le BA préserve lordre des
données, c.-à-d. - La chaîne des messages reçus est dans le même
ordre de la chaîne des messages envoyés - Moins évidemment les messages envoyés et pas
encore arrivés
40Auto-stabilisation (Self-synchronisation)
- Le protocole du BA a aussi la propriété dêtre
capable de retourner au fonctionnement normal
après nimporte quelle situation derreur - Il pourra cependant avoir envoyé à lusager les
mauvaises données (ce que nous avons vu)
41Protocoles à fenêtre danticipation (sliding
window)
- Le protocole du BA peut être généralisé en
utilisant un compteur de plusieurs bits - n bits
- Dans le cas de n1, lémetteur devait garder le
dernier message jusquà lacquittement, donc 2n
-1 messages - En général, pour un compteur de n bits,
lémetteur doit garder au plus les derniers 2n -1
messages jusquà leur acquittement - Dans ce cas, il y a plus de liberté concernant la
vitesse relative de lémetteur et du récepteur - Lémetteur peut continuer denvoyer des paquets
même si un certain nombre de paquets déjà
transmis na pas été acquitté - Les protocoles à fenêtre ont été utilisés dans la
couche 2 de X.25, couche 2 de lOSI et dans TCP - HDLC High-level Data Link Control
42Fenêtre danticipation
- Au moment de lenvoi dun message, lémetteur
positionne une minuterie spécifique à ce message - Si lack nest pas reçu dans le délai, le message
doit être retransmis, avec tous les messages qui
lont suivi jusquà la détection de lerreur - Lémetteur doit être prêt à renvoyer tous les
messages non acquittés dans une fenêtre ou
tampon dont la dimension est reliée à
lintervalle de la minuterie - Peut réutiliser lespace des messages acquittés
- La dimension de la fenêtre doit être telle que le
transmetteur puisse être sûr de pouvoir
retransmettre toutes les trames non acquittées - Lintervalle de temporisation et la dimension du
tampon doivent être soigneusement choisis
43Fenêtre danticipation
émetteur
récepteur
0
1
0
2
3
1
Erreur
4
écarté
5
Lémetteur sest enfin aperçu que 2 na pas été
acquitté (temporisation)
écarté
6
écarté
2
3
écarté
4
2
3
4
Émetteur doit garder en mémoire un certain nombre
de messages pour pouvoir éventuellement les
retransmettre (dans ce cas, de 2 à 6)
Exercice combien de messages faut-il garder?
44Comment choisir le temps dattente pour un
acquittement?
- Ce temps est déterminé par la vitesse du réseau
- Doit être choisi judicieusement
- Si trop petit, beaucoup de messages pourraient
être renvoyés inutilement - Si trop grand, trop de message devront être
renvoyés quand on sapercevra quun message a été
perdu - Aussi le protocole pourrait retourner à numéroter
un message n avant quon se soit aperçu que le
message n précédent a été perdu
45Quelques calculs, par exemple
- Avec un numéro de séquence de 16 bits, nous
pouvons numéroter 65 536 messages - Si un message est de 27 128 bits, ceci demande
une zone tampon de 216x27 223 8 388 608 bits - À la très modeste vitesse de 9 600 bps, tous les
numéros seront utilisés dans 15 minutes - Plus exactement 14.56 mins
- Donc si un message retarde plus de ça, il
pourrait être mal placé dans la séquence suivante - Il doit cependant arriver au moment où un message
avec le même no de séquence est attendu
46Taille du tampon
- Des exemples quon trouve dans les livres et dans
les sites web montrent des tampons de taille 2N
pour numéros de séquences de N bits - En réalité, lémetteur ne peut transmettre plus
de 2N-1 message à lavance - Considérez le cas où lémetteur envoie 2N
messages et tous les acquittements sont perdus! - Lémetteur essaiera de renvoyer la même séquence
- Le receveur, ne sachant pas que tous ses
acquittements sont perdus, pensera quil sagit
de la séquence suivante! - Donc il est nécessaire que lémetteur sarrête
après avoir envoyé 2N-1 messages, sil ne reçoit
aucun acquittement à ce moment là, il doit
reprendre la séquence courante à partir du début - Et le récepteur saura quil sagit encore de la
séquence courante
47Technique alternative
- Seulement les messages erronés sont retransmis
- Le récepteur doit donc stocker tous les messages
suivant une erreur et être prêt à insérer les
retransmissions dans le bon ordre - Meilleure utilisation de bande passante sil y a
beaucoup derreurs (rare aujourd'hui) - Mais moins utilisé car il demande un stockage
tant pour lémetteur que pour le récepteur - Donc stockage double pour une station relais
48Et encore une autre technique
- Dans chaque acquittement, le récepteur déclare
être prêt à recevoir k paquets à partir dun
certain numéro - Lémetteur doit garder dans un tampon tous les
paquets non acquittés - Pourraient devoir être retransmis
- Il peut réutiliser lespace libéré par les
paquets déjà acquittés - Réduit le nombre dacquittements
Paquets qui pourraient être transmis
Paquets déjà transmis
3
4
5
6
6
7
0
1
2
3
4
5
6
7
0
1
2
49Contrôle de flux
- Ces mécanismes sont étroitement reliés au
problème de contrôle de flux - Le contrôle de flux est un mécanisme pour
empêcher lémetteur denvoyer plus que le
récepteur ne peut recevoir (à cause de lespace
de tamponnage disponible) - Il y a deux formes fondamentales de contrôle de
flux - Explicite le récepteur dit à lémetteur quil
est prêt à recevoir x paquets (exemple précédent) - Ou il envoie un message demandant à lémetteur de
suspendre - Implicite le récepteur naccepte pas (p.ex.
nenvoie plus dacquittements) - Ceci peut forcer lémetteur à retransmettre
50Les deux fonctions des acquittements
- Le message dacquittement (ack) a donc deux
fonctions reliées - Faire savoir que le message a été reçu
correctement (contrôle derreur) - Faire savoir que le récepteur est prêt à recevoir
un ou plusieurs nouveaux messages (contrôle de
flux)
51La couche liaison aujourdhui
- La couche liaison était très importante à
lépoque où - les réseaux étaient lents et peu fiables
(contrôle derreurs) - et les ressources de mémoire des noeuds étaient
limitées (contrôle de flux) - Aujourdhui les réseaux sont très rapides, très
fiables, et les ressources de mémoire sont
importantes - À fins defficacité et simplicité, beaucoup
dapplications sont bâties sur des protocoles
comme UDP, un protocole de transport qui ne
garantit pas de préserver lordre des messages - Chose qui navait pas été prévue par les
concepteurs de larchitecture OSI! - Quel est le résultat dans le cas derreur?
- Certaines applications ne sont pas sensible aux
erreurs occasionnels - p.ex. voix sur IP, multimédia
- Lapplication peut être bâtie pour détecter et
récupérer des erreurs à son niveau - p.ex. un programme qui consulte une base de
données peut reconnaître lerreur car les données
ne sont pas reçues dans le format approprié et
peut donc répéter la requête
52Pour en savoir davantage
- Un vieux livre de Gerhard Holzmann contient
beaucoup dinformations que jai utilisé pour ce
chapitre - http//spinroot.com/spin/Doc/Book91_PDF/Design_and
_Validation_1991.pdf - V. Surtout Chapitre 4.