Outils pour utilisateurs

Outils du site


cours:informatique:reseau:principes_des_reseaux_de_donnees:340_traitement_des_pertes

Le traitement des pertes

Nous avons vu précédemment que les unités de donnée pouvaient arriver erronées à leur destinataire. Si le protocole entre le récepteur et l’émetteur n’utilise pas un code de correction d’erreur, ne pouvant déterminer quelle partie est erronée, le destinataire doit faire comme si elle ne lui était jamais arrivée. Elle est considérée comme perdue.

L’émetteur et le récepteur doivent mettre en œuvre un protocole permettant de pallier cette perte. C’est ce qui nous intéressera dans ce cours.

D’autres raisons que les erreurs peuvent causer la perte d’unités de données comme la saturation ou le résultat d’erreurs logicielles au niveau de l’émetteur, du récepteur ou d’équipements intermédiaires.

Les supports physiques peuvent aussi être endommagés ou perturbés au point de ne pas pouvoir transporter le moindre signal entre l’émetteur et le récepteur sans que l’émetteur ne s’en rende compte. (Vous avez sans doute déjà rencontré ce phénomène lors d’une conversation avec un téléphone portable lorsque votre interlocuteur passe dans un tunnel.)

Si certain types de communications supportent les pertes, d’autres les supportent moins bien. Ainsi dans un cadre bancaire les clients préféreront sans doute que les systèmes communicants soient capables de détecter et de corriger des pertes afin que leurs comptes soient crédités ou débités des montants adéquats. Afin de créer un protocole permettant de lutter contre les pertes, c'est-à-dire de faire de la reprise sur perte, il faut d’abord détecter celles-ci.

D’une manière analogue à une conversation humaine on peut imaginer de faire cette détection chez l’émetteur ou chez le récepteur :

  • Chez l’émetteur s’il ne reçoit pas un signe que ce qu’il a dit a été entendu par le destinataire;
  • Par le récepteur s’il perçoit un manque entre deux informations reçues.

Comment ces mécanismes peuvent ils se traduire dans un environnement numérique ? *

Détection par l'émetteur

Le minuteur

Afin de détecter la perte chez l’émetteur on va associer à chaque unité de donnée émise un minuteur, une sorte de réveil qui va se déclencher au bout d’un temps prédéfini.

Imaginons par exemple que l’on considère une communication entre un client et sa banque. Le client désire que son compte soit débité correctement de ses achats. Nous utilisons ici un chronogramme ou diagramme temporel pour représenter le trajet des unités de données. Dans celui-ci nous ignorons volontairement la durée d’émission.

Une première PDU est envoyée et un minuteur est enclenché pour cet envoi. Cette PDU se perd avant d’arriver à la banque. Lorsque le minuteur se déclenche, l’émetteur se rend compte qu’il n’a pas reçu de réponse de la banque et en déduit que la PDU qu’il avait envoyé s’est perdue. Il va alors retransmettre celle-ci afin que celle-ci ait une nouvelle chance d’arriver à son destinataire et enclenche de nouveau un minuteur. Lorsque celle-ci arrive cette fois- ci correctement à la banque le compte est débité.

L'acquittement

Comme nous venons de le dire c’est parce que le client ne reçoit pas de message de la banque lui indiquant qu’elle a bien reçu sont message que le client réémet celui-ci. Il convient donc pour le récepteur lors de la réception d’une PDU d’envoyer à l’émetteur une indication de réception aussi appelée acquittement. Contrairement à une conversation humaine, cet acquittement ne contient pas nécessairement des informations utiles transmises par la couche supérieure. Il peut ne contenir que des informations de contrôle. Lors de la réception de l’acquittement l’émetteur désactive le minuteur afin que celui-ci ne provoque pas une retransmission inutile.

Les duplicatas

Examinons maintenant un scénario différent dans lequel c’est l’acquittement qui se perd. L’unité de donnée est envoyée par le client et le minuteur est enclenché. Cette unité de donnée parvient au récepteur. Le compte est alors débité correctement. Le récepteur envoie ensuite l’acquittement. Cet acquittement se perd. Le minuteur se déclenche alors au niveau de l’émetteur qui réémet l’unité de donnée initiale en enclenchant le minuteur. Celle-ci peut alors parvenir de nouveau au récepteur ce qui provoque le débit du compte une nouvelle fois. Le problème est maintenant que notre protocole peut délivrer les données plusieurs fois au récepteur.

Protocole du bit alterné

Afin de régler ce problème une solution consiste à ajouter à l’unité de donnée, une information de contrôle, un compteur afin que le récepteur puisse vérifier s’il a déjà reçu l’unité de donnée auparavant. Afin que l’émetteur sache quelle unité de donnée est acquittée on ajoute également un compteur similaire dans l’unité de donnée d’acquittement. Dans le protocole du bit alterné ces compteurs sont codés sur un bit. Pour garder en mémoire ce qui a été émis ou reçu dans le passé l’émetteur et le récepteur maintiennent chacun une variable également codée sur un bit.

  • Au niveau de l’émetteur, lorsque celui-ci envoie une unité de donnée le bit compteur prend la valeur de la variable d’émission.
  • Chez le récepteur la variable de réception prend elle la valeur du dernier compteur reçu normalement c'est-à-dire sans duplicata.

A la réception d’une unité de donnée:

  • Le récepteur envoie un acquittement portant la même valeur que le compteur reçu.
  • Il vérifie ensuite si le compteur a une valeur différente de la variable de réception. Si c’est le cas il ne s’agit pas d’une retransmission. Il délivre alors les données à l’utilisateur et donne à la variable de réception la valeur du compteur reçu. Dans le cas contraire il ignore les données reçues.

Lorsque l’émetteur reçoit un acquittement il vérifie que la valeur de compteur correspond à celle contenue dans la variable d’émission. Si c’est le cas, il incrémente la valeur de la variable d’émission et désactive le minuteur associé à la transmission précédente. Dans le cas contraire, il ignore l’acquittement. Enfin si le minuteur se déclenche, l’émetteur retransmet la dernière unité de donnée.

Illustrons le fonctionnement du bit alterné par un chronogramme. Imaginons que les compteurs soient initialisés à 0 et à 1 chez l’émetteur et le récepteur.

  1. Lors de la réception de données à transmettre, l’émetteur enclenche le minuteur et ajoute aux données utiles le compteur qui prend la valeur de variable d’émission : 0.
  2. A la réception de la PDU le récepteur envoie un acquittement portant la même valeur de compteur. Le récepteur vérifie ensuite si le compteur a une valeur différente de la variable de réception. C'est le cas ici, il délivre les données à l’utilisateur et donne à la variable de réception la valeur du compteur c'est-à-dire 0.
  3. L’acquittement se perd ce qui provoque le déclenchement du minuteur chez l’émetteur.
  4. Celui-ci retransmet alors la dernière unité de donnée transmise et réenclenche le minuteur.
  5. Lorsque celle-ci est reçue, le récepteur envoie un acquittement comme précédemment. Il compare ensuite la valeur du compteur et celui de la variable de réception. Ces deux valeurs étant les mêmes, il ignore les données reçues et laisse la variable inchangée.
  6. Lorsque l’émetteur reçoit l’acquittement il vérifie que la valeur de compteur correspond à celle contenue dans la variable d’émission. Comme c’est le cas, il incrémente la valeur de la variable d’émission qui passe de 0 à 1 et désactive le minuteur associé à la transmission précédente.

Quizz

Pour conclure la présentation, un petit exercice. Imaginons deux systèmes A et B utilisant le protocole du bit alterné. Le chronogramme ci-dessous représente le transport de trois unités de données entre les deux.

Quelles seront selon vous la valeur du compteur associé à la troisième unité de donnée et les valeurs des deux variables chez l’émetteur et le récepteur ? 0, 1 ou 2 ?

La réponse est 0. En effet lorsque A reçoit ACK 1, la valeur du compteur est égale à celle de la variable d’émission, celle-ci est donc incrémentée de 1. Cependant comme cette variable est codée sur un bit sa valeur revient à 0. Cette variable est utilisée pour la valeur du compteur de la PDU suivante (« débit de 30 euros ») qui prend donc la valeur 0. Lorsque cette PDU est reçue par B, celui-ci constate que la valeur du compteur est différente de la valeur de la variable de réception. La variable prend alors la valeur du compteur et les données sont livrées à l’utilisateur.

◁ Précédent | ⌂ Sommaire | Suivant ▷

cours/informatique/reseau/principes_des_reseaux_de_donnees/340_traitement_des_pertes.txt · Dernière modification : 2023/03/20 22:48 de yoann