VyÜlo v t²denφku: COMPUTERWORLD
╚φslo:26/92
RoΦnφk:1992
Rubrika/kategorie: Co je Φφm ... v poΦφtaΦov²ch sφtφch
Dφl:37

zp∞t do archivu Φlßnk∙ | rejst°φk | p°edchozφ dφl | nßsledujφcφ dφl

Ji°φ Peterka: Co je Φφm ... v poΦφtaΦov²ch sφtφch (37)

PrezentaΦnφ vrstva

P∞t nejni₧Üφch vrstev referenΦnφho modelu ISO/OSI d∞lß vÜe pro to, aby p°enßÜenß data v₧dy dorazila ke svΘmu koncovΘmu p°φjemci p°esn∞ v takovΘ podob∞, v jakΘ byla vyslßna. Stejnß "podoba" vÜak jeÜt∞ nezaruΦuje, ₧e pro p°φjemce nebudou jedna a tatß₧ data p°edstavovat n∞co jinΘho, ne₧ pro jejich odesilatele.

Obavy z r∙znΘ interpretace p°enßÜen²ch dat nejsou zdaleka bezd∙vodnΘ. StaΦφ si uv∞domit, ₧e nap°. st°ediskovΘ poΦφtaΦe firmy IBM pou₧φvajφ pro k≤dovßnφ znak∙ k≤d EBCDIC, zatφmco drtivß v∞tÜina ostatnφch pou₧φvß ke stejnΘmu ·Φelu k≤d ASCII. Ke znßzorn∞nφ cel²ch Φφsel se znamΘnkem pou₧φvß v∞tÜina poΦφtaΦ∙ tzv. dvojkov² dopl≥kov² k≤d, ale nap°. poΦφtaΦe CDC Cyber pracujφ s tzv. jedniΦkov²m dopl≥kov²m k≤dem. Mikroprocesory 80x86 firmy Intel Φφslujφ jednotlivΘ byty (ve slovech, dvojslovech atd.) jednφm sm∞rem, zatφmco nap°φklad mikroprocesory °ady M68000 firmy Motorola Φφslujφ jednotlivΘ byty p°esn∞ opaΦn∞. Velmi ΦastΘ jsou pak takΘ odliÜnosti nap°φklad ve formßtu Φφsel v pohyblivΘ °ßdovΘ Φßrce, odliÜnΘ rozsahy zobraziteln²ch cel²ch Φφsel (danΘ poΦtem k tomu vyhrazen²ch bit∙) apod.

R∙znΘ poΦφtaΦe tedy v obecnΘm p°φpad∞ pou₧φvajφ r∙znΘ zp∙soby vnit°nφ reprezentace dat. Majφ-li si takovΘ poΦφtaΦe svß data korektnφm zp∙sobem vzßjemn∞ p°edßvat, musφ b²t vhodn²m zp∙sobem zajiÜt∞ny jejich nezbytnΘ konverze. A ty mß v referenΦnφm modelu ISO/OSI na starosti prßv∞ prezentaΦnφ vrstva (presentation layer).

PrezentaΦnφ vrstva se tedy starß o to, aby nap°φklad celΘ Φφslo bez znamΘnka s hodnotou 234 bylo p°ijato op∞t jako celΘ Φφslo bez znamΘnka s hodnotou 234, a ne nap°. jako celΘ Φφslo se znamΘnkem s hodnotou -22. Nenφ vÜak ji₧ ·kolem prezentaΦnφ vrstvy zab²vat se tφm, co toto Φφslo znamenß. Zda jde nap°. o poΦet osob, o Φφslo strßnky v knize, o procentußlnφ v²Üi inflace Φi n∞co docela jinΘho. To p°φsluÜφ a₧ vlastnφm aplikacφm, kterΘ jsou zdrojem resp. p°φjemcem t∞chto dat.

Obrßzek 37.1.
Obr. 37.1.: Mo₧nosti konverze
a/ typu "ka₧d² s ka₧d²m"
b/ se spoleΦn²m "mezitvarem"
Pro zajiÜt∞nφ nezbytn²ch konverzφ na ·rovni prezentaΦnφ vrstvy se nabφzφ dv∞ zßkladnφ mo₧nosti, kterΘ naznaΦuje obrßzek 37.1. Prvnφ z nich p°edstavuje vzßjemnΘ p°φmΘ p°izp∙sobenφ stylu "ka₧d² s ka₧d²m", p°i kterΘm jsou p°enßÜenß data konvertovßna jen jednou - jsou-li ovÜem k dispozici nezbytnΘ konverznφ rutiny pro libovolnou dvojici komunikujφcφch uzl∙. Ve druhΘm p°φpad∞ jsou p°enßÜenß data konvertovßna dvakrßt: ze tvaru, se kter²m pracuje odesilatel, jsou nejprve p°evedena do spoleΦnΘho "mezitvaru", a z n∞j pak do takovΘho tvaru, s jak²m pracuje jejich p°φjemce. Nev²hoda dvojφ konverze je zde kompenzovßna tφm, ₧e pro ka₧dou konkrΘtnφ reprezentaci dat, se kterou pracuje n∞jak² poΦφtaΦ, staΦφ jedinß konverznφ utilita pro jejich p°evod z/do spoleΦnΘho "mezitvaru".

ReferenΦnφ model ISO/OSI p°edpoklßdß prßv∞ tuto druhou variantu se spoleΦn²m mezitvarem. Podφvejme se proto na jejφ podstatu pon∞kud podrobn∞ji.

Cht∞jφ-li vzßjemn∞ spolupracovat dv∞ r∙znΘ sφ¥ovΘ aplikace, musφ se nejprve domluvit na spoleΦn²ch datov²ch strukturßch, kterΘ budou pou₧φvat - tedy nap°φklad na tom, ₧e datum budou reprezentovat jako zßznam (record) tvo°en² t°emi polo₧kami (DEN, MESIC a ROK), kterΘ jsou samy o sob∞ cel²mi Φφsly bez znamΘnka. Tyto datovΘ struktury je ovÜem nutnΘ vyjßd°it tak, aby jejich popis byl pro ob∞ strany srozumiteln², a ob∞ strany si jej takΘ stejn∞ vyklßdaly. Kdyby byly vÜechny sφ¥ovΘ aplikace psßny v jedinΘm vyÜÜφm programovacφm jazyku, staΦilo by pou₧φt prßv∞ tento jazyk. P°edpoklad pou₧itφ jedinΘho programovacφho jazyka vÜak nebyl, nenφ a z°ejm∞ nikdy nebude v praxi spln∞n, a tak bylo nutnΘ vytvo°it pro pot°eby formßlnφho popisu dat a datov²ch struktur zvlßÜtnφ jazyk, kter² byl nazvßn ASN.1 (Abstract Syntax Notation). Umo₧≥uje definovat jednotlivΘ datovΘ polo₧ky, stanovit jejich typ (tj. urΦit, zda jde nap°. o celΘ Φφslo se znamΘnkem, znakov² °et∞zec Φi logickou hodnotu apod.), p°id∞lit jim jmΘno (identifikßtor), a takΘ sestavit z jednoduch²ch datov²ch polo₧ek obecn∞jÜφ datovΘ struktury typu zßznam, pole, seznam, mno₧ina apod.

Obrßzek 37.2.
Obr. 37.2.: P°edstava fungovßnφ prezentaΦnφ vrstvy
Jazyk ASN.1, kter² vzdßlen∞ p°ipomφnß jazyk Pascal, je tedy jazykem pro formßlnφ popis dat - co₧ se v terminologii ISO/OSI modelu oznaΦuje jako abstraktnφ syntaxe (abstract syntax). Abstraktnφ proto, ₧e jeÜt∞ neurΦuje ₧ßdn² konkrΘtnφ zp∙sob reprezentace t∞chto dat. Pro pot°eby vlastnφho p°enosu je ale samoz°ejm∞ nutnΘ veÜkerß data vhodn²m zp∙sobem zak≤dovat. Zp∙sob k≤dovßnφ datov²ch struktur jazyka ASN.1 pro pot°eby jejich p°enosu pak urΦuje samostatnß norma organizace ISO (IS 8825). Formßt skuteΦn∞ p°enßÜen²ch dat se p°itom v terminologii ISO/OSI modelu oznaΦuje jako p°enosovß syntaxe (transfer syntax). Jejφ konkrΘtnφ tvar je zalo₧en na myÜlence, ₧e ka₧dß jednotlivß polo₧ka dat by m∞la b²t samoidentifikujφcφ, tedy m∞la by sebou nΘst i informaci o vlastnφm typu. Ka₧dß datovß polo₧ka proto mß p°i p°enosu t°i Φßsti, kterΘ po °ad∞ urΦujφ jejφ typ, dΘlku a vlastnφ obsah (viz obrßzek 37.2.).

Zp∙sob fungovßnφ prezentaΦnφ vrstvy nßzorn∞ ilustruje obrßzek 37.2. Kdykoli chce n∞jakß entita aplikaΦnφ vrstvy zaslat urΦitß data svΘ partnerskΘ entit∞ na jinΘm uzlovΘm poΦφtaΦi, p°edß "svΘ" prezentaΦnφ vrstv∞ jednak vlastnφ data, kterß si p°eje odeslat, a jednak jejich popis v jazyce ASN.1 (kter² definuje jejich abstraktnφ syntaxi). PrezentaΦnφ vrstva na zßklad∞ tohoto popisu dokß₧e sprßvn∞ interpretovat jednotlivΘ polo₧ky dat (urΦit mj. jejich typ a velikost), a na zßklad∞ toho je pak zak≤dovat do takovΘho tvaru, kter² je vhodn² pro p°enos, a kter² si sebou nese pot°ebnΘ informace o typu a formßtu p°enßÜen²ch dat (tj. p°evΘst je do p°enosovΘ syntaxe). PrezentaΦnφ vrstva na stran∞ p°φjemce pak dφky tomu dokß₧e sprßvn∞ urΦit typ a formßt p°ijat²ch dat, a v p°φpad∞ pot°eby provΘst nezbytnΘ konverze. Jestli₧e nap°φklad p°enosovß syntaxe poΦφtß s vyjßd°enφm cel²ch Φφsel se znamΘnkem ve dvojkovΘm dopl≥ku, ale p°φjemce pou₧φvß ke stejnΘmu ·Φelu jednotkov² dopln∞k, m∙₧e prezentaΦnφ vrstva p°φjemce provΘst nezbytnΘ konverze jeÜt∞ d°φve, ne₧ p°ijatß data p°edß svΘ bezprost°edn∞ vyÜÜφ (tj. aplikaΦnφ vrstv∞).

PrezentaΦnφ vrstvy p°φjemce a odesilatele se vÜak nejprve musφ shodnout na tom, jakΘ datovΘ struktury si vlastn∞ budou p°edßvat, a jakou budou pro n∞ pou₧φvat p°enosovou syntaxi. Proto se musφ ob∞ strany na zaΦßtku vzßjemnΘho spojenφ (p°esn∞ji: p°i zahajovßnφ relace) nejprve dohodnout na jednom nebo n∞kolika tzv. kontextech, jak se v terminologii ISO/OSI modelu naz²vß p°i°azenφ p°enosovΘ syntaxe k syntaxi abstraktnφ. V pr∙b∞hu relace se pak mohou mezi t∞mi kontexty, na kter²ch se oba dohodli, dokonce p°epφnat.

Obrßzek 37.3.
Obr. 37.3.: P°edstava p°ekladaΦe jazyka ASN.1
V souΦasnΘ dob∞ je praktickΘ pou₧φvßnφ jazyka ASN.1 znaΦn∞ usnadn∞no existencφ p°ekladaΦ∙ z tohoto jazyka do obvykl²ch vyÜÜφch programovacφch jazyk∙, nap°. do Pascalu Φi jazyka C. Jak nßzorn∞ ukazuje obrßzek 37.3., je vstupem tohoto p°ekladaΦe popis datov²ch struktur v jazyku ASN.1, a v²stupem jednak ekvivalentnφ popis v p°φsluÜnΘm cφlovΘm jazyku (tedy nap°. v C Φi v Pascalu), kter² pak lze p°ilinkovat ke zdrojovΘmu tvaru vlastnφ aplikace, a dßle takΘ k≤dovacφ a dek≤dovacφ rutiny (urΦenΘ pro pot°eby prezentaΦnφ vrstvy), kterΘ p°evßdφ datovΘ struktury z p°φsluÜnΘho cφlovΘho jazyka p°φmo do jejich p°enosovΘ syntaxe resp. obrßcen∞.

Hlavnφm ·kolem prezentaΦnφ vrstvy je tedy zajiÜt∞nφ nezbytn²ch konverzφ p°enßÜen²ch dat. Nenφ to ovÜem ·kol jedin² - na ·rovni prezentaΦnφ vrstvy m∙₧e b²t nap°φklad °eÜeno takΘ zabezpeΦenφ p°enßÜen²ch dat pomocφ Üifrovßnφ (encryption), kterΘ ovÜem lze realizovat i na ·rovni fyzickΘ nebo transportnφ vrstvy. Pro minimalizaci objemu p°enßÜen²ch dat pak m∙₧e b²t na ·rovni prezentaΦnφ vrstvy zajiÜ¥ovßna i jejich komprimace (compression).


zp∞t do archivu Φlßnk∙ | rejst°φk | p°edchozφ dφl | nßsledujφcφ dφl
Tento Φlßnek m∙₧e b²t voln∞ Üφ°en, pokud se tak d∞je pro studijnφ ·Φely, na nev²d∞leΦnΘm zßklad∞ a se zachovßnφm tohoto dov∞tku. Podrobnosti hledejte zde, resp. na adrese http://archiv.czech.net/copyleft.htm