Traitement de l’information
Codes correcteurs et détecteurs d’erreurs Codes utilisant des bits de parité
Michel Salomon
IUT de Belfort-Montbéliard Département d’informatique
Michel Salomon Traitement de l’information 1 / 21
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
Michel Salomon Traitement de l’information 2 / 21
Qu’est-ce qu’un code ?
Un code définit une façon de représenter l’information On utilise des codes pour résoudre différents problèmes
1 Assurer l’intégrité de l’information
→ détection et correction d’erreurs
2 Minimiser la taille de l’information
→ compression
3 Garantir la sécurité de l’information
→ chiffrement (cryptage)
Remarques
Codes de détection et de correction d’erreurs sont des codes de base → utilisés dans de nombreux protocoles / normes Compression et chiffrement répondent à des besoins plus spécifiques →plutôt utilisation à la demande
Michel Salomon Traitement de l’information 3 / 21
Pourquoi a-t-on besoin de ces codes ?
Codes détecteurs / correcteurs⇒gérer de “petites” erreurs (quelques bits)
Les données numériques stockées peuvent être corrompues
→ erreurs dues à des rayures, des impuretés du support, etc.
Les données transmises sont susceptibles d’être altérées
→ canal de transmission pas entièrement fiable Compression⇒réduire la taille occupée par l’information
Réduire l’espace occupé pour la stocker Réduire le temps mis pour la transmettre
Chiffrement (cryptage)⇒ un des mécanismes de la sécurité informatique
La sécurité informatique a principalement pour objectifs
→ d’empêcher la divulgation non-autorisée de données ;
→ d’empêcher la modification non-autorisée de données ;
→ d’empêcher l’utilisation non-autorisée de ressources
Michel Salomon Traitement de l’information 4 / 21
Codes détecteurs / correcteurs
Schéma de la théorie de l’information
source n symboles codeur t symboles canal t symboles decodeur n symboles c
u y u
bruit
Classes de codes correcteurs d’erreurs Codes blocs
Traitent les blocs d’information indépendamment Les mots de code sont indépendants les uns des autres Codes convolutifs
Dépendance entre les informations
Sortie dépendant de l’info. précédente et de l’état du codeur
Remarques
Choix d’un code → dépend de l’application
Meilleurs codes → codes blocs(irréguliers à faible densité de parité)
Michel Salomon Traitement de l’information 5 / 21
Caractéristiques attendues d’un bon code
Bon rendement (taux)
→ un nombre élevé de bits d’info. par rapport aux bits codés
→ un rapport nt élevé
Bonne capacité de détection et correction
Procédés de codage et décodage simples et rapides
Objectif de la théorie des codes correcteurs d’erreurs Concevoir des codes qui :
détectent et corrigent le plus d’erreurs ; sans trop allonger les messages transmis ; en étant faciles et rapides à utiliser
Michel Salomon Traitement de l’information 6 / 21
Codes blocs détecteurs et correcteurs
Unmessage;bloc,mot ouvecteur d’information; un code sourceest une suite de symboles d’un alphabet Cas binaire (alphabet ={0,1}) : unmotest une suite de bits Pour traiter / prévenir des erreurs
→ des informations supplémentaires seront ajoutées un message est découpé en blocs denbits de données ; auxnbits de données, on ajoutek bits de contrôle ; ce seront lesn+k =t bits qui seront stockés ou transmis
→ on ajoute de la redondance à l’information
Terminologie
Code autovérificateur → détecte des erreurs
Code autocorrecteur→ détecte et corrige des erreurs
Michel Salomon Traitement de l’information 7 / 21
Codes autovérificateurs - Contrôle de parité
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+ 1 bits est :
pair dans le cas d’une parité paire ; impair pour une parité impaire Exemple
Le caractère ’0’ a pour code ASCII 48, soit sur 1 octet 001100002
Si on ajoute 1 bit de parité impaire lors de la transmission, la séquence binaire transmise est alors
0011000012
Michel Salomon Traitement de l’information 8 / 21
Codes autovérificateurs - Contrôle de parité
Limites du contrôle de parité
Permet de détecter qu’un nombre impair d’erreurs
Ne permet pas de savoir quel(s) est / sont le(s) bit(s) erroné(s) Le contrôle de parité n’a d’intérêt que pour des systèmes de stockage ou de transmission présentant un faible taux d’erreur
Pas de correction→retransmission des données en cas d’erreur Exemple - Contrôle de parité paire
Séquence reçue Séquence
initiale
Séquence reçue Séquence
reçue
Recalcul du bit de parité
Séquence transmise 0 10111 0 0
1 1 1 1
0
0 1 1 1 1
0 1 1 1 0 1
0 0 1 1 0 1
0
1
1 0
0 0 0
bit de parité reçu bit de parité calculé
0 0 bit de parité reçu bit de parité calculé
0 1 bit de parité reçu bit de parité calculé 0
0 00
Michel Salomon Traitement de l’information 9 / 21
Codes autocorrecteurs - Double parité
Code consistant à faire un double contrôle de parité sur un bloc de données
Le bloc de données est un tableau à deux dimensions de bits sur lequel on effectue :
un contrôle de parité transversal→sur chaque colonne
⇒VerticalRedundancyCheck (VRC)
un contrôle de parité longitudinal→sur chaque ligne
⇒LongitudinalRedundancyCheck (LRC) Chaque caractère est protégé par un code VRC et l’ensemble des bits par un code LRC
Détection possible d’une erreur sur une ligne et une colonne La position d’une erreur peut être trouvée et corrigée Les codes VRC et LRC utilisent la même parité
De manière générale la double parité permet de corriger une erreur et dans certains cas un nombre impair d’erreurs
Michel Salomon Traitement de l’information 10 / 21
Codes autocorrecteurs - Double parité
Exemple - Double parité paire
Bit de parité
Bit de parité
7 6 5 4 3 2 1 0 Bit
1 0 1 1 0 0 1 0
0 1 0 0 1 0 1
0 0 0 0 0 1 1 1 0
0 1 1 1 1
0 0 0 0
0 0 1 1 1 1 1 1 0 0 0
0 0 0
0 1 1 1 1 1 0 1 0 Caractères
1 2 3 4
LRC LRC LRC LRC LRC LRC LRC LRC
VRC VRC
Recu 0
1
L’erreur sur le caractère 2 peut être détectée et corrigée
Michel Salomon Traitement de l’information 11 / 21
Codes autocorrecteurs - Code de Hamming
Basé sur des tests de parité
Aux n bits de données, on ajoutek bits de contrôle
→ au total on an+k =t bits
Les k bits de contrôle doivent permettre de contrôler t+ 1 possibilités d’erreurs
→ 1 erreur sur chaque position ;
→ plus l’absence d’erreurs
On doit donc avoir 2k ≥t+ 1
On privilégie les codes les plus courts, d’où le fait que k est la plus petite valeur entière vérifiant :
2k ≥t+ 1⇔2k−k ≥n+ 1
Chaque code binaire défini par les k bits de contrôle permet ainsi de détecter et corriger une erreur sur une position
Michel Salomon Traitement de l’information 12 / 21
Codes autocorrecteurs - Code de Hamming
Principe
En notant les positions des bits de la séquence binaire à partir de 1, en commençant à droite, on a :
les bits de contrôle qui occupent des positions correspondant à des puissances de 2→1, 2, 4, 8, 16, etc.
les bits de données qui occupent les positions restantes Chaque bit de contrôle effectue un contrôle de parité sur un certain nombre de bits parmi les n+k =t bits Exemple - Transmission de 4 bits de données
Pour n= 4, k = 3 bits de contrôle sont suffisants, car : 2k −k ≥n+ 1⇔2k−k ≥5
est vérifiée pour k ≥3, d’où un code de Hamming sur 7 bits
Position 7 6 5 4 3 2 1
n n n
4 3 2k
3n
1k k
2 1Michel Salomon Traitement de l’information 13 / 21
Codes autocorrecteurs - Code de Hamming
Exemple - Transmission de 4 bits de données On parle aussi de code de Hamming (7,4)
Par quel bit de contrôle un bit d’information est-il vérifié ?
1 On calcule pour chaque positionLdans la séquence son code binaire
2 Si un bit est à 1 en positionl dans le code binaire deL, alors le bit de contrôle occupant la position 2l−1 dans la séquence vérifie le bit en positionL
→ Positions contrôlées
•L= 7 = 1112→contrôlé park3,k2,k1
•L= 6 = 1102→contrôlé park3,k2
•L= 5 = 1012→contrôlé park3,k1
•L= 4 = 1002→contrôlé park3
•L= 3 = 0112→contrôlé park2,k1
•L= 2 = 0102→contrôlé park2
•L= 1 = 0012→contrôlé park1
Michel Salomon Traitement de l’information 14 / 21
Codes autocorrecteurs - Code de Hamming
Pour vérifier l’information on contrôle la parité
1 Chaque bit de contrôle ki reçu / lu est comparé à la valeur recalculée k0i →on fixe Ci tel que :
siki=k0i
→Ci = 0 ; siki6=k0i
→Ci = 1
2 La séquence binaire des Ci,1≤i ≤k indique si il y a une erreur ou non, et sa position :
siCk. . .C1= 0
→pas d’erreur ; siCk. . .C16= 0
→l’équivalent décimal deCk. . .C1donne la position erronée
Michel Salomon Traitement de l’information 15 / 21
Codes autocorrecteurs - Code de Hamming
Exemple - Réception de 7 bits d’informations Message reçu = 10111002
Utilisation d’un contrôle de parité paire
1 Détermination du nombre de bits de contrôle
Message comportantt = 7 bits→k= 3 bits de contrôle car : 2k −1≥t(= 7)⇔2k ≥8⇒k = 3
2 Vérification de l’information
Position
7 6 5 4 3 2 1 n n n
4 3 2n
1 Message1 0 1 1 1 0 0
k
3k
2k
1→ k1= 0→contrôle des bits 1,3,5,7⇒erroné→C1= 1
→ k2= 0→contrôle des bits 2,3,6,7⇒juste→C2= 0
→ k3= 1→contrôle des bits 4,5,6,7⇒erroné→C3= 1
Si détection et correction d’une seule erreur
Simplification du calcul des bits de contrôle
Michel Salomon Traitement de l’information 16 / 21
Codes autocorrecteurs - Code de Hamming
Exemple - Réception de 7 bits d’informations Message reçu = 10111002
Utilisation d’un contrôle de parité paire
1 Détermination du nombre de bits de contrôle
Message comportantt = 7 bits→k= 3 bits de contrôle car : 2k −1≥t(= 7)⇔2k ≥8⇒k = 3
2 Vérification de l’information
Erreur au niveau de la position 5 qui devrait valoir 0 et non 1 Message corrigé = 10011002
3 Suppression des bits de contrôle →données initiales = 10012
Si détection et correction d’une seule erreur
Simplification du calcul des bits de contrôle
Michel Salomon Traitement de l’information 17 / 21
Codes autocorrecteurs - Code de Hamming
Calcul simplifié du code de Hamming - Transmission Message de 11 bits de données →110100110102
Utilisation d’un contrôle de parité paire
1 Détermination du nombre de bits de contrôle
Pourn= 11,k = 4 bits de contrôle sont suffisants car : 2k −k ≥n+ 1⇔2k −k≥12
est vérifiée pourk≥4, d’où un code de Hamming sur 15 bits
2 Calcul des bits de contrôle
Les bits en positions 15,14,12,9,7 et 5 sont à 1 On converti en binaire ces positions, puis on les additionne modulo 2 :
•on obtient 1 pour un nombre impair de 1 ;
•on obtient 0 pour un nombre pair de 1
Le résultat obtenu donne la valeur des bits de contrôle Remarque : si parité impaire, addition modulo 2 inversée
Michel Salomon Traitement de l’information 18 / 21
Codes autocorrecteurs - Code de Hamming
Détermination du message à transmettre avec le calcul simplifié
k3 k2 k1 Message 1 1 0 1 0 0 1 ? 1 0 1 ? 0 ? ?
Message 1 1 0 1 0 0 1 0 1 0 1 1 0 1 0 k4k3k2k1
k4
Position 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 n n n4 3 2 n1 n
n n n n n
n 10 9 8 7 6 5
15 14 12 9 7 5
1 1 1 1 1 1 1 0 1 1 0 0 1 0 0 1 0 1 1 1 0 1 0 1
=
=
=
=
=
=
0 1 1 0
11
Michel Salomon Traitement de l’information 19 / 21
Codes autocorrecteurs - Code de Hamming
Calcul simplifié du code de Hamming - Transmission
Message de 15 bits d’informations →1010001010011002 Utilisation d’un contrôle de parité impaire
1 Détermination du nombre de bits de contrôle Pourt = 15 bits, on ak= 4 bits de contrôle car :
2k−1≥t(= 15)⇔2k ≥16⇒k = 4
2 Vérification des bits de contrôle
Les bits en positions 15,13,9,7,4 et 3 sont à 1 On converti en binaire ces positions, puis on les additionne modulo 2 en inversant :
•on obtient 1 pour un nombre pair de 1 ;
•on obtient 0 pour un nombre impair de 1
Le résultat obtenu correspond à la séquence desCi,1≤i≤k
•égal à 0 →pas d’erreur
•différent de 0 →l’équivalent décimal de la séquence donne la position erronée
Michel Salomon Traitement de l’information 20 / 21
Codes autocorrecteurs - Code de Hamming
Détermination des données reçues avec le calcul simplifié
k4 k
3
Message 1 1 0 0 0 1 0 1 0 1 0 0
Message 1 0 1 0 0 0 1 0 1 0 0 1 1 0 0
0 0 0
Données reçues
k1
k2
Position 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1
n n n n
2 3
4 1
n n n n n n
n11 10 9 8 6 5
15 = 1 1 1 1
=
=
=
=
=
1 1 0 1 13
9 7 4 3
1 0 0 1 0 1 1 1 0 1 0 0 0 0 1 1 0 1 0 0
C C C C4 1 2 3 7
Michel Salomon Traitement de l’information 21 / 21