• Aucun résultat trouvé

Traitement de l’information Codes correcteurs et détecteurs d’erreurs Codes utilisés dans les protocoles réseaux

N/A
N/A
Protected

Academic year: 2022

Partager "Traitement de l’information Codes correcteurs et détecteurs d’erreurs Codes utilisés dans les protocoles réseaux"

Copied!
12
0
0

Texte intégral

(1)

Traitement de l’information

Codes correcteurs et détecteurs d’erreurs Codes utilisés dans les protocoles réseaux

Michel Salomon

IUT de Belfort-Montbéliard Département d’informatique

(2)

Plan du cours

1 Codes utilisant des bits de parité

Contrôle de parité ; Double parité ; Code de Hamming

2 Somme de contrôle

Utilisé dans les protocoles TCP, UDP et IP

3 Code de Redondance Cyclique Utilisé dans le protocole Ethernet

(3)

Somme de contrôle (Checksum) - 1

Principe

Une somme de contrôle sur s bits est obtenue en additionnant des blocs de b bits modulo 2s

Généralement b = 8 bits

Exemple : somme de contrôle sur 1 octet Séquence à transmettre = 6A37D316

0110101000110111110100112

Séquence transmise = 6A37D37416

Séquence découpée en 3 octetsconversion en décimal de chaque octet puis Somme des 3 nombres

Calcul de Somme mod 2s sur 1 octets= 8 d’où 28= 256 Somme mod 256 = (106 + 55 + 211) mod 256

= 372 mod 256 = 116 =7416

(4)

Somme de contrôle (Checksum) - 2

Remarque

Ne permet pas de détecter certains types d’erreurs, car la somme de contrôle n’est pas sensible à : la réorganisation des octets (changement de position) ; ajout ou suppression d’octets à zéro ;

erreurs se compensant

Utilisation dans le protocole IP

L’en-tête des paquets IP contient une Checksum qui Occupe 2 octets, soit 16 bits : octets 11 et 12 Contrôle les octets précédents duHeader

(5)

Somme de contrôle (Checksum) - 3

Utilisation dans le protocole IP

Calcul de la somme de contrôle

1 Découpage des 10 octets duHeader en 5 entiers sur 16 bits

2 Addition des 5 entiers

Si la somme fait plus de 16 bits, on coupe en 2 séquences : les 16 bits de poids faibles et les autres que l’on additionne on continue tant que l’addition produit plus 16 bits

3 On prend le complément à 1 (logique) de la séquence de 16 bits

Vérification de l’en-tête

Validité de l’en-tête contrôlée en refaisant le calcul avec la somme de contrôle incluse

Si on obtient une séquence de 16 bits à 1 il n’y a pas d’erreur

(6)

Code de Redondance Cyclique (CRC) - 1

Cyclic Redundancy Check ou méthode des codes polynomiaux Méthode la plus utilisée pour détecter des erreurs groupées Calcule des bits de contrôle en effectuant différentes opérations avec un polynôme à coefficients binaires Un polynôme binaire de degré n−1 est défini par une séquence de n bits qui sont les coefficients du polynôme Exemple : 1101 définit le polynôme x3+x2+ 1 de degré 3 Toutes les opérations se fontmodulo 2

Pas de retenues lors des additions et les soustractions Ces deux opérations sont identiques à un ou-exclusif (xor)

(7)

Code de Redondance Cyclique (CRC) - 2

Principe

L’émetteur et le récepteur se mettent d’accord un polynôme G(x) dit générateur (utilisé pour générer les bits de contrôle) Calcul de la séquence à envoyer

1 CalculerS(x)·xd, avec S(x) le polynôme correspondant à la séquence initiale à envoyer etd le degré de G(x)

2 Calculer la division suivante modulo 2 S(x)·xd

G(x) S(x)·xd =Q(x)·G(x) +R(x) Le resteR(x) est une séquence de d bits

3 Calculer la soustraction suivante modulo 2 S(x)·xdR(x) =T(x)

T(x) est le polynôme cyclique, c’est la séquence à envoyer.

C’est un multiple du générateur :T(x) =Q(x)·G(x)

(8)

Code de Redondance Cyclique (CRC) - 3

Principe

Vérification de la séquence reçue

1 Calculer la division suivante modulo 2 T(x) G(x)

2 Si la valeur du reste de la division est

= 0pas d’erreur 6= 0erreur

Remarques

Suivant le choix deG(x) il est possible de détecter des erreurs sur 1 bit, 2 bit, etc.

Un CRC de d bits permet de repérer avec une probabilité de 1 des erreurs de longueurd une probabilité de (121d) des erreurs de longueur>d Proba. de détecter des erreurs avec le CRC-16 de 99,985%

(9)

Code de Redondance Cyclique (CRC) - 4

Quelques polynômes générateurs utilisés

CRC-12 = x12+x11+x3+x2+ 1 CRC-16 = x16+x15+x2+ 1 CRC-CCITT = x16+x12+x5+ 1

CRC-32 (Ethernet) = x32+x26+x23+x22+x16+x12+x11 +x10+x8+x7+x5+x4+x2+x+ 1 De manière générale

un CRC-d est défini par une séquence ded + 1 bits

(10)

Code de Redondance Cyclique (CRC) - 5

Exemple

Séquence à envoyer 101101→S(x) =x5+x3+x2+ 1 Polynôme générateur défini par 1011 →G(x) =x3+x+ 1

1 S(x)·x3= 101101000 (ajout de 3 zéros àS(x))

2 Calcul de la division modulo 2 →R(x) = 011

3 Calcul de la soustraction modulo 2 du reste R(x) deS(x)·x3 Il suffit d’ajouter les d bits deR(x) à la fin deS(x), d’où

T(x) = 101101011

(11)

Code de Redondance Cyclique (CRC) - 6

Calcul de la division modulo 2

0

1 1101000 1011 1011

000001000

100001 1011

0 0 11 X

8

+ X + X + X

6 5 3

X

8

+ X

6

+ X

5

0 0 0 X

3

X

3

+

X + 1 X + 1

X

3

+ X + 1 X

5

+ 1 0

+

(12)

Comparaison des codes

Critères de comparaison et résultat Simplicité→ rapidité d’exécution

Redondance → nombre de bits de redondance utilisés Détection → probabilité de détecter une erreur Correction → possibilité de corriger les erreurs

Code Simplicité Redondance Détection Correction VRC, LRC Très simple Moyenne Faible Non

VRC+LRC Très simple Moyenne Faible Oui

Hamming Simple Élevé Moyenne Oui

CRC Compliqué Faible Excellente Non

Références

Documents relatifs

– medium 1 : introduit une erreur d’un bit dans chaque mot de code (chaque CarCode_t, i.e. chaque short) – medium 2 : pour TAUX_ERREUR=0 n’introduit aucune erreur et

Le code autovérificateur classique est le contrôle de parité Aux n bits est ajouté 1 bit supplémentaire dit de parité Le bit de parité est tel que le nombre de bits à 1 parmi les n

◦ On divise la séquence binaire reçue par la séquence correspondant au polynôme générateur et on regarde le reste que

Pour ce faire le bloc de bits correspondant est obtenu en mettant sur chaque colonne le code ASCII d'un caractère à transmettre, en commençant par le premier caractère sur la

Le principe des turbo codes, comme tout code correcteur d'erreur, est d'introduire une redondance dans le message afin de le rendre moins sensible aux bruits et perturbations

Parmi tous les codes linéaires C n,2 avec n ≥ 6 et n pair, peut-on trouver un code qui offre une garantie de détection d'un plus grand nombre q d'erreurs que le code C n,2

[r]

That's one small step for a man, a giant leap for mankind Un premier exercice. Message