Acquittement par trame INFO : Au troisième envoi de trame par U (Ns=2), R a des informations à envoyer. Il va donc acquitter la trame de U par une trame INFO plutôt que d'utiliser une RR. Cette trame est une trame de commande Réseau, son champ Adresse est donc à 03h. Comme c'est la première trame INFO émise par R, son compteur Ns est à 0. Par contre cette trame acquitte également la trame Ns:2 de U, son compteur Nr est donc à 3.
Emission par anticipation d'acquittement : Dans la deuxième partie du schéma on autorise U à envoyer plusieurs trames consécutives sans avoir reçu d'acquittements. Nous verrons plus tard que l'on appelle ça le facteur d'anticipation d'acquittement (K). U émet donc les INFO Ns=3, 4 et 5 sans avoir reçu les acquittements correspondants. Le Nr des trames est à 1 car il a reçu précédemment une trame INFO Ns=0 de R. Chaque fois que R reçoit une trame il enclenche un timer T2 associé. Il peut attendre de disposer d'une trame INFO pour émettre son acquittement à l'émetteur (U ici) pendant T2. Si aucune trame INFO n'est à émettre pendant ce laps de temps, R émettra obligatoirement une RR d'acquittement (oui, oui, je sais ! Ca se corse ! Attendez c'est pas fini !). Ceci suppose donc qu'il y a une correspondance entre le T1 de U et le T2 de R ? Oui, il y a une correspondance, mais les deux timers n'ont pas du tout la même fonction !
T2 est un temporisateur d'acquittement. Plutôt que d'émettre sans cesse des RR pour acquitter les données reçues parce que R a pas de données à émettre, LAP B lui permet de patienter un peu pour acquitter en espèrant qu'il ait des données à émettre. En vérité, on préfére acquitter avec des trames INFO plutôt qu'avec des RR, ceci permet de rentabiliser la liaison et les équipements en évitant la construction et l'émission incessante de trames RR. L'ordre de grandeur de T2 est seulement de quelques millisecondes ... pas des heures !
Il apparaît évident qu'il faut que T2 soit inférieur à T1. Car si le récepteur peut temporiser l'acquittement plus longtemps que l'émetteur n'est prêt à attendre l'acquittement, on court au drame ! C'est la seule vrai relation entre T1 et T2 : T2 < T1.
Nr : Numéro de trame attendue : Dans le cercle gris du schéma vous remarquez que R a une trame INFO à émettre après réception de la trame 4 de U (Ns:4). Il envoie donc une trame INFO avec un Nr = 5. Et c'est là qu'est la beautée du geste ! En indiquant 5 dans Nr, il dit "j'attends la trame 5, donc je t'acquitte les trames 3 et 4 qui étaient en instance d'acquittement" ! C'est bien plus performant que d'indiquer le numéro de trame que l'on acquitte ! Bien sûr l'acquittement a pour effet de stopper les timers T2 des trames correspondantes.
Expiration du T2 : Dans le cercle bleu du schéma, j'illustre ce qui arrive si R n'a plus de données à émettre. Le timer T2 de la trame 5 arrive à expiration, R émet donc une trame RR (Nr=6) pour acquitter cette trame à U.
Au passage vous remarquerez que U n'a absolument pas été choqué de recevoir de R un acquittement des trames 3 et 4 (par la trame INFO) seulement alors qu'il avait déjà émis la trame 5 ! Peu importe ! U veut seulement que R acquitte avant expiration du timer T1 de la trame 5. R peut prendre son temps s'il veut ! De toute façon R n'avait pas fini de recevoir la trame 5 donc il ne pouvait pas l'acquitter.
Ceci m'amène à vous préciser, pour ceux qui ne l'aurait pas déviné, que la pente des flèches sur les schémas, représente les délais de transmissions des données. Et dans le même temps vous avez ici la démonstration que le fonctionnement est bien full-duplex.
Synthèse
Que savons-nous maintenant ? Nous connaissons :
- le format d'une trame HDLC et la fonction des champs la composant
- le principe d'établissement d'une connexion HDLC et identifions les entités Réseau/Utilisateur, Commande/Réponse
- le principe d'échange des trames de données, notamment la gestion des compteurs Nr/Ns et l'importance des timers T1/T2 pour les délais d'acquittements.
Etudions maintenant un peu plus avant l'importance des paramètres T2, T1, K et N2.