TD2 – Codes utilisés
dans les protocoles réseaux
1. Somme de contrôle
1. Séquence binaire sans la somme de contrôle et le bit de parité
◦ La séquence commence par l’octet BE16 qui marque le début, puis on trouve le mot RsTW et enfin l’octet ED16 qui marque la fin. On a donc la séquence suivante :
1011 1110 0101 0010 0111 0011 0101 0100 0101 0111 1110 11012
BE 52 73 54 57 ED16
2. Calcul de la somme de contrôle, puis du bit parité
◦ On convertit les octets en base 10 :
▪ 101111102 = 128+32+16+8+4+2 = 19010
▪ 010100102 = 64+16+2 = 8210
▪ 011100112 = 64+32+16+2+1 = 11510
▪ 010101002 = 64+16+4 = 8410
▪ 010101112 = 64+16+4+2+1 = 8710
▪ 111011012 = 128+64+32+8+4+1 = 23710
◦ On additionne les valeurs des octets : Somme = 190+82+115+84+87+237 = 795 ;
◦ La somme de contrôle est sur 7 bits d’où s = 7 => 2s = 27 = 128 et donc on obtient : Somme mod 128 = 795 mod 128 = 27 puisque 795 = 6 x 128 + 27
= 00110112 sur 7 bits
◦ En ajoutant le bit de parité on obtient finalement l’octet 001101112 = 3716
3. Ajout de la somme de contrôle et du bit de parité à la séquence La séquence finalement transmise est :
BE52735457ED3716
2. Code de Redondance Cyclique (Cyclic Redundancy Check)
2.1. Calcul du CRC d’une séquence binaire
a) La séquence à envoyer est 00101101011 = 101101011, d’où le polynôme correspondant :
S(x) = x8+x6+x5+x3+x+1
b) G(x) = x5+x2+1 => polynôme générateur de degré 5 défini par 100101 1) S(x) . x5 = 10110101100000 (ajout de 5 zéros à S(x))
2) Calcul de la division modulo 2 => R(x) = 01000
S(x) = 1 0 1 1 0 1 0 1 1 0 0 0 0 0 | 1 0 0 1 0 1 = Gx) => Q(x) = 101001000 1 0 0 1 0 1
0 0 1 0 0 0 0 1 1 0 0 1 0 1 0 0 0 1 0 0 1 0 0
1 0 0 1 0 1 0 0 0 0 0 1 0 0 0 3) Calcul de la soustraction modulo 2
◦ Il suffit d’ajouter les 5 bits de R(x) à la fin de la séquence S(x)
◦ T(x) = S(x) R(x) = 00101101011 01000 = 0010110101101000
T(x) = 1 0 1 1 0 1 0 1 1 0 1 0 0 0 | 1 0 0 1 0 1 = Gx) => Q(x) = 101001000 1 0 0 1 0 1
0 0 1 0 0 0 0 1 1 0 0 1 0 1 0 0 0 1 0 0 1 0 1
1 0 0 1 0 1
0 0 0 0 0 0 0 0 0
c) G(x) = x4+1 => polynôme générateur de degré 4 défini par 10001 1) S(x) . x4= 1011010110000 (ajout de 4 zéros à S(x))
2) Calcul de la division modulo 2 => R(x) = 1100
S(x) = 1 0 1 1 0 1 0 1 1 0 0 0 0 | 1 0 0 0 1 = G(x) => Q(x) = 101111100 1 0 0 0 1
0 0 1 1 1 1 0 1 0 0 0 1 0 1 1 1 1 1 1 0 0 0 1 0 1 1 1 0 1
1 0 0 0 1 0 1 1 0 0 0
1 0 0 0 1 0 1 0 0 1 0 1 0 0 0 1 0 0 0 1 1 0 0 3) Calcul de la soustraction modulo 2
◦ Il suffit d’ajouter les 4 bits de R(x) à la fin de la séquence S(x)
◦ T(x) = S(x) R(x) = 00101101011 1100 = 001011010111100
2.2. Vérification d’une séquence binaire
a) La séquence à vérifier est 11010110111110 = T(x)
b) G(x) = x4+x+1 => polynôme générateur de degré 4 défini par 10011 1) Calcul de la division modulo 2 => T(x) / G(x)
T(x) = 1 1 0 1 0 1 1 0 1 1 1 1 1 0 | 1 0 0 1 1 = G(x) => Q(x) = 1100001010 1 0 0 1 1
0 1 0 0 1 1 1 0 0 1 1
0 0 0 0 0 1 0 1 1 1 1 0 0 1 1 0 0 1 0 0 1 1 1 0 0 1 1 0 0 0 0 0 0
2) Comme le reste R(x) = 0 on en déduit qu’il n’y a pas d’erreur
2.3. Calcul du CRC d’une séquence binaire
a) La séquence à envoyer est 10110110, d’où le polynôme correspondant : S(x) = x7+x5+x4+x2+x
b) G(x) = x4+x2+1 => polynôme générateur de degré 4 défini par 10101 1) S(x) . x4 = 101101100000 (ajout de 4 zéros à S(x))
2) Calcul de la division modulo 2 => R(x) = 1101
S(x) = 1 0 1 1 0 1 1 0 0 0 0 0 | 1 0 1 0 1 = G(x) => Q(x) = 10011001 1 0 1 0 1
0 0 0 1 1 1 1 0 1 0 1 0 1
0 1 0 1 1 0 1 0 1 0 1 0 0 0 1 1 0 0 0 1 0 1 0 1 0 1 1 0 1 3) Calcul de la soustraction modulo 2
◦ Il suffit d’ajouter les 4 bits de R(x) à la fin de la séquence S(x)
◦ T(x) = S(x) R(x) = 10110110 1101 = 101101101101
2.4. Vérification d’une séquence binaire
◦ 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 l’on obtient. Si le reste est nul il n’y a pas d’erreur.
◦ Le degré du polynôme générateur est d =4 donc la séquence de données reçue (S(x)) est obtenue en enlevant les 4 derniers bits de la séquence reçue (T(x)).
a) Commençons par vérifier qu’il n’y a pas d’erreur dans la séquence T(x) reçue, avec la séquence qui est T(x) = 1101001000001
b) G(x) = x4+x2+1 => polynôme générateur de degré 4 défini par 10101 1) Calcul de la division modulo 2 => T(x) / G(x)
T(x) = 1 1 0 1 0 0 1 0 0 0 0 0 1 | 1 0 1 0 1 = G(x) => Q(x) = 111001010 1 0 1 0 1
0 1 1 1 1 0 1 0 1 0 1 0 1 0 1 1 1 1 0 1 0 1 0 0 0 1 0 0 0 0
1 0 1 0 1 0 0 1 0 1 0 0 1 0 1 0 1 0 0 0 0 1 1
2) Comme le reste R(x) est différent de 0 on en déduit qu’il y a au moins une erreur dans la séquence reçue (T(x))