Académique Documents
Professionnel Documents
Culture Documents
Chapitre 4
Chapitre 4
La liaison de données relie deux équipements adjacents connectés au même support physique
sans nœuds intermédiaires entre eux. Ils peuvent être deux ordinateurs, un ordinateur et un
routeur, deux routeurs, etc.
La liaison peut être soit bipoint soit multipoint. Dans le cas d'une liaison multipoint, un
problème supplémentaire qu'il faut prendre en compte concerne l'accès concurrent au support.
La gestion de ce type de liaison est à la base des protocoles des réseaux à diffusion qu'on
rencontre dans les réseaux locaux (LAN), radio et satellitaires. Les réseaux longue distance
(WAN) maillés sont composés de liaisons bipoints. C’est les liaisons bipoints qui seront
traitées dans ce chapitre.
• Service sans connexion et sans acquittement : La machine émettrice envoie les trames
sans attendre d’acquittement de la part du destinataire. Bien évidement, aucune
connexion n’est établie au préalable. Ce type de service est utilisé quand le support
physique est très fiable, c'est-à-dire générant très peu d’erreurs. Néanmoins,
lorsqu’une erreur arrive, le recouvrement est assuré par une couche supérieure. Ce
service est utilisé aussi quand le trafic envoyé sur la liaison est isochrone avec de
fortes contraintes temporelles (vidéo ou audio).
• Service sans connexion et avec acquittement : Ce type de service est plus fiable que le
précédent mais ne nécessite pas d’établissement de connexion. Les trames sont
acquittées, donc l’émetteur sait quelles sont les trames qui sont arrivées correctement
chez le destinataire. Cependant, ce service ne remédie pas au problème de duplication
des trames ni de celui du désordre à l’arrivée des trames.
• Service avec connexion : Ce service offre un transfert de données fiable entre deux
systèmes, c'est-à-dire une livraison garantie de toutes les trames, dans l’ordre de
transmission, sans perte et sans duplication.
La couche liaison utilise les services offerts par la couche physique qui transmet les données
envoyées entre deux machines comme une succession continue de bits sans préciser le début
et la fin d’une trame. La délimitation des trames revient à la charge de la couche liaison de
données qui doit trouver les moyens pour le faire. Différentes techniques sont utilisées, les
deux plus importantes sont :
1
1. Utilisation de fanions de début et de fin de trame avec des bits de transparences. Un
fanion est une séquence particulière de bits qui marque aussi bien le début que la fin
d’une trame. Le fanion employé par le protocole HDLC est ‘0111 1110’. L’utilisation
de ce fanion doit être faite avec prudence, car il se peut que la séquence binaire
représentant le fanion se trouve dans les données à transmettre ce qui peut induire en
erreur la machine destinataire qui va croire que la fin de la trame est déjà arrivée. Pour
éviter ce type de problème, l’émetteur va insérer dans les données à transmettre un bit
à 0 chaque fois qu’il trouve une suite contiguë de 1. Ce bit à 0 s’appelle un bit de
transparence. Les bits de transparence sont éliminés par le récepteur lors de leurs
arrivées. La figure 0 donne un exemple d’une suite binaire, de 48 bits, à transmettre.
Cette suite binaire est mise entre deux fanions et trois bits de transparence sont insérés
(figure 1).
La transmission fiable est assurée par l'utilisation conjointe de codes détecteurs ou correcteurs
d'erreurs et de mécanismes d'acquittement et de retransmission en cas d'erreur. Un
acquittement est une trame particulière, dite aussi trame de contrôle, qui véhicule une
information sur la livraison d’une trame de données. Un acquittement positif exprime le fait
que la trame de données a été bien reçue du côté récepteur. Tandis qu’un acquittement négatif
exprime le contraire. Dans le cas ou l’émetteur est averti, à l’aide d’un acquittement négatif,
par le récepteur qu’une trame de données n’a pas été correctement reçu, alors l’émetteur
retransmet la trame une autre fois.
2
sans que l’émetteur ne reçoive une réponse du récepteur alors il retransmet la trame une autre
fois.
3. Contrôle de flux
Après l’émission d’une trame, l’émetteur se met en attente pour réceptionner l’acquittement
associé à la trame envoyée. Cette façon d’opérer est inefficace en transmission de données. En
effet, l’émetteur va passer la majeure partie de son temps en attente d’acquittements ce qui va
engendrer des débits très faibles sur la liaison même si la capacité de la ligne physique de
transmission est élevée. Pour remédier à cela, l’émetteur peut envoyer plusieurs trames, l’une
à la suite de l’autre, sans attendre d’acquittement. Un acquittement groupé positif peut être
envoyé par le récepteur. Néanmoins, il ne faut pas envoyer beaucoup trop de trames en même
temps au risque de submerger le récepteur qui faute de mémoire et de capacité de traitement
sera obligé de rejeter les trames en trop. Ceci génère la perte de trames.
Donc, pour augmenter le débit de la liaison tout en minimisant les pertes de trames, la couche
liaison de données utilise la fonction de contrôle de flux entre l’émetteur et le récepteur. Le
mécanisme le plus utilisé pour mettre en œuvre le contrôle de flux est la fenêtre à anticipation
qui sera présentée ultérieurement.
Une fonction simple mais importante est la numérotation des trames. En effet, il est très utile
pour le bon fonctionnement de la couche liaison de données que les trames soient numérotées.
Le récepteur utilise les numéros des trames pour envoyer des acquittements. Il doit aussi
utiliser les numéros de trames pour les remettre dans l’ordre dans le cas ou ils arrivent
désordonner. En effet, l’ordonnancement des trames est primordial lorsque la couche liaison
de données offre un service orienté connexion à la couche réseau.
Les numéros des trames se trouvent dans un champ appartenant à l’en-tête d’une trame. Les
entités de liaison peuvent commencer à numéroter les trames à partir de n’importe quelle
valeur et pas nécessairement égale à 1.
Remarque : Pour la mise en oeuvre d'une façon efficace de ces fonctions, le service est
souvent orienté connexion. Dans le cas d'une liaison multipoint, il faut en plus de ces
fonctions, les fonctions d'accès au média. Ces fonctions d’accès au média ne sont pas traitées
dans ce module.
3. Contrôle d'erreurs
3.1. Caractérisation des erreurs
Comme nous l’avons vu précédemment, les lignes de transmission ne sont pas parfaites et des
erreurs peuvent se produire lors des transmissions d’informations binaires. En effet, au niveau
physique, les signaux support de ces informations sont perturbés et altérés par des bruits
additifs. A la réception, une erreur d'interprétation peut se produire: l'état du signal
représentant le bit ‘1’ est interprété comme si c'était le bit ‘0’ et vice versa.
3
Ces erreurs peuvent être isolées (un bit erroné dans une longue séquence de bits corrects) ou
groupés (un nombre important de bits erronés regroupés dans une courte séquence).
Le taux d'erreurs de transmission est de l'ordre de 10-5 sur une ligne téléphonique, de 10-7 à
10-8 sur un coaxial et de 10-10 à 10-12 sur une fibre optique. Ces chiffres montrent qu’avec la
fibre optique, la fiabilité des transmissions devient très importante.
Pour que la retransmission des trames se fasse dans de bonnes conditions, l’émetteur est
amené à garder une copie de chaque trame envoyée et qu’à l’émission de chaque trame, un
temporisateur est armé, contenant une valeur maximale estimée du temps qu’il doit attendre
pour l’arrivée d’un acquittement (positif ou négatif).
Dans le cas où aucun acquittement n’arrive et que le temporisateur expire, c'est-à-dire le laps
de temps égal à la valeur maximale s’est écoulé, l’émetteur réarme le temporisateur et renvoi
la trame en utilisant la copie qu’il a gardée après la première émission.
Par ailleurs, l’émetteur est amené à numéroter les trames qu’il envoi pour que le récepteur
puisse les acquitter et aussi remédier au problème de doublons (plusieurs trames identiques).
La figure 2 donne la parité paire et la parité impaire de trois caractères (‘A’, ‘E’ et ‘V’) codés
en utilisant 7 bits. Le 8ème bit est utilisé pour mettre la valeur de la parité. Pour le caractère
4
‘A’, le codage initial sur 7 bits, avant émission, est égal à 1000001. Lors de l’émission, c’est
le bloc 01000001 qui est émis si on utilise une parité paire. À la réception, le récepteur calcule
le nombre de bits à 1 et dans le cas d'une parité paire si ce nombre de bits est pair on suppose
qu'il n'y a pas eu d'erreur. Sinon, on sait alors qu'il y a eu une erreur de transmission mais on
ne sait pas la localiser et il faut alors demander la réémission du caractère. La technique de
parité est simple à mettre en œuvre cependant elle ne permet pas de détecter un nombre pair
d’erreurs dans le même bloc de bits transmis, car dans ce cas la parité ne sera pas changée.
Cette méthode, ajoute un bit tous les 7 bits. Le rendement de la transmission est donc de 87,5
% (= 7/8).
Caractère Codage sur 7 bits Bit de parité paire Bit de parité impaire
‘A’
‘E’
‘V’
Figure 2 : Bits de parité paire et impaire de trois caractères (‘A’, ‘E’ et ‘V’)
La figure 3 donne les caractères de parité paire et impaire pour la chaîne ‘EVA’. Lors de la
transmission, la machine émettrice envoie le caractère ‘E’ puis le caractère ‘V’ puis le
caractère ‘A’ et enfin le caractère de parité.
‘V’
‘A’
5
Les techniques VRC et LRC peuvent être combinées ; c'est-à-dire que pour chaque caractère
d’une chaîne on calcule son bit de parité et pour la chaîne entière on calcule le caractère
combiné de parité. La figure 4 donne les bits de parité paire et le caractère combiné de parité
paire de la chaîne ‘EVA’.
‘V’
‘A’
Des statistiques faites sur des séquences courtes (quelques bits) montrent qu’environ 50 %
seulement des erreurs sont isolées et que l’on peut avoir jusqu’à 4 bits erronés consécutifs.
D’autres statistiques faites sur des séquences d’une centaine d’octets, montrent des erreurs
isolées dans 36 % des cas seulement. Ceci prouve qu’il est quasi inutile de ne détecter que les
erreurs simples (un seul bit erroné détectable par un contrôle de parité) mais que le système de
protection doit prendre en compte les erreurs groupées pour donner une sécurité suffisante.
Ceci nous conduit à utiliser les codes à redondance cyclique.
Les coefficients an ne peuvent prendre que les valeurs 0 ou 1 et les xn sont les puissances
successives de 2.
Par exemple, la suite binaire ‘11010110100’ est représentée par le polynôme suivant :
P(x) = 1x10 + 1x9 + 0x8+ 1x7 + 0x6 + 1x5 + 1x4 + 0x3 + 1x2 + 0x + 0
P(x) = x10 + x9 + x7 + x5 + x4 + x2
P(x) 1x10 1x9 0x8 1x7 0x6 1x5 1x4 0x3 1x2 0x1 0x0
6
Binaire 1 1 0 1 0 1 1 0 1 0 0
La suite de bits correspondant au polynôme R(x) constitue le CRC qui est ajouté à
l'information à transmettre (figure 5), le polynôme total émis est donc E(x)=xrP(x) + R(x).
4.1. Exemple
Soit à transmettre la trame contenant la suite binaire ci-dessus ‘11010110100’.
Si le polynôme diviseur est égal à G(x) = x4+x+1, ce qui donne en binaire : ‘10011’. Il faut
donc diviser ‘11010110100’par ‘10011’. Cette division est exécutée de la façon suivante :
La dernière ligne de la division donnera le reste ‘1001’ donc le CRC; c'est lui qui sera
ajouté au message que l'on va transmettre.
7
Donc, x4 P(x) = x14 + x13 + x11 + x9 + x8 + x6 = (x10 + x9 + x4 + x2 + x + 1) (x4 +x + 1) + x3 +
1
Si le reste calculé est non nul, c'est qu'une erreur s'est produite dans la transmission.
Si le reste est nul, on est à peu près sûr que la transmission s'est faite sans erreur.
Pourquoi cela fonctionne-t-il ? Il est évident que xrP(x)-R(x) est divisible par G(x), mais en
arithmétique modulo 2 addition et soustraction sont équivalentes (ce sont des OU exclusifs)
donc on a également E(x)=xrP(x) + R(x)=G(x)Q(x) montrant que E(x) est un polynôme
multiple de G.
Si lors de la transmission des erreurs se sont produites, cela se traduit par le fait que le
polynôme reçu E'(x)=E(x) + T(x), T étant le polynôme correspondant aux erreurs (T(x)=xi si le
ie bit a été inversé). À la réception le décodeur calcule le reste de (E(x) + T(x))/G(x) qui est en
fait le reste de T(x)/G(x) puisque E(x) est un multiple de G(x). Si ce résultat est non nul, c'est
que T est non nul et que des erreurs se sont produites. Évidemment, le résultat est également
nul si T est un multiple de G ce qui masque des erreurs, mais le choix judicieux de G permet
de minimiser ces erreurs non détectées.
Enfin, il faut aussi remarquer un inconvénient de cette méthode qui signale des erreurs de
transmission même si celles-ci ont eu lieu dans le CRC et non dans l'information à transmettre
initialement. Dans ce cas il ne devrait pas être nécessaire de retransmettre l'information, or
c'est ce qui est fait puisque globalement le transfert (info+CRC) a subi des perturbations.
8
produit (x + 1)(x15 + x + 1). Le polynôme normalisé CRC-CCITT : x16 + x12 + x5 + 1 est le
produit (x + 1)(x15 + x14 + x13 + x12 + x4 + x3 + x2 + x + 1). Le polynôme x + 1 génère un code
de parité pair. Son emploi garantit la détection de toutes les erreurs simples et les erreurs
d’ordre impair.
En pratique, on utilise des codes normalisés de degré 16 ou 32. Ces codes protègent une taille
maximale de données, par exemple 32 Koctets pour un polynôme de degré 16. Ces codes
détectent les erreurs simples, doubles et d’ordre impair. Le tableau suivant liste quelques
exemples de CRC normalisés :
Tous ces polynômes contiennent x + 1 comme facteur premier. Le polynôme CRC-12 est
appliqué aux caractères codés sur 6 bits. Le CRC-16 et le CRC-CCITT sont utilisés pour des
caractères codés sur 8 bits. Ils donnent des champs de contrôle d’erreur codés sur 16 bits. Ils
permettent de détecter toutes les erreurs simples ou doubles, toutes les erreurs comportant un
nombre impair de bits et tous les blocs d’erreurs de longueur inférieure ou égale à 16. Ils
détectent avec une probabilité de 99,997 % les blocs d’erreurs de 17 bits et avec une
probabilité de 99,998 % les blocs d’erreurs de longueur supérieure ou égale à 18 bits. Le
tableau suivant résume les chiffres du taux de détection d’un CRC de 16 bits :
Le CRC-32 donne un champ de contrôle d’erreur codé sur 32 bits. Il est utilisé pour des
caractères codés sur 16 ou 32 bits. Il est utilisé pour protéger les trames des réseaux locaux
normalisés par IEEE. Pour protéger les en-têtes, de 5 octets, des cellules ATM, c’est un CRC
de 8 bits qui est utilisé. Par contre, pour protéger les 48 octets de la charge utile d’une cellule
ATM dans le cas où c’est AAL ¾ qui est utilisé, on utilise un CRC de 10 bits.
5. Code de Hamming
9
Étant donné deux suites binaires, par exemple ‘10001001’ et ‘10110001’, il est possible de
déterminer de combien de bits il différent. Dans notre exemple, ils différent de trois bits. Pour
le trouver, il suffit d’effectuer un OU exclusif entre les deux suites binaires et de compter le
nombre de 1 du résultat. Le nombre de bits de différence entre deux suites binaires est appelé
distance de Hamming. Si la distance de Hamming entre deux suites binaires est d, il faut d
erreurs simples pour transformer une suite en l’autre suite.
Le code de Hamming est un code correcteur d'erreurs basé sur la notion de distance de
Hamming. Soit un alphabet composé de 4 caractères (00, 01, 10, 11). Si une erreur se produit
alors le caractère émis est transformé en un autre caractère et il n'y a pas moyen de retrouver
le caractère original. Par contre, en ajoutant de l'information de telle sorte que les caractères
soient très différents les uns des autres cela devient possible.
Par exemple, on peut coder les 4 caractères de la manière illustrée dans le tableau ci-dessous.
Ainsi si un bit (parmi les 5 émis) est erroné on sait quand même déterminer quel caractère a
été émis, car comme on peut le voir dans le tableau ci-dessous la modification d'un bit ne peut
pas faire passer d'un caractère initial à un autre caractère. On a des ensembles «d'erreurs
possibles» totalement disjoints. Par contre la modification de 2 bits dans cet exemple peut
amener à des confusions et à l'impossibilité de corriger les erreurs.
caractère initial 00 01 10 11
caractère émis 00000 01111 10110 11001
caractères erronés 00001 01110 10111 11000
possibles 00010 01101 10100 11011
00100 01011 10010 11101
01000 00111 11110 10001
(Une erreur
simple) 10000 11111 00110 01001
Soit x et y deux caractères d'un alphabet A et soit N la longueur du codage des mots de cet
alphabet, xi et yi désignent respectivement le ie bit de x et y. On peut alors définir la distance
par :
Elle permet de compter le nombre de bits qui diffèrent entre x et y. On définit alors la distance
de Hamming par dH = inf d(x, y) avec (x,y) є A 2 et x ≠ y.
Dans l'exemple choisi ci-dessus, dH=1 dans le premier codage sur 2 bits et dH=3 dans le
codage sur 5 bits. Chaque erreur sur un bit d'un caractère x donne un caractère x' tel que d(x,
x')=1, donc pour pouvoir détecter et corriger une seule erreur il faut que dH ≥ 3et pour corriger
2 erreurs il faut que dH ≥ 5. D'une manière générale on détecte et on corrige n erreurs quand la
distance de Hamming est 2n+1.
Un exemple de code de Hamming est donné par la technique suivante où l'on veut envoyer
des caractères codés sur 7 bits de données. Les bits sont notés de gauche à droite par
ABCDEFG (A note le bit de poids fort et G le bit de poids faible).
10
Pour cela on va émettre la suite ABCP3DEFP2GP1P0 dans laquelle les bits de contrôle Pi sont
placés sur les bits de rang 2i et sont définis par :
P0 = A ⊕ C ⊕ D ⊕ F ⊕ G
P1 = A ⊕ B ⊕ D ⊕ E ⊕ G
P2 = D ⊕ E ⊕ F
P3 = A ⊕ B ⊕ C
Les Pi sont des bits de parité définis à l'aide des bits de données de rang k tels que la
décomposition de k en somme de puissances de 2 contienne 2i. Par exemple, A est un bit de
données de rang 11 = 20 + 22 + 23 donc A sert au calcul de P0, P2 et P3. De même, le rang de D
est 7 = 20 + 21 + 22 donc il sert au calcul de P0, P1 et P2
À la réception on calcule :
P’0 = P0 ⊕ A ⊕ C ⊕ D ⊕ F ⊕ G
P’1 = P1 ⊕ A ⊕ B ⊕ D ⊕ E ⊕ G
P’2 = P2 ⊕ D ⊕ E ⊕ F
P’3 = P3 ⊕ A ⊕ B ⊕ C
Si on obtient P’3 = P’2 = P’1 = P’0 = 0 alors c'est que la transmission s'est passée sans
problème. Sinon, la valeur binaire de P’3P’2P’1P’0 donne la place de l'erreur dans les bits reçus
(en commençant par la droite). On corrige alors l'erreur et on recalcule les P’i, s'ils sont
devenus tous nuls, l'erreur a été corrigée, sinon il y avait eu au moins deux erreurs et on peut
rejeter la suite de bits mais pas la corriger.
Exemple :
Si l'on veut envoyer les 7 bits ‘1001101’ (figure 8), on va finalement émettre ‘10011100101’
(figure 9). Car :
P0 = 1 ⊕ 0 ⊕ 1 ⊕ 0 ⊕ 1 = 1
P1 = 1 ⊕ 0 ⊕ 1 ⊕ 1 ⊕ 1 = 0
P2 = 1 ⊕ 1 ⊕ 0 = 0
P3 = 1 ⊕ 0 ⊕ 0 = 1
11
Figure 8 : Suite binaire à envoyer
Le récepteur reçoit une suite binaire identique à celle que l’émetteur a envoyé. Pour le
vérifier, on calcule les P’i :
P’0 = 1 ⊕ 1 ⊕ 0 ⊕ 1 ⊕ 0 ⊕ 1 = 0
P’1 = 0 ⊕ 1 ⊕ 0 ⊕ 1 ⊕ 1 ⊕ 1 = 0
P’2 = 0 ⊕ 1 ⊕ 1 ⊕ 0 = 0
P’3 = 1 ⊕ 1 ⊕ 0 ⊕ 0 = 0
Le récepteur reçoit la suite binaire ‘00011100101’ (figure 10). Le calcul des P’i par le
récepteur donne :
P’0 = 1 ⊕ 0 ⊕ 0 ⊕ 1 ⊕ 0 ⊕ 1 = 1
P’1 = 0 ⊕ 0 ⊕ 0 ⊕ 1 ⊕ 1 ⊕ 1 = 1
P’2 = 0 ⊕ 1 ⊕ 1 ⊕ 0 = 0
P’3 = 1 ⊕ 0 ⊕ 0 ⊕ 0 = 1
Tous les P’i ne sont pas nuls, donc la suite binaire reçue est erronée. La position de l’erreur
est calculée par P’3P’2P’1P’0 qui est dans cette exemple égale à 11 valeur décimal de ‘1011’.
12
Figure 10 : Une erreur simple à la 11ème position
Le récepteur reçoit la suite binaire ‘00010100101’ (figure 11). Le calcul des P’i par le
récepteur donne :
P’0 = 1 ⊕ 0 ⊕ 0 ⊕ 0 ⊕ 0 ⊕ 1 = 0
P’1 = 0 ⊕ 0 ⊕ 0 ⊕ 0 ⊕ 1 ⊕ 1 = 0
P’2 = 0 ⊕ 0 ⊕ 1 ⊕ 0 = 1
P’3 = 1 ⊕ 0 ⊕ 0 ⊕ 0 = 1
Tous les P’i ne sont pas nuls, donc la suite binaire reçue est erronée. La position de l’erreur
est calculée par P’3P’2P’1P’0 qui est dans cette exemple égale à 12 valeur décimal de ‘1100’.
Comme la suite binaire ne contient pas plus de 11 bits, on conclut que la suite binaire reçue
contient plus d’une erreur. Dans ce cas, le code utilisé ne peut pas corriger les erreurs.
6. Contrôle de flux
Après l’émission d’une trame, l’émetteur arme un temporisateur et se met en attente pour
réceptionner l’acquittement associé à la trame envoyée. Si l’acquittement n’arrive pas avant
l’expiration du temporisateur, la trame est émise de nouveau. Chaque trame envoyée est
stockée temporairement dans un tampon qui sera libéré à la réception d’un acquittement
positif (ACK).
La figure 12 montre l’émission d’une trame suivie de l’envoi d’un acquittement positif. Le
temps total nécessaire pour cela est égal à Ttotal = Tp+ Tt + Te + Tp + Ta avec :
13
Figure 12 : Emission d’une trame suivie d’un acquittement positif
Pour augmenter le débit de la liaison, l’émetteur peut envoyer plusieurs trames, l’une à la
suite de l’autre, sans attendre d’acquittement. Néanmoins, il ne faut pas envoyer beaucoup
trop de trames en même temps au risque de submerger le récepteur qui faute de mémoire et de
capacité de traitement sera obligé de rejeter les trames en trop.
Dès qu'un acquittement positif pour une trame m est reçu, toutes les trames dont le numéro est
inférieur ou égal à m sont considérées acquittées (avantage : si un acquittement positif est
perdu, la réception d'une trame sera confirmée par l'acquittement d'une trame suivante).
La figure 13 montre une fenêtre de taille W=8 qui est remplie partiellement avec cinq trames
numérotées de 0 à 5. Si on suppose que l’ACK de la trame 0 est arrivé à l’émetteur, la trame
est libérée du tampon et une place est libérée de la fenêtre d’émission (figure 14). L’émetteur
envoi trois trames numéros 5, 6 et 7. Cela est possible, car il reste encore de la place dans la
fenêtre d’émission qui maintenant est remplie par les trames de 2 à 7 (figure 15). A la
réception de l’ACK de la trame 1, une place se vide dans la fenêtre (figure 16). L’émetteur
14
souhaite envoyer 5 nouvelles trames. Ceci n’est pas possible car il n’y a que trois places
disponibles dans la fenêtre. Il envoi les trames 8, 9 et 10.
La fenêtre de réception (dont la taille est égale à la taille maximale de la fenêtre d'émission
afin d'assurer la synchronisation entre l'émetteur et le récepteur) contient les trames reçues et
non encore transmises à la couche réseau. Chaque trame reçue est vérifiée (détection des
erreurs) et si elle est déjà présente dans la fenêtre, elle est rejetée.
15