3. Mécanismes généraux
3.1. Techniques de contrôle
"S'assurer que le récepteur a reçu correctement, en un seul exemplaire et dans l'ordre, les trames émises".
Deux phénomènes viennent perturber la transmission :
-
la corruption de trames : transformation de la suite binaire transmise
-
la perte de trames due à la congestion, à une panne ou la non-reconnaissance de la trame
-
ex : corruption du délimiteur
-
une corruption se traduit par une perte lorsque le récepteur détruit la trame corrompue
Les solutions :
-
Mécanisme de détection des erreurs (cf. chapitre précédant)
-
Mécanisme d'acquittement positif ou négatif (explicite ou implicite)
-
Techniques de mémorisation des trames et de correction par retransmission
-
Utilisation de temporisateurs
-
Identification des trames
3.2. Identification des trames
Une numérotation permet d'identifier les trames et leur acquittement
L'unité d'identification varie en fonction des protocoles :
-
la trame (par exemple HDLC)
-
l'octet (par exemple TCP)
-
plus l'unité est petite plus l'identification est précise mais plus c'est coûteux (taille du champ)
-
ex : HDLC = 3 bits (ou 7 bits), TCP = 16 bits
La numérotation se fait modulo N (= 2la_largeur_du_champ_de_numérotation)
-
la champ est de taille bornée (car la trame est bornée !)
Au cours d'une même connexion le même numéro va être réutilisé pour identifier plusieurs trames différentes
-
il faut lever les ambiguïtés :
-
W < N
-
problème similaire à la gestion du tampon circulaire et ses pointeurs
lorsque Pdebut = Pfin ==> tampon plein ou vide ?
L'identification permet de détecter :
-
la perte de trames :
-
demande explicite de retransmission ou par temporisateur
-
la duplication de trames :
-
l'ordonnancement des trames :
-
soit réordonnancement si la mémorisation est autorisée
-
soit destruction des trames n'arrivant pas dans le bon ordre (+ facile).
3.3. Protection des trames
1- Vérification par le récepteur de données
Vérification du format des trames :
-
longueur, valeurs prédéfinies de certains champs
Détection de la corruption des trames :
-
champ de contrôle d'erreur
2- Information de l'émetteur de données
-
Soit implicitement par temporisateur
-
armé à chaque envoi de trame,
-
désarmé lors de la réception d'un acquittement
-
Soit explicitement par acquittement : "Nack"
-
le rejet total : retransmission de toutes les trames à partir de celle spécifiée
-
le rejet sélectif : retransmission de la trame spécifiée
3- Retransmission de la trame (perdue ou détruite) par l'émetteur
La liaison de données est maintenue active (et surveillée) par la transmission périodique de trames (d'acquittement) même si aucune donnée n'est échangée.
-
lutte contre la perte d'acquittement (par répétition !)
-
détecte la rupture du circuit de données.
3.4. "Piggybacking"
Au sein d'un flot de données unidirectionnel, on peut discerner deux sous-flux : le sous-flux de données proprement dit (de l'émetteur de données au récepteur) et le sous-flux de contrôle (du récepteur vers l'émetteur de données).
Lorsque le flot de données est bidirectionnel, deux sens de transmission des données existent. Les deux systèmes d'extrémité fonctionnent à la fois comme émetteur de données et comme récepteur de données.
Les trames transportant le sous-flux de données d'un sens de transmission peuvent être combinées avec les trames du sous-flux de contrôle de l'autre sens.
-
Par exemple : une même trame peut se comporter à la fois comme une trame de données (elle possède un champ d'information) et un acquittement (elle possède un champ du même nom).
3.5. Fenêtre coulissante ("sliding window")
Les protocoles simples précédents (bit alterné, "send and wait", "stop and go") ont comme principal inconvénient de n'autoriser que la transmission d'une seule trame à la fois.
La liaison de données est alors inoccupée la plupart du temps. De même, l'émetteur (resp. le récepteur) passe son temps à attendre l'acquittement du récepteur (resp. la trame de données de l'émetteur)
On autorise l'émission (resp. la réception) de plusieurs trames d'information consécutives sans attendre l'acquittement de la première (resp. avant d'envoyer l'acquittement).
On remarque que la source et le puits émettent et reçoivent simultanément
-
la liaison est utilisée de manière bidirectionnelle
Le nombre maximum de trames consécutives que l'on peut ainsi émettre (resp. recevoir) est défini par la largeur de la fenêtre d'anticipation d'émission (resp. de réception).
-
Dans l'exemple : la largeur W >= 4
Pour que la liaison de données soit totalement utilisée il faut que :
-
W * L >= Ta/r * D
-
L étant la longueur moyenne d'une trame, Ta/r la durée d'aller/retour et D le débit nominal de la liaison.
-
Ta/r * D représente la capacité de la liaison
La largeur de fenêtre (W) peut être :
-
fixe
-
par exemple : HDLC ou X25.3
-
variable
-
par exemple : TP
-
dans ce cas sa valeur instantanée est appelée crédit
3.6. Contrôle de flux
Pour éviter la congestion du récepteur :
-
c'est-à-dire le débordement de son espace de stockage, ce qui entraînerait la destruction de trames devant être reçues
-
la largeur de la fenêtre doit correspondre à la capacité de stockage du récepteur
Dans le cas d'une fenêtre de largeur fixe :
-
le contrôle s'effectue sur la totalité de la fenêtre,
-
la fenêtre est ouverte ou fermée.
-
exemple : XON/XOFF ou RR/RNR de HDLC.
Dans le cas d'une fenêtre de largeur variable :
-
la largeur (le crédit) est adaptée à la capacité de stockage du récepteur,
-
les PDU doivent comporter alors un champ supplémentaire pour acheminer le crédit du récepteur de données à l'émetteur de données.
-
exemple : champ crédit du protocole Transport.