Cyklický redundantný súčet: Rozdiel medzi revíziami
Riadok 53: | Riadok 53: | ||
==Príklad výpočtu CRC== | ==Príklad výpočtu CRC== | ||
+ | Napríklad: | ||
+ | Postupnosť bitov "100101" môže byť predpísaný ako polynóm x<sup>5</sup> + x<sup>2</sup> + 1, postupnosť bitov "110011" môže byť predpísaný ako polynóm x<sup>5</sup> + x<sup>4</sup> + x + 1. Pokiaľ nad bitmi týchto dvoch postupností prevedieme operáciu X-OR, dostávame postupnosť "010110", ktorá odpovedá polynómu x<sup>4</sup> + x<sup>2</sup> + x. | ||
+ | |||
+ | (x<sup>5</sup> + x<sup>2</sup> + 1) + (x<sup>5</sup> + x<sup>4</sup> + x + 1) = 2x<sup>5</sup> + x<sup>4</sup> + x<sup>2</sup> + x + 2 = x<sup>4</sup> + x<sup>2</sup> + x | ||
+ | |||
+ | Práve jednoduchá implementácia operácií nad bitovými postupnosťami je jedným z hlavných dôvodov širokého rozšírenia CRC algoritmov. |
Verzia zo dňa a času 18:38, 6. máj 2010
Obsah
CRC
Kontrola cyklickým kódom
Kontrola cyklickým kódom alebo cyklická kontrola (angl. cyclic redundancy check, skrátene CRC) je druh kontrolného súčtu používaného na kontrolu správnosti prenášaných údajov v telekomunikačnej technike a počítačových sieťach, ako aj uložených údajov na pamäťových médiách ako je napríklad pevný disk.
Kódovanie i dekódovanie CRC sa robí softwarovo, alebo hardwarovo (pomocou posuvných registrov so spätnými väzbami). I keď matematický aparát na prvý pohľad vyzerá "hrozivo", v prípade binárnych signálov (dvojkovej sústavy) je jeho realizácia (i hardwarová) pomerne jednoduchá a preto veľmi často využívaná
Princíp kódovania údajov
Na základe jednotlivých bitov sa vypočítava zabezpečovací údaj. Ten sa na konci celého bloku porovná so zabezpečovacím údajom, ktorý podľa rovnakých pravidiel vypočítal odosielateľ a pripojil k prenášanému bloku dát. Ak sa tieto dva údaje zhodujú, dá sa prenesený blok s vysokou pravdepodobnosťou predpokladať za správny.
K výpočtu zabezpečovacieho údaju nám postačí jednoduchý posuvný register, umožňujúci operáciu X-OR (tj. výhradné ALEBO jednotlivých bitov) s pevne danou maskou. Hodnota tejto masky je jednoznačne určená tzv. generujúcim polynómom (generating polynomial), na ktorom musia byť príjemca i odosielateľ vopred dohodnutí. Použiteľných polynómov týchto tvarov je viacej. V sieťovej komunikácií sa najčastejšie používa polynóm x16 + x12 + x5 + 1, doporučený organizáciou CCITT.
Kontrola cyklickým kódom - ako každý kontrolný súčet - mierne zväčšuje redundanciu správy, ale zvyšuje jej spoľahlivosť.
Výhradný logický súčet X-OR (EXCLUSIVE OR)
A | B | Y |
---|---|---|
0 | 0 | 0 |
0 | 1 | 1 |
1 | 0 | 1 |
1 | 1 | 0 |
Kontrolný súčet
Kontrolný súčet (angl. checksum) je v informatike menšie množstvo dát, ktoré vznikne ako následok určitej operácie na nejakom väčšom dátovom bloku. Využíva sa ako ochranný a kontrolný mechanizmus na zistenie poškodenia (prípadne opravu) dátového bloku počas jeho archivácie alebo prenosu. Kontrolný súčet, ktorý umožňuje opravu poškodených dát, sa nazýva samoopravný kód.
Prakticky najmenším množstvom údajov chráneným samostatným kontrolným súčtom je dátové slovo, ktoré sa prenáša (napríklad. pri 8-bitovom prenose je to jeden byte). Obvykle sa používa súčet vo forme jediného ďalšieho bitu - parity.
Zložitejšie kontrolné súčty schopné detekovať chyby v rozsiahlych súboroch sa nazývajú hash funkcie.
Hash funkcia
Príklad výpočtu CRC
Napríklad: Postupnosť bitov "100101" môže byť predpísaný ako polynóm x5 + x2 + 1, postupnosť bitov "110011" môže byť predpísaný ako polynóm x5 + x4 + x + 1. Pokiaľ nad bitmi týchto dvoch postupností prevedieme operáciu X-OR, dostávame postupnosť "010110", ktorá odpovedá polynómu x4 + x2 + x.
(x5 + x2 + 1) + (x5 + x4 + x + 1) = 2x5 + x4 + x2 + x + 2 = x4 + x2 + x
Práve jednoduchá implementácia operácií nad bitovými postupnosťami je jedným z hlavných dôvodov širokého rozšírenia CRC algoritmov.