DCN - wykrywanie i korygowanie błędów
Istnieje wiele przyczyn, takich jak szumy, przesłuchy itp., Które mogą pomóc w uszkodzeniu danych podczas transmisji. Warstwy wyższe pracują na pewnym uogólnionym obrazie architektury sieci i nie są świadome rzeczywistego przetwarzania danych sprzętowych, stąd też warstwy wyższe oczekują bezbłędnej transmisji między systemami. Większość aplikacji nie działałaby zgodnie z oczekiwaniami, gdyby otrzymywały błędne dane. Aplikacje takie jak głos i wideo mogą nie mieć tego wpływu, a przy pewnych błędach mogą nadal działać dobrze.
Warstwa łącza danych wykorzystuje pewien mechanizm kontroli błędów, aby zapewnić, że ramki (strumienie danych) są przesyłane z pewnym poziomem dokładności. Aby jednak zrozumieć, w jaki sposób kontrolowane są błędy, należy wiedzieć, jakie rodzaje błędów mogą wystąpić.
Rodzaje błędów
Mogą występować trzy rodzaje błędów:
Single bit error
W ramce jest jednak tylko jeden bit, który jest uszkodzony.
Multiple bits error
Ramka została odebrana z więcej niż jednym bitem w stanie uszkodzonym.
Burst error
Ramka zawiera więcej niż 1 kolejnych bitów uszkodzonych.
Mechanizm kontroli błędów może obejmować dwa możliwe sposoby:
Wykrywanie błędów
Korekta błędów
Wykrywanie błędów
Błędy w odebranych ramkach są wykrywane za pomocą kontroli parzystości i cyklicznej kontroli nadmiarowej (CRC). W obu przypadkach kilka dodatkowych bitów jest wysyłanych wraz z rzeczywistymi danymi, aby potwierdzić, że bity odebrane na drugim końcu są takie same, jak zostały wysłane. Jeśli sprawdzenie na końcu odbiornika nie powiedzie się, bity są uważane za uszkodzone.
Test zgodności
Jeden dodatkowy bit jest wysyłany wraz z oryginalnymi bitami, aby liczba 1 była parzysta w przypadku parzystości lub nieparzysta w przypadku nieparzystej parzystości.
Nadawca podczas tworzenia ramki zlicza zawarte w niej jedynki. Na przykład, jeśli używana jest parzystość, a liczba jedynek jest parzysta, to dodawany jest jeden bit o wartości 0. W ten sposób liczba jedynek pozostaje parzysta, jeśli liczba jedynek jest nieparzysta, dodaje się bit o wartości 1, aby była parzysta.
Odbiornik po prostu liczy jedynki w ramce. Jeśli liczba 1 jest parzysta i używana jest parzystość, ramka jest uważana za nieuszkodzoną i jest akceptowana. Jeśli liczba 1 jest nieparzysta i używana jest nieparzysta parzystość, ramka nadal nie jest uszkodzona.
Jeśli pojedynczy bit przerzuca się podczas przesyłania, odbiornik może go wykryć, zliczając 1s. Ale gdy więcej niż jeden bit jest błędny, odbiornikowi bardzo trudno jest wykryć błąd.
Cykliczna kontrola nadmiarowa (CRC)
CRC to inne podejście do wykrywania, czy odebrana ramka zawiera prawidłowe dane. Technika ta polega na binarnym dzieleniu wysyłanych bitów danych. Dzielnik jest generowany za pomocą wielomianów. Nadawca wykonuje operację dzielenia na wysyłanych bitach i oblicza pozostałą część. Przed wysłaniem rzeczywistych bitów nadawca dodaje resztę na końcu rzeczywistych bitów. Rzeczywiste bity danych plus reszta nazywane są słowem kodowym. Nadawca przesyła bity danych jako słowa kodowe.
Z drugiej strony odbiornik wykonuje operację dzielenia na słowach kodowych przy użyciu tego samego dzielnika CRC. Jeśli reszta zawiera wszystkie zera, bity danych są akceptowane, w przeciwnym razie uważa się, że podczas przesyłania wystąpiło pewne uszkodzenie danych.
Korekta błędów
W świecie cyfrowym korekcję błędów można przeprowadzić na dwa sposoby:
Backward Error Correction Gdy odbiorca wykryje błąd w odebranych danych, zwraca się do nadawcy o ponowne przesłanie jednostki danych.
Forward Error Correction Gdy odbiornik wykryje jakiś błąd w otrzymanych danych, wykonuje kod korygujący błędy, który pomaga mu w automatycznym odzyskiwaniu i korygowaniu niektórych rodzajów błędów.
Pierwsza z nich, Backward Error Correction, jest prosta i może być skutecznie stosowana tylko wtedy, gdy retransmisja nie jest droga. Na przykład światłowody. Ale w przypadku transmisji bezprzewodowej retransmisja może kosztować zbyt dużo. W tym drugim przypadku używana jest korekcja błędów do przodu.
Aby poprawić błąd w ramce danych, odbiornik musi dokładnie wiedzieć, który bit w ramce jest uszkodzony. Aby zlokalizować bit z błędem, zbędne bity są używane jako bity parzystości do wykrywania błędów.Na przykład, bierzemy słowa ASCII (dane 7-bitowe), wtedy może być 8 rodzajów informacji, których potrzebujemy: pierwsze siedem bitów, aby powiedzieć nam, który bit to błąd i jeszcze jeden bit, aby powiedzieć, że nie ma błędu.
Dla m bitów danych używa się r nadmiarowych bitów. r bitów może dostarczyć 2r kombinacji informacji. W słowie kodowym bitowym m + r istnieje możliwość, że same r bitów mogą zostać uszkodzone. Zatem liczba użytych bitów r musi informować o położeniu bitów m + r plus informacja o braku błędów, tj. M + r + 1.