mercredi 7 mai 2014

Exercice CRC

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).