Zßkladnφ formy p°enos∙
Zßkladnφ funkcφ ka₧dΘ poΦφtaΦovΘ sφt∞ je p°enos datov²ch signßl∙ od jednoho poΦφtaΦe ke druhΘmu. V poΦφtaΦov²ch sφtφch se m∙₧eme setkat s nejr∙zn∞jÜφmi formami p°enosu signßl∙, kterΘ mohou b²t navφc r∙zn²m zp∙sobem modulovßny a k≤dovßny. K p°enosu se mohou pou₧φvat p°enosovΘ kanßly r∙zn²ch vlastnostφ a charakteristik. ZaΦn∞me tedy prßv∞ mo₧n²mi formami p°enosu signßl∙.
Paralelnφ a sΘriov² p°enos (parallel and serial transmission).
P°i paralelnφm p°enosu jsou data p°enßÜena po vφce bitech najednou, typicky po cel²ch bytech. K tomu je ovÜem zapot°ebφ p°φsluÜn² poΦet soub∞₧n²ch (paralelnφch) vodiΦ∙, co₧ je ·nosnΘ jen na krßtkΘ vzdßlenosti (typicky 20 metr∙). S paralelnφm p°enosem se m∙₧eme setkat nejΦast∞ji p°i komunikaci mezi poΦφtaΦem a tiskßrnou vybavenou tzv. paralelnφm rozhranφm (standardnφ p°φpad); v oblasti poΦφtaΦov²ch sφtφ pak jen zcela v²jimeΦn∞ u n∞kter²ch experimentßlnφch lokßlnφch sφtφ.
P°i sΘriovΘm p°enosu jsou data p°enßÜena postupn∞ bit po bitu, nejni₧Üφm (p°esn∞ji nejmΘn∞ v²znamn²m) poΦφnaje. V drtivΘ v∞tÜin∞ sφtφ je p°enos dat sΘriov². NejmenÜφ polo₧ka dat p°enßÜenß sΘriov∞ je oznaΦovßna jako znak (character) a mß obvykle rozsah 7 nebo 8 bit∙. Znak vyjßd°en² p°φmo ve form∞ posloupnosti dvojkov²ch bit∙, kterΘ se skuteΦn∞ p°enßÜejφ, se pak oznaΦuje jako znaΦka.
SΘriov² asynchronnφ p°enos (serial asynchronous transmission)
P°i asynchronnφm sΘriovΘm p°enosu mohou b²t jednotlivΘ znaky (p°esn∞ji znaΦky) p°enßÜeny s libovoln²mi Φasov²mi odstupy mezi sebou. P°φjemce pak ovÜem nem∙₧e p°edem v∞d∞t, kdy zaΦφnß dalÜφ znak, a proto musφ b²t schopen jeho p°φchod podle vhodnΘho p°φznaku rozpoznat. Tφmto p°φznakem je tzv. start-bit (tΘ₧ rozb∞hov² prvek), kter²m zaΦφnß ka₧d² asynchronn∞ p°enßÜen² znak. P°φchod start-bitu je pro p°φjemce souΦasn∞ i mo₧nostφ sprßvn∞ si nastavit svΘ m∞°φtko Φasu (p°esn∞ji svou Φasovou zßkladnu). To je nutnΘ proto, aby p°φjemce sprßvn∞ urΦil ΦasovΘ okam₧iky, kdy mß vyhodnocovat stav jednotliv²ch datov²ch bit∙, kterΘ po start-bitu nßsledujφ.
Za vlastnφmi datov²mi bity m∙₧e nßsledovat jeden tzv. paritnφ bit (viz dßle) a koneΦn∞ tzv. stop-bit (tΘ₧ zßv∞rn² prvek), jeho₧ dΘlka obvykle odpovφdß dΘlce jednoho nebo dvou datov²ch bit∙. Stop-bit v sob∞ nenese ₧ßdnou informaci; jeho smyslem je pouze zajistit urΦit² minimßlnφ odstup mezi jednotliv²mi znaky - vyslßnφ nßsledujφcφho znaku m∙₧e zaΦφt nejd°φve po odvysφlßnφ celΘho p°edchozφho znaku, tedy vΦetn∞ jeho stop-bitu.
Asynchronnφmu zp∙sobu p°enosu se n∞kdy takΘ °φkß trochu nehezky start-stopnφ p°enos.
SΘriov² synchronnφ p°enos (serial synchronous transmission)
P°i synchronnφm p°enosu jsou obvykle p°enßÜeny celΘ bloky znak∙. DatovΘ bity jednotliv²ch znak∙ p°itom nßsledujφ t∞sn∞ po sob∞, bez jak²chkoli Φasov²ch odstup∙, a nejsou proklßdßny ₧ßdn²mi start- Φi stop-bity (mohou vÜak b²t dopln∞ny jednφm paritnφm bitem). ZaΦßtek bloku je indikovßn jednφm nebo n∞kolika specißlnφmi synchronizaΦnφmi znaky (tzv. znaky SYN), jejich₧ hlavnφm smyslem je zajistit pot°ebnou Φasovou synchronizaci odesilatele i p°φjemce - tzn. pomoci p°φjemci p°esn∞ stanovit ΦasovΘ okam₧iky, ve kter²ch mß vyhodnocovat jednotlivΘ datovΘ bity. Blok znak∙ je pak op∞t zakonΦen synchronizaΦnφmi znaky, kterΘ mohu (ale nemusφ) b²t nep°etr₧it∞ vysφlßny a₧ do zaΦßtku nßsledujφcφho datovΘho bloku.
Synchronnφ p°enos je obecn∞ rychlejÜφ ne₧ asynchronnφ, nebo¥ nenφ zatφ₧en re₧iφ p°ipadajφcφ na start- a stop-bity. Jeho technickß a programovß realizace vÜak b²vß pon∞kud slo₧it∞jÜφ ne₧ u p°enosu asynchronnφho.
Parita (parity)
P°i sΘriovΘm i paralelnφm p°enosu dat m∙₧e dochßzet k chybßm, jejich₧ d∙sledkem je p°ijetφ opaΦnΘ hodnoty jednoho Φi n∞kolika bit∙, ne₧ jakΘ byly p∙vodn∞ vyslßny. NejjednoduÜÜφm, ale souΦasn∞ takΘ nejmΘnn∞ ·Φinn²m zp∙sobem zabezpeΦenφ znaku (kter²m je umo₧n∞no nßsledn∞ rozpoznat v²skyt chyby) je dopln∞nφ datov²ch bit∙ jednφm dalÜφm bitem tak, aby celkov² poΦet jedniΦek ve znaku byl (p°i odesφlßnφ) lich² (pak jde o tzv. lichou paritu - odd parity), nebo naopak sud² (pak jde o tzv. sudou paritu - even parity). P°φjemce musφ v∞d∞t, zda mu odesilatel posφlß znaky se sudou, nebo lichou paritou.
Pokud poΦet jedniΦkov²ch bit∙ nesouhlasφ s oΦekßvanou paritou, m∙₧e si p°φjemce dovodit, ₧e doÜlo k chyb∞ p°i p°enosu jednoho (nebo t°φ, p∞ti, obecn∞ lichΘho poΦtu) bit∙. Mß-li p°ijat² znak oΦekßvanou paritu, nenφ to jeÜt∞ stoprocentnφ zßrukou jeho bezchybnosti - pomocφ jedinΘho paritnφho bitu nelze rozpoznat chyby v sudΘm poΦtu bit∙. ZabezpeΦenφ pomocφ jednoho paritnφho bitu je tedy vhodnΘ pou₧φvat jen tam, kde je pravd∞podobnost v²skytu chyb v jednotliv²ch bitech malß a pravd∞podobnost v²skytu chyb ve vφce bitech souΦasn∞ zanedbatelnß.
V praxi se lze setkat takΘ s tφm, ₧e se paritnφ bit nastavuje v₧dy na 0 (resp. v₧dy na 1) - v angliΦtin∞ se tomu °φkß space parity (resp. mark parity). Smysl je nap°. ten, ₧e odesilatel m∙₧e vysφlat sedmibitovΘ znaky dopln∞nΘ tφmto konstantnφm paritnφm bitem, kterΘ p°φjemce p°ijme jako osmibitovΘ znaky bez parity (Φφm₧ se ovÜem ztrßcφ mo₧nost detekovat p°enosovΘ chyby).
ZabezpeΦenφ dat p°i p°enosech
P°i p°enosech dat m∙₧e dochßzet k chybßm, a v jejich d∙sledku m∙₧e p°φjemce p°ijmout jinΘ znaky, ne₧ jakΘ mu odesilatel p∙vodn∞ vyslal. Jednφm mo₧n²m prost°edkem pro nßslednou detekci vznikl²ch chyb je p°idßnφ paritnφho bitu ke ka₧dΘmu p°enßÜenΘmu znaku (jak jsme si naznaΦili minul² t²den) - to je vÜak jen nejjednoduÜÜφ (a takΘ nejmΘn∞ ·Φinn²) p°φpad pou₧itφ tzv. bezpeΦnostnφch k≤d∙.
Zßkladnφ myÜlenka pou₧itφ bezpeΦnostnφch k≤d∙ je velmi jednoduchß - p∙vodnφ znaky se podle p°esn∞ definovan²ch pravidel transformujφ na znaky jinΘho typu (nap°. osmibitovΘ znaky se p°idßnφm jednoho paritnφho bitu p°evedou na devφtibitovΘ). Teprve ty se pak skuteΦn∞ p°enesou a p°φjemce si je p°evede zp∞t do jejich p∙vodnφho tvaru. N∞kterΘ znaky onoho "jinΘho typu" vÜak nemohou z p∙vodnφch znak∙ °ßdn²m zp∙sobem nikdy vzniknout (nap°. p°i pou₧φvßnφ lichΘ parity bychom nem∞li nikdy zφskat znak se sudou paritou). Pokud pak p°φjemce p°ijme takov² znak, kter² p°i dan²ch pravidlech transformace nemß ₧ßdn² "vzor", m∙₧e jej oprßvn∞n∞ pova₧ovat za chybn∞ p°enesen² znak.
BezpeΦnostnφ k≤dy jsou v zßsad∞ dvojφho typu, a to:
Pou₧itφ bezpeΦnostnφch k≤d∙ v₧dy znamenß, ₧e se v rßmci ka₧dΘho znaku ve skuteΦnosti p°enßÜφ vφce bit∙, ne₧ kolik by bylo k vyjßd°enφ vlastnφho znaku nezbytn∞ nutnΘ. ZabezpeΦenφ proti chybßm nenφ navφc nikdy stoprocentnφ, jeho ·Φinnost vÜak roste s poΦtem bit∙ "navφc". NejjednoduÜÜφ detekΦnφ k≤d (zabezpeΦenφ sudou nebo lichou paritou) p°idßvß k datov²m bit∙m jeden dalÜφ bit a dokß₧e detekovat chybu v jednom bitu. Samoopravn² k≤d, kter² umo₧≥uje nßslednou opravu chyby v jedinΘm bitu (tzv. rozÜφ°en² Hamming∙v k≤d), p°idßvß ke ka₧dΘmu 8-bitovΘmu bytu navφc p∞t bit∙ (resp. 6 bit∙ ke ka₧dΘmu 16-bitovΘmu slovu).
V praxi je v²hodn∞jÜφ nezabezpeΦovat proti chybßm jednotlivΘ znaky, ale celΘ posloupnosti znak∙ resp. celΘ p°enßÜenΘ bloky dat. DodateΦnΘ bity, pou₧φvanΘ k detekci chyb, se pak nep°idßvajφ znovu ke ka₧dΘmu znaku, ale jen jednou k celΘmu bloku dat (a p°enesou se spolu s nφm). Je-li pak chyba detekovßna, nelze ji v rßmci bloku lokalizovat a₧ na jednotlivΘ znaky. Mφsto toho musφ b²t cel² blok prohlßÜen za chybn² a p°enesen znovu. To ovÜem nemusφ b²t v∙bec na zßvadu - staΦφ si uv∞domit, ₧e p°enosy dat tΘm∞° v₧dy probφhajφ po cel²ch blocφch, a nejmenÜφ jednotkou dat, jejφ₧ opakovanΘ vyslßnφ si m∙₧e p°φjemce vy₧ßdat, je prßv∞ cel² blok a nikoli jednotlivΘ znaky.
PodΘlnß parita - longitudinal parity
ZabezpeΦenφ paritou je jednφm mo₧n²m zp∙sobem zabezpeΦenφ celΘho bloku dat, chßpanΘho jako posloupnost jednotliv²ch znak∙. Zde se nekontroluje sud² resp. lich² poΦet jedniΦkov²ch bit∙ v jednotliv²ch znacφch, ale sud² resp. lich² poΦet jedniΦkov²ch bit∙ ve stejnolehl²ch bitov²ch pozicφch vÜech znak∙ v bloku. Je-li tedy blok dat tvo°en nap°. osmibitov²mi znaky, p°idß se k celΘmu bloku osm paritnφch bit∙ (tedy vlastn∞ jeden znak navφc), a ka₧d² z nich se nastavφ tak, aby byla dodr₧ena sudß resp. lichß parita.
Pou₧itφ podΘlnΘ parity se n∞kdy kombinuje i se zabezpeΦenφm jednotliv²ch znak∙ pomocφ sudΘ resp. lichΘ parity, kterß se pak pro odliÜenφ od podΘlnΘ parity oznaΦuje jako p°φΦnß Φi znakovß parita (transversal, lateral parity)
Kontrolnφ souΦet - checksum
DalÜφ mo₧nostφ zabezpeΦenφ celΘho bloku dat je souΦet jednotliv²ch znak∙ v bloku, kterΘ jsou pro tento ·Φel chßpßny jako celß dvojkovß Φφsla bez znamΘnka. Kontrolnφ souΦet se typicky provßdφ jako souΦet modulo 28 nebo 216, tj. v²sledkem je kontrolnφ souΦet o dΘlce jednoho nebo dvou byt∙.
Kontrolnφ souΦet i podΘlnou paritu lze vyhodnocovat pr∙b∞₧n∞ p°i p°ijφmßnφ jednotliv²ch znak∙ bloku. V p°φpad∞ kontrolnφho souΦtu se ka₧d² nov∞ p°ijat² znak p°iΦφtß ke stßvajφcφmu mezisouΦtu, zatφmco v p°φpad∞ podΘlnΘ parity se provßdφ operace EX-OR (tj. nonekvivalence) jednotliv²ch bit∙ novΘho znaku se stßvajφcφm meziv²sledkem.
Nej·Φinn∞jÜφ formu zabezpeΦenφ bloku dat vÜak p°edstavuje pou₧itφ tzv. cyklick²ch k≤d∙ - CRC (Cyclic Redundancy Check). TakΘ zde se podobn∞ jako u v²poΦtu podΘlnΘ parity Φi kontrolnφho souΦtu pr∙b∞₧n∞ na zßklad∞ jednotliv²ch znak∙ bloku (p°esn∞ji jednotliv²ch bit∙ t∞chto znal∙) pr∙b∞₧n∞ vypoΦφtßvß zabezpeΦovacφ ·daj. Ten se na konci celΘho bloku porovnß se zabezpeΦovacφm ·dajem, kter² podle stejn²ch pravidel vypoΦφtal odesilatel a p°ipojil k odesφlanΘmu bloku dat. Pokud se oba ·daje shodujφ, lze p°enesen² blok s vysokou pravd∞podobnostφ pova₧ovat za sprßvn² - zabezpeΦenφ pomocφ ÜestnßctibitovΘho cyklickΘho k≤du toti₧ dokß₧e spolehliv∞ odhalit vÜechny chyby a₧ v Üestnßcti po sob∞ jdoucφch bitech, a chyby ve v∞tÜφm poΦtu bit∙ s p°esnostφ 99,9984 %.
Formßlnφ d∙kaz vynikajφcφ ·Φinnosti zabezpeΦenφ pomocφ cyklickΘho k≤du sice vy₧aduje dosti pokroΦil² matematick² aparßt, vlastnφ zp∙sob v²poΦtu zabezpeΦovacφho ·daje je vÜak a₧ neuv∞°iteln∞ jednoduch² (bohu₧el vÜak zde ji₧ nemßme pot°ebn² prostor k tomu, abychom tuto jednoduchost mohli pat°iΦn∞ "vychutnat"). StaΦφ k n∞mu jednoduch² posuvn² registr, umo₧≥ujφcφ provΘst operaci EX-OR (tj. nonekvivalenci jednotliv²ch bit∙) s pevn∞ danou maskou. Hodnota tΘto masky je jednoznaΦn∞ urΦena tzv. generujφcφm polynomem (generating polynomial), na kterΘm musφ b²t p°φjemce i odesilatel p°edem dohodnuti. Pou₧iteln²ch tvar∙ t∞chto polynom∙ je vφce; v oblasti komunikacφ se nejΦast∞ji pou₧φvß polynom x16 + x12 + x5 + 1, doporuΦen² organizacφ CCITT.