CRC : Cyclic Redundancy Check
Exercice:
Montrer que le (CRC : Cyclic Redundancy Check) permet de détecter et de corriger les
erreurs simples et doubles lors de la transmission de la trame entre l’émetteur
et le récepteur.
I-Principe
du CRC:
CRC est un
mécanisme de contrôle d’erreurs basé sur le calcul d’un polynôme générateur. Il
permet de contrôler que les données d’un paquet, d’une trame ou d’une cellule
n’ont pas été endommagées lors de la transmission sur le réseau.
On suppose, lors
de l’émission, que le nombre de bits transmis dans une trame est (N+1). Alors,
ce bloc de données sera considéré comme un polynôme de degré N. On multiplie le
polynôme représentatif du message par Xm,
où m étant le degré du polynôme générateur. Ensuite, on procède à la division
polynomiale_ la division utilise le OU exclusif_ jusqu’à avoir le reste de
degré inferieur à celui du diviseur ; ce reste correspond au CRC, celui-ci
vient se coller à la fin des données émises.
Ceci revient à :
A la réception, l’ensemble « message+CRC » subit la même opération,
si le reste de la division est égal à zéro, on suppose que le message n’a pas
été affecté par une erreur de transmission. Sinon, des erreurs de bits ont eu
lieu lors de la transmission.
II-Les
polynômes générateurs et la détection des erreurs:
Les polynômes générateurs utilisés font objet de normalisation. Le
degré du polynôme est d’autant plus important que la probabilité d’apparition
d’une erreur le soit, ou que la longueur du bloc à protéger soit importante.
Ainsi, le polynôme générateur X16 + X12 + X5
+1 permet de détecter :
·
Toutes les séquences d’erreurs de
longueur égale ou inférieure à 16 bits ;
·
Toutes les séquences erronées
comportant un nombre impair de bits ;
·
99,99% des erreurs de longueur
supérieure à 16 bits.
Correction
des erreurs:
Si le CRC peut
détecter tous les erreurs simples et doubles. Alors il peut en principe
corriger toutes les erreurs simples. Pour ce faire, supposons qu’on a reçu une
donnée contenant une simple erreur ; Si on procède au changement de tous
les bits un par un. Dans tous les cas sauf un,
cela se traduira par une double erreur détectée. Sauf lorsqu’on change
le bit initialement erroné, dans ce cas les données seront corrigées.
Alors, Ceci est
d’autant plus intéressant quand la capacité de détection des erreurs est
importante(le cas de G(x)= X16 + X12 + X5 +1).
Dans ce cas le CRC peut détecter et corriger les erreurs simples et doubles, et
encore plus.
N.B : La correction des erreurs présentes, toutefois, plusieurs complications,
d’où le fait qu’on préfère de retransmettre l’ensemble de la trame en cas d’erreurs.
Conclusion:
Le contrôle
d’erreurs CRC effectué au niveau de la couche liaison de données du modèle OSI,
constitue une méthode efficace et fiable pour s’assurer de la réception
correcte de la trame, permettant ainsi de détecter et de corriger les bits
erronés.
Ceci dit, la
correction des données n’est pas appliquée. Le récepteur rejette la trame et la
redemande à l’émetteur en cas d’erreur(s) détectée(s).