Dnes je :
 

3/ Zabezpečenie dát pri prenosoch

Pri prenose dát môže dochádzať ku chybám, a v ich dôsledkov môže príjemca prijať iné znaky, ako mu odosielateľ pôvodne vyslať. Jedným možným prostriedkom pre následnú detekciu vzniknutých chýb je pridaný paritného bitu ku každému prenášanému znaku - to je však len najjednodukší a také najmenej účinný prípad použitia tzv. bezpečnostných kódu.
Základná myšlienka použitia bezpečnostných kódov je veľmi jednoduchá - pôvodné znaky sa podľa presne definovaných pravidiel transformujú na znaky iného typu (napr. osembitové znaky sa pridaním jedného paritného bitu prevedú na jedenasťbitové ty sa potom skutočne prenesú a príjemcovi si je prevedú späť do ich pôvodného tvaru. Niektoré znaky omnoho "iného typu" však nemôžu z pôvodných znaku riadnym spôsobom nikdy vzniknúť (napr. pri používaní liché parity aby nemali nikdy získať znak s druhou paritou). Pokiaľ sa príjemca prijme takýto znak, ktorý pri daných pravidlách transformace nemá žiadny "vzor", môže jej oprávnene považovať za chybné prenesený znak.
Bezpečnostní kódy sú v zásade dvojitého typu, a to:
detekční kódy - error-detection codes,
ktoré umožňuje len rozpoznať (detekovať), že prijatý znak je chybný, a
samoopravné kódy - self-correcting codes,
ktoré okrem detekcie chyby umožňuje i opravu chybne preneseného znaku, takže jej neni nutné prenášať znovu (co u detekčného kódu obecne nutné je).
Použití bezpečnostných kódu vždy znamená, že sa v rámci každého znaku v skutočnosti prenáša viac bitov, než koľko by bolo k vyjadrení vlastného znaku nezbytne nutné. Zabezpečení proti chybám neni naviac nikdy stopercentný, jeho účinnosti však rastie s počtom bitov "naviac". Nejjednodukší detekční kód pridáva k dátovým bitov jeden ďalší bit a dokáže detekovať chybu v jednom bitu. Samoopravný kód, ktorý umožňuje následnou opravu chyby v jedinom bitu (tzv. rozšírený Hammingov kód), pridáva kú každému 8-bitovému bytu naviac päť bitov (resp. 6 bitov ku každému 16-bitovému slovu).
V praxi je výhodnejší nezabezpečovať proti chybám jednotlivé znaky, ale celé postupnosti znakov resp. celé prenášané bloky dát. Dodatočné bity, používané k detekcii chyb, s nepridávajú znovu ku každému znaku, ale jen jednou k celému bloku dát (a prenesú sa spolu s ním). Ale ak je chyba detekovaná, nejde ju v rámci bloku lokalizovať až na jednotlivé znaky. Miesto toho musí byť celý blok prehlásený za chybný a prenesený znovu. To však nemusí byť vôbec na závadu - stačí si uvedomiť, že prenosy dát takmer vždy prebiehajú po celých blokoch, a najmenší jednotkou dát, ale ak opakované vyslaní si môže príjemca vyžiadať, je práve celý blok a niektoré jednotlivé znaky.
Podelená parita - longitudinal parity
je jedným možným spôsobom zabezpečení celého bloku dát, chápaného ako postupnosť jednotlivých znakov. Tu sa nekontroluje sudy resp. lichý počet jednotkových bitú v jednotlivých znakoch, ale sudy resp. lichý počet jednotkové bity v rovnakoležiacich bitových pozíciách všetkých znakov v bloku (viď obr. 3.1). Ak je teda blok dát tvorený napr. osembitové znaky, pridá sa k celému bloku osem paritných bitov (teda vlastne jeden znak naviac), a každý z nich sa nastaví tak, aby bola dodržaná suda resp. lichá
parita.
Použitie podelenej parity sa nikdy kombinuje i s zabezpečením jednotlivých znakov pomocov sude resp. liché parity, ktorá s len pre odlišní od podelenej parity označuje ako priečna či znaková parita (transversal, lateral parity).

Kontrolní súčet - checksum.
Ďalší možností zabezpečení celého bloku dát je súčet jednotlivých znakov v bloku, ktoré sú pre tento účel chápané ako celá dvojkové čísla bez znamienka. Kontrolní súčet s typicky prevádzaný ako súčet modul 28 nebo 216, tj. výsledkom je kontrolní súčet o dĺžke jedného nebo dvoch bytu.
Kontrolní súčet i podelenej paritu ide vyhodnocovať priebežne pri prijímaní jednotlivých znakov bloku. V prípade kontrolného súčtu s každý novo prijatý znak pripočíta ku stávajúcemu medzisúčtu, zatím čo v prípade podelenej parity s prevádza operace EX-OR (tj. nonekvivalence) jednotlivých bitu nového znaku sa stavajúcim medzivýsledkom.
Najúčinnejší formu zabezpečení bloku dát však predstavuje použití tzv.
cyklických kódu - CRC (Cyclic Redundancy Check).
Tak tu s podobne ako u výpočtu podelenej parity či kontrolného súčtu priebežne na základe jednotlivých znaku bloku (presnejšie jednotlivých bitov týchto znalo) priebežne vypočítava zabezpečovací údaj. Ten s na konci celého bloku porovná s zabezpečovacím údajom, ktorý podľa rovnakých pravidiel vypočítal odosielateľ a pripojil k odosielanému bloku dát. Pokuť sa oba údaje zhodujú, ide prenesený blok s vysokou pravdepodobností považovať za správny - zabezpečení pomoci šestnácťbitového cyklického kódu totiž dokáže spoľahlivo odhaliť všetky chyby až v šestnásti po sebe idúcich bitoch, a chyby vo väčším počtu bitú s presností 99,9984 %.
Formálni dôkaz vynikajúcich účinnosti zabezpečení pomoci cyklického kódu síce vyžaduje dosť pokročilý matematický aparát, vlastní spôsob výpočtu zabezpečovacieho údaju je však až neuveriteľne jednoduchý (bohužiaľ však tu skôr nemáme potrebný priestor k tomu, aby túto jednoduchosť mohli patrične "vychutnať"). Stačí k nemu jednoduchý posuvný register, umožňujúci previesť operaci EX-OR (tj. nonekvivalenci jednotlivých bitú) s pevne danou maskou. Hodnota tejto masky je jednoznačne určená tzv. generujúcim polynomem (generating polynomial), na ktorom musí byť príjemca i odosielateľ predom dohodnutí. Použiteľných tvarov týchto polynomov je viacej; v oblasti komunikácii s najčastejšie
používa polynom x16 + x12 + x5 + 1, doporučený organizácií CCITT.


 

 

 
Copyright © 2003 Blško