Jak działa CRC?
Rozdział 6 Wielkość CRC a zdolność wykrywania błędów transmisji
W poprzednim rozdziale rejestr CRC miał 4 bity a wysyłana wiadomość mieściła się w 8 bitowym rejestrze A. Zgodzisz się chyba z tym, że system równie dobrze obliczałby CRC dla dowolnej wielokrotności 8 bitów czyli dla dowolnej liczby bajtów.
Ale jaka jest jego zdolność wykrywania błędów transmisji przy 4 bitach CRC? Pamiętamy, że obliczone CRC jest swego rodzaju “resztą z dzielenia” wiadomości z A przez “dzielnik”. Dla prawdziwego dzielenia np. 3784:25 resztą jest 3 i taka sama reszta może też być dla wielu dzielnych np. 3759, 3734, 3709,…,28. Analogicznie dla 4 bitowego CRC o danym “dzielniku” jest też wiele różnych wiadomości które maja tę samą “resztę”. Tu może być ich 16. Błąd w transmisji spowoduje zmianę oryginalnej wiadomości i najprawdopodobniej też zmianę CRC. Ale dlaczego najprawdopodobniej a nie na pewno? Bo błąd może też zmienić oryginalną wiadomość właśnie na jedną z tych 16 ale akurat z taką samą resztą! Takiego możemy mieć pecha! Odbiornik potraktuje wtedy wiadomość jako bezbłędną.
Jaki z tego wniosek. Im więcej dla danej wiadomości jest tych samych “reszt” tym większa jest moc wykrywania błędów! Czyli zależy nam na dużym rejestrze CRC. W praktyce, i do tego się ograniczymy, CRC ma 1, 2 lub 4 bajty. Jeden bajt czyli 8 bitów, daje nam 256 różnych wiadomości dla tej samej reszty , za to 4 bajty to jest ich aż 4 294 967 296. Trafić na taką samą wiadomość jest teraz tysiące razy trudniej niż wygrać w totolotka! Dlatego w tym przypadku takie same CRC w nadajniku i odbiorniku, to już prawie pewna bezbłędna transmisja! Niestety, zawsze trzeba dodać prawie.
Jeszcze jedno
1 bajtowe CRC nie oznacza że np. co 256-ty bajt przejdzie z niewykrytym błędem! Gdyby tak było, to tylko się zastrzelić. Każdy producent sprzętu do transmisji danych stara się o to, żeby był najpewniejszy, żeby nie było błędów. Wtedy nawet bez CRC, tak jak w Rozdz. 1 możemy być prawie pewni, że nie było błędów. Ale producent na podstawie swoich doświadczeń stwierdza, że pomimo wszelkich swoich starań, to np. w co milionowym przesłanym bajcie może być błąd. I tu właśnie wkracza do boju CRC które z “przepuści” wtedy błąd już co 256 milionów razy, a nie co milion! Czyli dzięki CRC pewność działania wzrosła 256 razy i to bez dodatkowej ingerencji np. w ekranowanie lub w staranniejszą technologię. W przypadku CRC 4 bajtowego ta pewność działania wzrośnie aż 4 294 967 296 razy!
I jeszcze następne jedno
Zdolność wykrywania błędów zależy od wielkości CRC. Jest to chyba oczywiste. Ale zależy też od jej wartości. Okazuje się np. że np. różne 4-bajtowe CRC mają różne moce wykrywania błędów. A wśród nich są takie które wykrywają je najlepiej!
Dlaczego tak jest? Odpowiem najprościej jak tylko można. Nie wiem.
Od tego są matematycy i oni stwierdzili że np. CRC=100000100110000010001100110110111 dobrze wykrywa błędy i dlatego jako CRC-32 jest bardzo popularne w transmisji danych.