ReferenΦnφ model ISO/OSI - jeho vznik

V sedmdesßt²ch letech se zaΦφnajφ objevovat prvnφ v²znamn∞jÜφ rozlehlΘ poΦφtaΦovΘ sφt∞. Vedle experimentßlnφch sφtφ (jako nap°. ARPANET a CYCLADES), to byly p°edevÜφm sφt∞, budovanΘ podle vlastnφch koncepcφ p°ednφch v²robc∙ poΦφtaΦ∙ (nap°. sφt∞ SNA firmy IBM, DNA firmy DEC). Zatφmco experimentßlnφ sφt∞ byly od zaΦßtku heterogennφ a p°φmo tedy poΦφtaly se zapojovßnφm poΦφtaΦ∙ r∙zn²ch typ∙ od r∙zn²ch v²robc∙, mo₧nost zapojenφ do ostatnφch sφtφ byla vßzßna na vlastnictvφ produkt∙ p°φsluÜnΘho v²robce, kter² si v rßmci vlastnφ sφ¥ovΘ architektury vytvß°el svΘ specifickΘ konvence a protokoly.

Nenφ proto divu, ₧e zßhy vyvstala nalΘhavß pot°eba jednotnΘho standardu pro vzßjemnΘ propojovßnφ poΦφtaΦov²ch systΘm∙ r∙zn²ch typ∙ a koncepcφ, pochßzejφcφch od r∙zn²ch v²robc∙. Pot°ebu vytvo°enφ takovΘhoto standardu si brzy uv∞domila i mezinßrodnφ organizace ISO, kterß se v roce 1977 rozhodla p°evzφt tento ·kol na svß bedra.

Vytvo°ila si k tomu novou podkomisi (SC16) v rßmci svΘ technickΘ komise pro zpracovßnφ dat (TC97, viz 21. Kapitola), a tu pov∞°ila p°φpravou novΘho standardu. Ten takΘ ji₧ dostal prvnφ pracovnφ nßzev: Open Systems Architecture (tj. architektura otev°en²ch systΘm∙). P°φvlastek "otev°en²" (open) zde m∞l zd∙raznit, ₧e systΘm, vyhovujφcφ zam²ÜlenΘmu standardu, bude p°ipraven pro vzßjemnΘ propojenφ se vÜemi ostatnφmi systΘmy na celΘm sv∞t∞, kterΘ budou vyhovovat tΘmu₧ standardu.

Prvnφ pracovnφ sch∙zka podskupiny SC16 se konala v b°eznu 1978. VÜichni z·Φastn∞nφ se rychle shodli na vrstvovΘ koncepci, kterß nejen dokß₧e vyhov∞t vÜem stßvajφcφm nßrok∙m na vzßjemnΘ propojovßnφ otev°en²ch systΘm∙, ale je schopnß i pozd∞jÜφho rozÜi°ovßnφ tak, aby mohla vyhov∞t i budoucφm po₧adavk∙m. Podskupina SC 16 se proto zaΦala okam₧it∞ zab²vat otßzkou, kolik vrstev bude nejvhodn∞jÜφ uva₧ovat, a jakΘ ·koly t∞mto vrstvßm sv∞°it. Pro pot°eby svΘho rozhodovßnφ si podskupina SC16 zformulovala celkem 13 princip∙, kterΘ se pak sna₧ila aplikovat.

 

Lze je shrnout do nßsledujφcφch myÜlenek:

 

V²sledkem aplikace t∞chto princip∙ bylo vymezenφ sedmi vrstev a specifikace ·kol∙, kterΘ by tyto vrstvy m∞ly zajiÜ¥ovat. (Podrobn∞ji se jim budeme zab²vat v dalÜφch pokraΦovßnφch)

JeÜt∞ v pr∙b∞hu prßce na p°ipravovanΘm standardu zm∞nila podskupina SC16 i jeho pracovnφ nßzev, z Open Systems Architecture na Open Systems Interconnection Architecture, doslova tedy: architektura vzßjemnΘho propojovßnφ otev°en²ch systΘm∙. D∙vodem byla z°ejm∞ skuteΦnost, ₧e se celß prßce skupiny zam∞°ila pouze na otßzky propojovßnφ a "vn∞jÜφho chovßnφ" vzßjemn∞ propojen²ch systΘm∙, a nijak ne°eÜila to, jak majφ tyto systΘmy fungovat "uvnit°".

Vlastnφ nßvrh standardu byl dokonΦen za necel²ch 18 m∞sφc∙. V Φervenci roku 1979 byl p°edßn jako koncept nßvrhu (draft proposal) nad°φzenΘ technickΘ komisi TC97, kterß jej koncem roku 1979 p°ijala za zßklad pro dalÜφ v²voj navazujφcφch standard∙ pro vzßjemnΘ propojovßnφ otev°en²ch systΘm∙ v rßmci organizace ISO.

Na poslednφ chvφli vÜak byl jeÜt∞ jednou zm∞n∞n slovnφ nßzev standardu - z blφ₧e neznßm²ch d∙vod∙ bylo vypuÜt∞no slovo Architecture, a naopak byla p°idßna dv∞ novß slova: Reference Model neboli referenΦnφ model. Ta majφ zd∙raznit, ₧e cel² standard nenφ jednφm konkrΘtnφm nßvrhem zp∙sobu, jak °eÜit vzßjemnΘ propojovßnφ, ale spφÜe spoleΦn²m rßmcem Φi vzorem (referenΦnφm modelem), podle kterΘho by m∞lo b²t vzßjemnΘ propojovßnφ systΘm∙ °eÜeno.

Sprßvn² nßzev celΘho standardu je tedy: Reference Model of Open Systems Interconnection (ReferenΦnφ model propojovßnφ otev°en²ch systΘm∙), a jako norma ISO mß Φφslo 7498. V praxi se obvykle oznaΦuje zkratkou RM OSI nebo jen ISO/OSI, co₧ souΦasn∞ zd∙raz≥uje jeho vztah k organizaci ISO (byl vÜak souΦasn∞ p°evzat i organizacφ CCITT jako jejφ standard X.200).

Zd∙razn∞me si znovu, ₧e souΦßstφ referenΦnφho modelu ISO/OSI je skuteΦn∞ pouze vymezenφ jednotliv²ch vrstev a spefifikace ·kol∙, kterΘ by tyto vrstvy m∞ly °eÜit. ReferenΦnφ model nespecifikuje ₧ßdnΘ konkrΘtnφ protokoly, pomocφ kter²ch by funkce jednotliv²ch vrstev m∞ly b²t realizovßny. Nedefinuje dokonce ani p°esnΘ rozhranφ mezi jednotliv²mi vrstvami - tedy konkrΘtnφ slu₧by, kterΘ vrstvy bezprost°edn∞ ni₧Üφ poskytujφ bezprost°edn∞ vyÜÜφm vrstvßm.

Protokoly a slu₧by pro jednotlivΘ vrstvy vznikaly a₧ dodateΦn∞, a to jako samostatnΘ standardy (resp. normy) ISO, nebo jako p°evzatΘ standardy jin²ch organizacφ (nap°. CCITT Φi IEEE). Jeliko₧ organizace ISO striktn∞ rozliÜuje mezi protokolem a slu₧bou (na rozdφl od ostatnφch standardizaΦnφch organizacφ, jako nap°. CCITT, kterΘ takovΘto rozliÜovßnφ nepou₧φvajφ), vznikaly p∙vodnφ standardy ISO v₧dy ve dvojicφch - jeden standard pro protokol, a druh² pro slu₧by, poskytovanΘ prost°ednictvφm tohoto protokolu. Postupn∞ tak vznikaly resp. stßle vznikajφ Φi jsou p°ejφmßny protokoly, definujφcφ mo₧nΘ zp∙soby fungovßnφ jednotliv²ch vrstev ISO/OSI modelu.

 

ReferenΦnφ model ISO/OSI - sedm vrstev

Jak jsme si uvedli v p°edchßzejφcφm dφlu naÜeho serißlu, dosp∞li tv∙rci referenΦnφho modelu ISO/OSI p°i sv²ch ·vahßch k zßv∞ru, ₧e optimßlnφ poΦet vrstev sφ¥ovΘho softwaru bude sedm. JakΘ vrstvy to jsou a jakΘ ·koly majφ °eÜit? Vezm∞me to postupn∞ zdola nahoru, od nejni₧Üφ vrstvy k nejvyÜÜφ:

1. Fyzickß vrstva (Physical Layer)

┌kol tΘto vrstvy je zdßnliv∞ velmi jednoduch² - zajistit p°enos jednotliv²ch bit∙ mezi p°φjemcem a odesilatelem prost°ednictvφm fyzickΘ p°enosovΘ cesty, kterou tato vrstva bezprost°edn∞ ovlßdß. K tomu je ovÜem t°eba vy°eÜit mnoho otßzek p°evß₧n∞ technickΘho charakteru - nap°. jakou ·rovnφ nap∞tφ bude reprezentovßna logickß jedniΦka a jakou logickß nula, jak dlouho "trvß" jeden bit, kolik kontakt∙ a jak² tvar majφ mφt konektory kabel∙, jakΘ signßly jsou t∞mito kabely p°enßÜeny, jak² je jejich v²znam, Φasov² pr∙b∞h apod. Problematika fyzickΘ vrstvy proto spadß spφÜe do p∙sobnosti elektroin₧en²r∙ a technik∙.

2. Linkovß vrstva (Data Link Layer)

Fyzickß vrstva poskytuje jako svΘ slu₧by prost°edky pro p°enos jednotliv²ch bit∙. Bezprost°edn∞ vyÜÜφ linkovß vrstva (n∞kdy naz²vanß tΘ₧: spojovß vrstva Φi vrstva datovΘho spoje) pak mß za ·kol zajistit pomocφ t∞chto slu₧eb bezchybn² p°enos cel²ch blok∙ dat (velikosti °ßdov∞ stovek byt∙), oznaΦovan²ch jako rßmce (frames). Jeliko₧ fyzickß vrstva nijak neinterpretuje jednotlivΘ p°enßÜenΘ bity, je na linkovΘ vrstv∞, aby sprßvn∞ rozpoznala zaΦßtek a konec rßmce, i jeho jednotlivΘ Φßsti.

Na p°enosovΘ cest∞ m∙₧e dochßzet k nejr∙zn∞jÜφm poruchßm a ruÜenφ, v jejich₧ d∙sledku jsou p°ijaty jinΘ hodnoty bit∙, ne₧ jakΘ byly p∙vodn∞ vyslßny. Jeliko₧ fyzickß vrstva se nezab²vß v²znamem jednotliv²ch bit∙, rozpoznß tento druh chyb a₧ linkovß vrstva. Ta kontroluje celΘ rßmce, zda byly p°eneseny sprßvn∞ (podle r∙zn²ch kontrolnφch souΦt∙, viz 3. dφl naÜeho serißlu). Odesilateli potvrzuje p°ijetφ bezchybn∞ p°enesen²ch rßmc∙, zatφmco v p°φpad∞ poÜkozen²ch rßmc∙ si vy₧ßdß jejich op∞tovnΘ vyslßnφ.

3. Sφ¥ovß vrstva (Network Layer)

Linkovß vrstva zajiÜ¥uje p°enos cel²ch rßmc∙, ovÜem pouze mezi dv∞ma uzly, mezi kter²mi vede p°φmΘ spojenφ. Co ale d∞lat, kdy₧ spojenφ mezi p°φjemcem a odesilatelem nenφ p°φmΘ, ale vede p°es jeden Φi vφce mezilehl²ch uzl∙? Pak musφ nastoupit sφ¥ovß vrstva, kterß zajistφ pot°ebnΘ sm∞rovßnφ (routing) p°enßÜen²ch rßmc∙, oznaΦovan²ch nynφ ji₧ jako pakety (packets). Sφ¥ovß vrstva tedy zajiÜ¥uje volbu vhodnΘ trasy resp. cesty (route) p°es mezilehlΘ uzly, a takΘ postupnΘ p°edßvßnφ jednotliv²ch paket∙ po tΘto trase od p∙vodnφho odesilatele a₧ ke koneΦnΘmu p°φjemci.

Sφ¥ovß vrstva si tedy musφ "uv∞domovat" konkrΘtnφ topologii sφt∞ (tj. zp∙sob vzßjemnΘho p°φmΘho propojenφ jednotliv²ch uzl∙).

4. Transportnφ vrstva (Transport Layer)

Sφ¥ovß vrstva poskytuje bezprost°edn∞ vyÜÜφ vrstv∞ slu₧by, zajiÜ¥ujφcφ p°enos paket∙ mezi libovoln²mi dv∞ma uzly sφt∞. Transportnφ vrstvu proto zcela odsti≥uje od skuteΦnΘ topologie sφt∞ a vytvß°φ jφ tak iluzi, ₧e ka₧d² uzel sφt∞ mß p°φmΘ spojenφ s kter²mkoli jin²m uzlem sφt∞.

Transportnφ vrstv∞ dφky tomu staΦφ zab²vat se ji₧ jen komunikacφ koncov²ch ·Φastnφk∙ (tzv. end-to-end komunikacφ) - tedy komunikacφ mezi p∙vodnφm odesilatelem a koneΦn²m p°φjemcem.

P°i odesφlßnφ dat zajiÜ¥uje transportnφ vrstva sestavovßnφ jednotliv²ch paket∙, do kter²ch rozd∞luje p°enßÜenß data, a p°i p°φjmu je zase z paket∙ vyjφmß a sklßdß do p∙vodnφho tvaru. Dokß₧e tak zajistit p°enos libovoln∞ velk²ch zprßv, p°esto₧e jednotlivΘ pakety majφ omezenou velikost.

5. RelaΦnφ vrstva (Session Layer)

┌kolem tΘto vrstvy je navazovßnφ, udr₧ovßnφ a ruÜenφ relacφ (sessions) mezi koncov²mi ·Φastnφky. V rßmci navazovßnφ relace si tato vrstva vy₧ßdß na transportnφ vrstv∞ vytvo°enφ spojenφ, prost°ednictvφm kterΘho pak probφhß komunikace mezi ob∞ma ·Φastnφky relace. Pokud je t°eba tuto komunikaci n∞jak °φdit (nap°. urΦovat, kdo mß kdy vysφlat, nemohou-li to d∞lat oba ·Φastnφci souΦasn∞), zajiÜ¥uje to prßv∞ tato vrstva, kterß mß takΘ na starosti vÜe, co je pot°eba k ukonΦenφ relace a zruÜenφ existujφcφho spojenφ.

6. PrezentaΦnφ vrstva (Presentation Layer)

Data, kterß se prost°ednictvφm sφt∞ p°enßÜφ, mohou mφt mj. povahu text∙, Φφsel Φi obecn∞jÜφch datov²ch struktur. JednotlivΘ uzlovΘ poΦφtaΦe vÜak mohou pou₧φvat odliÜnou vnit°nφ reprezentaci t∞chto dat - nap°. st°ediskovΘ poΦφtaΦe firmy IBM pou₧φvajφ znakov² k≤d EBCDIC, zatφmco v∞tÜina ostatnφch pracuje s k≤dem ASCII. Podobn∞ jeden poΦφtaΦ m∙₧e zobrazovat celß Φφsla v dopl≥kovΘm k≤du, zatφmco jin² poΦφtaΦ v p°φmΘm k≤du apod. - pot°ebnΘ konverze p°enßÜen²ch dat mß na starosti prßv∞ tato prezentaΦnφ vrstva.

V rßmci tΘto vrstvy b²vß takΘ realizovßna p°φpadnß komprese p°enßÜen²ch dat, eventußln∞ i jejich Üifrovßnφ.

7. AplikaΦnφ vrstva (Application Layer)

Koncovφ u₧ivatelΘ vyu₧φvajφ poΦφtaΦovΘ sφt∞ prost°ednictvφm nejr∙zn∞jÜφch sφ¥ov²ch aplikacφ - systΘm∙ elektronickΘ poÜty, p°enosu soubor∙, vzdßlenΘho p°ihlaÜovßnφ (remote login) apod. ZaΦle≥ovat vÜechny tyto r∙znorodΘ aplikace p°φmo do aplikaΦnφ vrstvy by pro jejich velkou r∙znorodost nebylo rozumnΘ. Proto se do aplikaΦnφ vrstvy zahrnujφ jen Φßsti t∞chto aplikacφ, kterΘ realizujφ spoleΦnΘ resp. obecn∞ pou₧itelnΘ mechanismy. Uva₧ujme jako p°φklad prßv∞ elektronickou poÜtu - ta jejφ Φßst, kterß zajiÜ¥uje vlastnφ p°edßvßnφ zprßv v sφti, je souΦßstφ aplikaΦnφ vrstvy. Na vÜech uzlov²ch poΦφtaΦφch, kterΘ pou₧φvajφ tent²₧ systΘm elektronickΘ poÜty, je tato Φßst stejnß. U₧ivatelskΘ rozhranφ systΘmu elektronickΘ poÜty, tedy ta jeho Φßst, se kterou u₧ivatel bezprost°edn∞ pracuje a jejφm₧ prost°ednictvφm Φte doÜlΘ zprßvy, odpovφdß na n∞, p°ipravuje novΘ zprßvy a zadßvß je k odeslßnφ, ji₧ nenφ pova₧ovßna za souΦßst aplikaΦnφ vrstvy, nebo¥ se m∙₧e v ka₧dΘm konkrΘtnφm uzlu dosti v²razn∞ liÜit - nap°. ve zp∙sobu svΘho ovlßdßnφ (°ßdkov²mi p°φkazy Φi pomocφ r∙zn²ch menu, s okΘnky Φi bez nich apod.). Jin²m nßzorn²m p°φkladem m∙₧e b²t emulace terminßl∙, pot°ebnß nap°. pro vzdßlenΘ p°ihlaÜovßnφ (remote login). Ve sv∞t∞ dnes existuje nep°ebernΘ mno₧stvφ r∙zn²ch terminßl∙, a realizovat pot°ebnΘ p°izp∙sobenφ mezi libovoln²mi dv∞ma typy terminßl∙ je v podstat∞ nemo₧nΘ. Proto se zavßdφ jedin² "referenΦnφ" terminßl - tzv. virtußlnφ terminßl - a pro ka₧d² konkrΘtnφ typ terminßlu se pak vytvo°φ jen jedinΘ p°izp∙sobenφ mezi tφmto virtußlnφm terminßlem a terminßlem skuteΦn²m. Prost°edky pro prßci s virtußlnφm terminßlem p°itom jsou souΦßstφ aplikaΦnφ vrstvy (nebo¥ jsou vÜude stejnΘ), zatφmco prost°edky pro jeho p°izp∙sobenφ konkrΘtnφmu terminßlu ji₧ souΦßstφ aplikaΦnφ vrstvy nejsou.

 

ReferenΦnφ model ISO/OSI - p°enos dat

Ve 22. kapitole jsme si naznaΦili zßkladnφ myÜlenku, na kterΘ je zalo₧ena funkce vÜech vrstvov²ch model∙: ₧e ka₧dß vrstva vyu₧φvß slu₧eb vrstvy bezprost°edn∞ ni₧Üφ, a sama nabφzφ svΘ slu₧by vrstv∞ bezprost°edn∞ vyÜÜφ. Up°esn∞me si nynφ tuto obecnou p°edstavu prßv∞ na p°φkladu referenΦnφho modelu ISO/OSI a jeho terminologie a uka₧me si, jak se projevuje p°i p°enosu dat.

Ten, kdo v urΦitΘ vrstv∞ ISO/OSI modelu n∞co aktivnφho vykonßvß, je oznaΦovßn jako entita (entity). B²vß to nejΦast∞ji objekt programovΘ povahy (nap°. urΦit² proces), v nejni₧Üφch vrstvßch to vÜak m∙₧e b²t i hardwarov² celek (nap°. V/V °adiΦ apod.). Na ·rovni aplikaΦnφ vrstvy jde o aplikaΦnφ entity (application entities), na ·rovni prezentaΦnφ vrstvy o prezentaΦnφ entity (presentation entities) atd. Entity na stejnΘ ·rovni, resp. ve stejnolehl²ch vrstvßch se v angliΦtin∞ oznaΦujφ p°φvlastkem peer (tj. jako peer entities).

Entity ve vrstv∞ N implementujφ slu₧by, kterΘ jsou vyu₧φvßny vrstvou N+1, resp. entitami tΘto vrstvy. Vrstva N zde tedy vystupuje jako poskytovatel slu₧by (service provider), zatφmco vrstva N+1 je v roli u₧ivatele slu₧by (service user). Vrstva N je vÜak souΦasn∞ i v roli u₧ivatele slu₧eb v∙Φi vrstv∞ N-1, nebo¥ vyu₧φvß jejφ slu₧by.

Bezprost°ednφmi poskytovateli a u₧ivateli slu₧eb vÜak nejsou vrstvy jako takovΘ, ale jejich entity. Ka₧dß entita, kterß chce n∞jakΘ slu₧by vyu₧φvat, vÜak musφ v∞d∞t, kam se mß pro n∞ obrßtit. Musφ tedy existovat jednoznaΦn∞ identifikovatelnß mφsta v rßmci rozhranφ mezi jednotliv²mi vrstvami, jejich₧ prost°ednictvφm jsou slu₧by poskytovßny, resp. vyu₧φvßny. V terminologii ISO/OSI modelu se tato mφsta naz²vajφ body poskytovßnφ slu₧by (Service Access Points, zkratkou SAP) a jsou opat°ena jednoznaΦn²mi adresami. Pro snazÜφ p°edstavu je dobrΘ vyu₧φt analogii s telefonnφ sφtφ: bod poskytovßnφ slu₧by neboli SAP je analogiφ zßsuvky b∞₧nΘ telefonnφ p°φpojky, do kterΘ lze zapojit telefonnφ p°φstroj (odpovφdajφcφ entit∞ vrstvy N+1). Chceme-li se pak dovolat na tento telefonnφ p°φstroj (poskytnout slu₧bu entit∞ vrstvy N+1), musφme znßt p°φsluÜnΘ telefonnφ Φφslo (adresu bodu SAP).

Ka₧d² bod SAP slou₧φ v₧dy vzßjemnΘ komunikaci prßv∞ dvou entit ze sousednφch vrstev. Nem∙₧e b²t tedy sdφlen vφce entitami. Ka₧dß entita vÜak m∙₧e poskytovat svΘ slu₧by vφce entitßm prost°ednictvφm vφce bod∙ SAP a stejn∞ tak ka₧dß entita m∙₧e vyu₧φvat slu₧by vφce r∙zn²ch entit p°es vφce bod∙ SAP.

Ka₧dß entita, kterß chce vyu₧φvat slu₧bu jinΘ entity bezprost°edn∞ ni₧Üφ vrstvy, musφ znßt nejen pot°ebn² bod SAP, p°es kter² je jφ tato slu₧ba nabφzena, ale musφ takΘ znßt p°esn² zp∙sob volßnφ p°φsluÜnΘ slu₧by. Ten je samoz°ejm∞ pro r∙znΘ slu₧by r∙zn², v₧dy vÜak vy₧aduje, aby volajφcφ p°edal volanΘmu urΦit² objem °φdicφch informacφ, kterΘ jeho po₧adavek specifikujφ. V terminologii ISO/OSI modelu je tato °φdicφ informace oznaΦovßna jako Interface Control Information (ICI). SouΦßstφ po₧adavku pak b²vajφ jeÜt∞ r∙znß "u₧iteΦnß" data, oznaΦovanß jako Service Data Unit (SDU). Volajφcφ entita tedy v obecnΘm p°φpad∞ p°edßvß volanΘ entit∞ p°es p°φsluÜn² bod SAP na rozhranφ mezi nimi dv∞ skupiny informacφ (tj. ICI a SDU), kterΘ dohromady tvo°φ tzv. datovou jednotku rozhranφ (Interface Data Unit, zkratkou IDU).

Entita, kterß je poskytovatelem slu₧by a kterß je p°φjemcem jednotky IDU, si p°evezme °φdicφ informace obsa₧enΘ v IDU (tj. Φßst ICI). Z nφ se dozvφ, co je od nφ po₧adovßno, a podle toho dßle nalo₧φ s datovou Φßstφ (Φßsti SDU).

Jednφm z nejΦast∞jÜφch po₧adavk∙ entity ve vrstv∞ N+1 je ₧ßdost o p°enos dat stejnolehlΘ entit∞ (tj. entit∞ vrstvy N+1) na jinΘm uzlovΘm poΦφtaΦi. Entita vrstvy N, kterß je o tuto slu₧bu po₧ßdßna, nalezne p°φsluÜnß data v Φßsti SDU p°ijatΘ jednotky IDU a sna₧φ se je p°edat svΘ partnerskΘ entit∞ na p°φsluÜnΘm uzlovΘm poΦφtaΦi. S touto stejnolehlou entitou komunikuje podle urΦitΘho protokolu.

Tento protokol mimo jinΘ urΦuje, jak velkΘ "kusy" dat si mohou ob∞ vrstvy posφlat a jak²mi dodateΦn²mi informacemi °φdicφ povahy musφ b²t tato u₧itaΦnß data dopln∞na. Odesφlacφ entita vrstvy N proto rozd∞lφ data z jednotky SDU na tak velkΘ Φßsti, jakΘ jφ protokol umo₧≥uje p°enßÜet a p°ipojφ k nim pot°ebnΘ °φdicφ informace. Tφm vznikß tzv. protokolßrnφ datovß jednotka (PDU, Protocol Data Unit), tvo°enß krom∞ u₧iteΦn²ch dat (tj. slo₧ky SDU) takΘ slo₧kou PCI (Protocol Control Information), kter² obsahuje informace °φdicφ povahy, p°edepsanΘ pou₧it²m p°enosov²m protokolem.

PartnerskΘ entity stejnolehl²ch vrstev si tedy vzßjemn∞ zasφlajφ jednotky PDU (ve form∞ zprßv, paket∙, resp. rßmc∙). Ve skuteΦnosti to ale doopravdy d∞lajφ jen entity fyzickΘ vrstvy, pro kterΘ jsou cel²mi jednotkami PDU jednotlivΘ bity, a kterΘ jsou schopnΘ si je navzßjem skuteΦn∞ p°edßvat. VÜechny ostatnφ (tj. vyÜÜφ) vrstvy si jednotky PDU vym∞≥ujφ prost°ednictvφm entit bezprost°edn∞ ni₧Üφch vrstev - p°i odesφlßnφ se z celΘ jednotky PDU stßvajφ "u₧iteΦnß" data (slo₧ka SDU). K nim se p°idß pot°ebnß °φdicφ informace (slo₧ka ICI) a tφm vznikß datovß jednotka rozhranφ (jednotka IDU), kterß je p°es bod SAP p°edßna entit∞ bezprost°edn∞ ni₧Üφ vrstvy ... a vÜe se opakuje a₧ do ·rovn∞ fyzickΘ vrstvy.

Ka₧dß vrstva na stran∞ odesilatele v zßvislosti na pou₧itΘm protokolu p°idßvß k u₧iteΦn²m dat∙m (jednotkßm SDU) svΘ °φdicφ informace (slo₧ky PCI) - obvykle ve form∞ hlaviΦky, kterou si pak stejnolehlß partnerskß vrstva na stran∞ p°φjemce zase odebφrß.

 

ReferenΦnφ model ISO/OSI - druhy slu₧eb

Na referenΦnφm modelu ISO/OSI se siln∞ projevila skuteΦnost, ₧e p°i jeho koncipovßnφ m∞li hlavnφ slovo lidΘ spφÜe "od spoj∙", ne₧ "od poΦφtaΦ∙". Cel² model je toti₧ prodchnut spoja°skou mentalitou a pohledem na sv∞t, co₧ se projevilo nap°φklad ve v²hradnφ podpo°e tzv. spojovan²ch slu₧eb na ·kor slu₧eb nespojovan²ch, a v p°edstav∞ o zp∙sobu realizace t∞chto slu₧eb.

Slu₧by, kterΘ poskytujφ vrstvy r∙zn²ch ·rovnφ, mohou mφt charakter spojovan²ch Φi nespojovan²ch slu₧eb. Spojovanß slu₧ba (Connection-oriented Service) pracuje na obdobnΘm principu, jako telefonnφ systΘm. Chcete-li s n∞k²m hovo°it po telefonu, musφte nejprve vytoΦit jeho Φφslo, a on musφ na vaÜe volßnφ odpov∞d∞t zvednutφm telefonu. Tφm mezi vßmi vznikß spojenφ, prost°ednictvφm kterΘho spolu komunikujete, a kterΘ na konci hovoru zanikß (polo₧enφm sluchßtka). Analogicky je tomu i v p°φpad∞ dvou entit na stejn²ch ·rovnφch, kterΘ spolu cht∞jφ komunikovat - nejprve musφ b²t mezi nimi navßzßno spojenφ. Jakmile je toto spojenφ navßzßno, chovß se v jistΘm smyslu jako roura - vysφlajφcφ do nφ na jednΘ stran∞ vklßdß to, co si p°eje odeslat, a p°φjemce si to na druhΘ stran∞ ve stejnΘm po°adφ odebφrß.

Nespojovanou slu₧bu (Connectionless Service) lze naopak p°irovnat k b∞₧nΘ listovnφ poÜt∞. Ta nepoΦφtß se z°φzenφm spojenφ mezi odesilatele a p°φjemcem, ale mφsto toho pova₧uje jednotlivΘ Φßsti p°enßÜen²ch dat (zprßvy) za samostatnΘ celky, opat°enΘ adresou svΘho koneΦnΘho p°φjemce, a doruΦuje je nezßvisle na ostatnφch zprßvßch. JednotlivΘ zprßvy tedy mohou b²t v principu p°enßÜeny r∙zn²mi cestami, tak₧e se m∙₧e i stßt, ₧e p°i p°φjmu nebude zachovßno jejich sprßvnΘ po°adφ - co₧ se u spojovanΘ slu₧by stßt nem∙₧e.

Spojovan² (connection-oriented) charakter majφ jak telefonnφ sφt∞, tak i nap°. v∞tÜina ve°ejn²ch datov²ch sφtφ a jin²ch telekomunikaΦnφch systΘm∙, zatφmco nap°. v lokßlnφch sφtφch majφ p°enosy obvykle nespojovan² (connectionless) charakter. P∙vodnφ verze referenΦnφho modelu ISO/OSI vÜak poΦφtala pouze se spojovan²mi (connection-oriented) slu₧bami a protokoly, a zavedenφ nespojovan²ch bylo provedeno a₧ dodateΦn∞.

SpojovanΘ slu₧by jsou v obecnΘm p°φpad∞ v²hodn∞jÜφ pro p°enos v∞tÜφch objem∙ dat. Majφ sice v∞tÜφ jednorßzovou poΦßteΦnφ re₧ii (na navßzßnφ spojenφ), ale na druhΘ stran∞ vykazujφ menÜφ re₧ii na vlastnφ p°enos dat. Naopak nespojovanΘ slu₧by nemajφ prakticky ₧ßdnou jednorßzovou re₧ii, majφ vÜak relativn∞ vyÜÜφ re₧ii na vlastnφ p°enos jednotliv²ch Φßstφ p°enßÜen²ch dat. Jsou proto naopak v²hodn∞jÜφ pro p°enos menÜφch objem∙ dat (tj. kratÜφch zprßv).

Je dobrΘ si uv∞domit, ₧e spojovan² resp. nespojovan² charakter mohou mφt slu₧by vÜech vrstev od aplikaΦnφ po linkovou (zatφmco na ·rovni fyzickΘ vrstvy ji₧ rozliÜovßnφ mezi ob∞ma variantami ztrßcφ smysl). V 16. Kapitole, ve kterΘ jsme se zab²vali ve°ejn²mi datov²mi sφt∞mi, jsme si ukazovali p°φklady takov²chto slu₧eb na ·rovni sφ¥ovΘ vrstvy - p°epojovßnφ okruh∙ a virtußlnφch okruh∙ (kterΘ majφ spojovan² charakter) a datagramovΘ slu₧by (kterß mß nespojovan² charakter). V dalÜφch pokraΦovßnφch naÜeho serißlu si ukß₧eme, ₧e slu₧by spojovanΘho a nespojovanΘho charakteru existujφ mj. i na ·rovni transportnφ vrstvy, a ₧e nap°. nespojovanß transportnφ slu₧ba m∙₧e b²t implementovßna prost°ednictvφm slu₧by sφ¥ovΘ vrstvy, kterß mß naopak spojovan² charakter.

Krom∞ rozd∞lovßnφ slu₧eb na spojovanΘ a nespojovanΘ je mo₧nΘ i jinΘ rozd∞lenφ - na spolehlivΘ a nespolehlivΘ.

Spolehlivß slu₧ba (Reliable Service) je takovß, kterß nikdy neztrßcφ ₧ßdnß data. Obvykle je tato slu₧ba realizovßna prost°ednictvφm vhodnΘho mechanismu potvrzovßnφ (kdy p°φjemce potvrzuje ·sp∞ÜnΘ p°ijetφ resp. znovu ₧ßdß o vyslßnφ dat, kterΘ byly p°ijaty chybn∞). S tφm je ovÜem spojena urΦitß re₧ie, kterß nemusφ b²t v₧dy ₧ßdoucφ - p°edstavme si nap°. p°enos digitalizovanΘho zvuku. Zde je jist∞ v²hodn∞jÜφ rad∞ji obΦas p°ijmout chybnß data (tj. pon∞kud zkreslen² zvuk), ne₧ p°ipustit v²padky, zp∙sobovanΘ potvrzovßnφm resp. opakovan²m p°enosem chybn∞ p°ijat²ch dat.

Proto majφ svΘ opodstatn∞nφ i nespolehlivΘ slu₧by (Unreliable Services), co₧ je ovÜem pon∞kud zavßd∞jφcφ oznaΦenφ - je vhodnΘ chßpat je spφÜe jako slu₧by, kterΘ majφ vysokou mφru spolehlivosti, neposkytujφ vÜak stoprocentnφ zßruku ·sp∞Ünosti p°enosu. Jeliko₧ ale nepou₧φvajφ mechanismy potvrzovßnφ (spojenΘ s urΦitou re₧iφ), mohou b²t rychlejÜφ ne₧ obdobnΘ "spolehlivΘ" slu₧by.

Prakticky jedin²m mo₧n²m zp∙sobem, jak zajistit spolehlivou slu₧bu, je vhodn² mechanismus potvrzovßnφ. D∞lenφ slu₧eb na potrvzovanΘ (confirmed) a nepotvrzovanΘ (unconfirmed) proto obvykle spl²vß s jejich d∞lenφm na "spolehlivΘ" resp. "nespolehlivΘ".

Jak jsme si ji₧ uvedli d°φve, samotn² referenΦnφ model ISO/OSI neobsahuje p°esnΘ vymezenφ slu₧eb, kterΘ jednotlivΘ vrstvy poskytujφ vrstvßm bezprost°edn∞ nad°φzen²m. Zavßdφ pouze dosti obecnou p°edstavu o tom, jak²m zp∙sobem by m∞lo b²t zprost°edkovßno vyu₧itφ t∞chto slu₧eb na rozhranφ mezi jednotliv²mi vrstvami - prost°ednictvφm Φty° druh∙ tzv. slu₧ebnφch primitiv (service primitives). Ty je mo₧nΘ si p°edstavit jako po₧adavky na provedenφ urΦit²ch konkrΘtnφch akcφ, nebo naopak jako signalizaci urΦit²ch situacφ, hodn²ch z°etele.

Uva₧ujme jako p°φklad potvrzovanou slu₧bu, nap°. z°φzenφ spojenφ mezi dv∞ma partnersk²mi entitami stejnolehl²ch vrstev. Poskytovatelem slu₧by je entita bezprost°edn∞ ni₧Üφ vrstvy, kterΘ musφ ₧adatel o z°φzenφ spojenφ p°edat svou ₧ßdost ve form∞ primitiva typu po₧adavek (request). Entit∞, se kterou mß b²t spojenφ navßzßno, se po₧adavek projevφ jako indikace (indication), kterß je dalÜφm typem slu₧ebnφho primitiva. Jde-li o slu₧bu potvrzovanou, nßsleduje odezva (response), kterß pak vyvolß potvrzenφ (confirmation).

Zamysleme se ale jeÜt∞ jednou nad tφm, co vlastn∞ jsou ona pon∞kud vßgnφ "slu₧ebnφ primitiva", a to z pohledu programovΘ realizace jednotliv²ch slu₧eb. Jsou slu₧ebnφ primitiva procedury, kterΘ vyÜÜφ vrstva volß a bezprost°edn∞ ni₧Üφ vrstva vykonßvß? V p°φpad∞ "po₧adavku" a "odezvy" je to asi p°edstava dosti vhodnß, co ale v p°φpad∞ "indikace" a "potvrzenφ", kterΘ majφ p°φjemce upozornit na urΦitou skuteΦnost, a kterou sßm nemusφ v∙bec oΦekßvat? Zde ji₧ p°edstava explicitn∞ volanΘ procedury selhßvß. Vhodn∞jÜφ by byla spφÜe p°edstava asynchronnφho p°eruÜenφ p°φjemce, co₧ ale jen velmi mßlo vyhovuje dneÜnφm vyÜÜφm programovacφm jazyk∙m a je zcela ve sporu se vÜemi zßsadami strukturovanΘho programovßnφ. Z Φist∞ spoja°skΘho pohledu na sv∞t je to ale p°edstava velmi p°irozenß - nap°. obyΦejn² telefon v d∙sledku "indikace" zaΦne vesele zvonit.

 

Fyzickß vrstva

Jak jsme si uvedli ji₧ d°φve, ·kol fyzickΘ vrstvy v rßmci referenΦnφho modelu ISO/OSI je zdßnliv∞ velmi jednoduch² - zajistit p°enos jednotliv²ch bit∙ mezi p°φjemcem a odesilatelem.

V p°edchozφch dφlech naÜeho serißlu jsme si takΘ naznaΦili, ₧e mo₧n²ch prost°edk∙ pro vlastnφ p°enos dat je celß °ada - od nejr∙zn∞jÜφch kabel∙, telefonnφch okruh∙, p°es ve°ejnΘ datovΘ sφt∞ a₧ nap°. po satelitnφ spoje - a ₧e tyto se vφce Φi mΘn∞ liÜφ ve zp∙sobu p°enosu, dosa₧iteln²ch p°enosov²ch rychlostech, zp∙sobu ovlßdßnφ i v dalÜφch aspektech. Je prßv∞ ·kolem fyzickΘ vrstvy, aby se p°izp∙sobila konkrΘtnφm p°enosov²m prost°edk∙m, vytvo°ila pot°ebnΘ rozhranφ pro jejich p°ipojenφ k uzlovΘmu poΦφtaΦi sφt∞, a prost°ednictvφm tohoto rozhranφ je takΘ ovlßdala.

FyzickΘ vrstvy se proto t²kajφ standardy, kterΘ definujφ elektrickΘ, mechanickΘ, funkΦnφ a procedurßlnφ vlastnosti rozhranφ pro p°ipojenφ r∙zn²ch p°enosov²ch prost°edk∙ a za°φzenφ (tj. kabel∙, modem∙ apod.) - tedy elektrickΘ parametry p°enßÜen²ch signßl∙, jejich v²znam a Φasov² pr∙b∞h, vzßjemnΘ nßvaznosti °φdφcφch a stavov²ch signßl∙, zapojenφ konektor∙, a mnoho dalÜφch parametr∙ technickΘho i procedurßlnφho charakteru. ┌kolem entit fyzickΘ vrstvy je pak na zßklad∞ t∞chto standard∙ obsluhovat p°enosovΘ prost°edky, p°ipojenΘ k p°φsluÜn²m rozhranφm, a jejich prost°ednictvφm zajiÜ¥ovat p°enosy jednotliv²ch bit∙.

Zp∙sob p°ipojovßnφ modem∙ k poΦφtaΦ∙m a terminßl∙m definuje standard RS-232-C (Recommended Standard no. 232, revision C), pochßzejφcφ od americkΘ standardizaΦnφ organizace EIA (viz 22. dφl naÜeho serißlu). Ten vymezuje p°esnΘ rozhranφ mezi dv∞ma druhy za°φzenφ, kterΘ se v terminologii tohoto standardu oznaΦujφ jako DTE (Data Terminal Equipment, v p°ekladu: KZD neboli KoncovΘ Za°φzenφ p°enosu Dat), a DCE (Data Circuit-Terminating Equipment, v p°ekladu: UZD neboli UkonΦujφcφ Za°φzenφ DatovΘho okruhu - viz 8. dφl naÜeho serißlu). Za°φzenφm DTE je nap°. poΦφtaΦ nebo terminßl, zatφmco za°φzenφm DCE je modem. Standard RS-232-C definuje nejen poΦet a znam jednotliv²ch signßl∙ rozhranφ mezi za°φzenφmi DTE-DCE, zapojenφ konektor∙, ale takΘ elektrickΘ parametry p°enßÜen²ch signßl∙ (mj. nap∞¥ovΘ ·rovn∞, kterΘ vyjad°ujφ jednotlivΘ stavy t∞chto signßl∙). Prakticky shodn² standard resp. doporuΦenφ s oznaΦenφ V.24 pochßzφ od organizace CCITT (liÜφ se jen v n∞kolika mßlo z°φdka pou₧φvan²ch signßlech). DoporuΦenφ V.24 vÜak na rozdφl od standardu RS-232-C nedefinuje p°esnΘ elektrickΘ parametry p°enßÜen²ch signßl∙ (v terminologii doporuΦenφ V.24: obvod∙) - ty specifikuje a₧ dopl≥kovΘ doporuΦenφ V.28.

AΦkoli byly oba tyto prakticky ekvivalentnφ standardy vyvinuty prßv∞ pro p°ipojovßnφ modem∙ k poΦφtaΦ∙m a terminßl∙, pou₧φvajφ se dnes i k jin²m ·Φel∙m, nap°. pro p°ipojovßnφ tiskßren Φi jin²ch periferiφ (se sΘriov²m rozhranφm) k poΦφtaΦ∙m, a takΘ ke vzßjemnΘmu propojovßnφ poΦφtaΦ∙ (tj. k propojovßnφ dvou za°φzenφ DTE). V naÜem serißlu se budeme ob∞ma t∞mito standardy jeÜt∞ zab²vat podrobn∞ji.

Nev²hodou standard∙ RS-232-C a V.24 (+ V.28) je maximßlnφ dosah p°ibli₧n∞ 15 metr∙, a maximßlnφ p°enosovß rychlost do 20 kbit/sekundu. V∞tÜφho dosahu a vyÜÜφch p°enosov²ch rychlostφ lze obecn∞ dosßhnout jen s elektrick²mi signßly jin²ch parametr∙. Proto byly vytvo°eny dalÜφ standardy (doporuΦenφ CCITT) V.10 a V.11, kterΘ jsou alternativou k doporuΦenφ V.28 (tj. definujφ prßv∞ a pouze elektrickΘ parametry p°enßÜen²ch signßl∙). P°edpoklßdajφ pou₧itφ v²konn∞jÜφch budiΦ∙ a p°ijφmaΦ∙ (po °ad∞ nesymetrick²ch resp. symetrick²ch, tj. takov²ch, kterΘ p°enßÜen² logick² signßl vyjad°ujφ nap∞tφm mezi jednφm signßlov²m vodiΦem a zemφ, resp. rozdφlem nap∞tφ mezi dv∞ma signßlov²mi vodiΦi), a umo₧≥ujφ dosahovat p°enosovΘ rychlosti a₧ 10 Mbit/sekundu. DoporuΦenφ V.10 a V.11 majφ svΘ ekvivalenty v doporuΦenφch CCITT X.26 resp. X.27, a takΘ v doporuΦenφch EIA (konkrΘtn∞ RS-423-A resp. RS-422-A).

Standard RS-232-C je ji₧ pom∞rn∞ starΘho data (byl poprvΘ publikovßn v roce 1969). Koncem 70. let se jej organizace EIA rozhodla nahradit nov∞jÜφm standardem RS-449. Ten zavßdφ n∞kterΘ novΘ signßly (p°edevÜφm pro pot°eby testovßnφ) a p°edpoklßdß pou₧itφ jin²ch konektor∙, na rozdφl od svΘho p°edch∙dce vÜak ji₧ nedefinuje elektrickΘ charakteristiky p°enßÜen²ch signßl∙ - pro n∞ p°ejφmß standardy RS-423-A a RS-422-A.

Nov² standard RS-449 se vÜak p°es velkou snahu organizace EIA v praxi neujal (z°ejm∞ pro p°φliÜnou komplikovanost oproti svΘmu p°edch∙dci). Proto EIA poΦßtkem roku 1987 p°iÜla s novou verzφ (revizφ D) standardu RS-232, nynφ tedy s oznaΦenφ RS-232-D, kterß oproti verzi RS-232-C p°idßvß dva novΘ signßly (pro testovßnφ modem∙).

Zp∙sob p°ipojovßnφ poΦφtaΦ∙ k digitßlnφm okruh∙m a k ve°ejn²m datov²m sφtφm definuje doporuΦenφ X.21 CCITT z roku 1976. To sice zasahuje a₧ do sφ¥ovΘ vrstvy (nebo¥ obsahuje popis °φzenφ Φinnosti v sφti s p°epojovßnφm okruh∙), na ·rovni fyzickΘ vrstvy vÜak definuje poΦet a v²znam p°enßÜen²ch signßl∙ i zapojenφ konektor∙. Nedefinuje vÜak ji₧ elektrickΘ vlastnosti p°enßÜen²ch signßl∙ - k tomuto ·Φelu p°ejφmß doporuΦenφ V.10/X.26 a V.11/X.27. Krom∞ doporuΦenφ X.21 existuje i alternativnφ doporuΦenφ X.21(bis), kterΘ je podmno₧inou standard∙ RS-232-C/V.24, definuje zp∙sob p°ipojovßnφ k analogov²m p°enosov²m sφtφm, a je zam²Üleno jako doΦasn² standard pro dobu, kdy digitßlnφ sφt∞ jeÜt∞ nejsou vÜeobecn∞ rozÜφ°enΘ.

Fyzickou vrstvu pokr²vajφ takΘ standardy °ady 802, pochßzejφcφ od sdru₧enφ IEEE, kterΘ jsou urΦenΘ pro lokßlnφ sφt∞ (a my se jimi samoz°ejm∞ budeme zab²vat podrobn∞ji). Nejzajφmav∞jÜφ je z tohoto pohledu z°ejm∞ standard IEEE 802.3 pro sb∞rnicovΘ lokßlnφ sφt∞ s p°φstupovou metodou CSMA/CD (oznaΦovanΘ pon∞kud nep°esn∞ jako sφt∞ typu Ethernet). Tento standard toti₧ ve svΘ p∙vodnφ verzi (z roku 1985) p°edpoklßdal pouze pou₧itφ tzv. tlustΘho koaxißlnφho kabelu (Thick Ethernet, viz 19. dφl naÜeho serißlu). Pom∞rn∞ brzy vÜak bylo p°ijato n∞kolik dopl≥k∙ standardu IEEE 802.3, kterΘ umo₧nily vyu₧φt i jinß p°enosovß mΘdia - od tzv. tenkΘho Ethernetu, p°es koaxißlnφ kabel s p°enosem v p°elo₧enΘm pßsmu, a₧ po b∞₧nou kroucenou dvoulinku a optickß vlßkna. JednotlivΘ dopl≥kovΘ standardy (vΦetn∞ p∙vodnφho) pak dostaly i v²sti₧nß oznaΦenφ, kterß shrnuje tabulka 28.2. Obdobn² v²voj, jako u IEEE 802.3, lze pozorovat i u ostatnφm standard∙ °ady 802.

Vlastnφ specifickΘ °eÜenφ na ·rovni fyzickΘ vrstvy vy₧adujφ takΘ n∞kterΘ nov∞jÜφ p°enosovΘ technologie a prost°edky. Fyzickou vrstvu proto pokr²vajφ i standardy resp. doporuΦenφ, kterΘ pou₧itφ t∞chto prost°edk∙ resp. technologiφ definujφ, nap°φklad:

- pro optickΘ p°enosy doporuΦenφ ISO 9314, kterΘ definujestandard FDDI (Fiber Distributed Data Interface),

- pro sφt∞ ISDN doporuΦenφ CCITT I.430, (kterΘ se t²kß v²hradn∞ fyzickΘ vrstvy)

 

Linkovß vrstva - I.

Fyzickß vrstva ISO/OSI modelu zajiÜ¥uje p°enos jednotliv²ch bit∙ mezi dv∞ma uzlov²mi poΦφtaΦi, mezi kter²mi existuje p°φmΘ spojenφ (tj. vhodn² komunikaΦnφ kanßl resp. okruh). Linkovß vrstva pak vyu₧φvß t∞chto prost°edk∙ pro p°enos v∞tÜφch blok∙ dat, oznaΦovan²ch jako rßmce (frames), a p°enos t∞chto rßmc∙ pak sama nabφzφ jako svou slu₧bu bezprost°edn∞ vyÜÜφ vrstv∞ - vrstv∞ sφ¥ovΘ.

Fyzickß vrstva vÜak nijak nerozliÜuje jednotlivΘ bity, kterΘ p°enßÜφ. Je proto na linkovΘ vrstv∞, aby sama zajistila jejich sprßvnou interpretaci - aby dokßzala rozpoznat, kterΘ bity resp. skupiny bit∙ p°edstavujφ °φdφcφ informace (nap°. signalizujφ zaΦßtek Φi konec bloku, udßvajφ jeho dΘlku apod.), a kterΘ bity p°edstavujφ vlastnφ "u₧iteΦnß" data.

V p°φpad∞ asynchronnφho p°enosu - viz 1. kapitola naÜeho serißlu - jsou p°enßÜenß data Φlen∞na na znaky (stejn∞ velkΘ skupiny bit∙). Tyto jsou pak pro pot°eby p°enosu "obaleny" tzv. start a stop bity, kterΘ p°φjemci umo₧≥ujφ sprßvn∞ rozpoznat zaΦßtek a konec znaku. Pot°ebujeme-li pak p°enßÜet data, tvo°enß posloupnostmi b∞₧n²ch (tj. tisknuteln²ch) ASCII znak∙, je nejjednoduÜÜφ metodou vlo₧it cel² blok znak∙ mezi dvojici specißlnφch (tj. netisknuteln²ch znak∙): STX (Start of TeXt, zaΦßtek textu) a ETX (End of TeXt, konec textu), kterΘ jsou pro svou funkci oznaΦovßny jako °φdφcφ znaky p°enosu (transmission control characters). Tφm se dosßhne pot°ebnΘ synchronizace na ·rovni rßmc∙ (frame synchronization), nebo¥ znaky STX a ETX umo₧≥ujφ p°φjemci sprßvn∞ rozpoznat zaΦßtek a konec rßmce (zatφmco jednotlivΘ znaky rßmce rozpoznßvß p°i asynchronnφm p°enosu dφky zmφn∞n²m start a stop bit∙m) .

Prßv∞ naznaΦen² zp∙sob ovÜem nelze pou₧φt v p°φpad∞, kdy pot°ebujeme p°enΘst (jako data) i n∞kterΘ °φdφcφ znaky, nebo v p°φpad∞, kdy mφsto znak∙ p°enßÜφme obecnß binßrnφ data. Ta sice m∙₧eme rozd∞lit na stejn∞ velkΘ skupiny bit∙ a chßpat je jako k≤dy jednotliv²ch znak∙, stßle se nßm vÜak m∙₧e stßt, ₧e nßm takto vyjde prßv∞ n∞kter² ze zmφn∞n²ch °φdφcφch znak∙. Pak je nutnΘ zajistit tzv. transparenci dat (data transparency), tedy umo₧nit, aby mezi p°enßÜen²mi daty mohly b²t i °φdφcφ znaky, a tyto nebyly interpretovßny jako °φdφcφ, ale jako "u₧iteΦnß" data. Pou₧φvß se k tomu technika tzv. vklßdßnφ znak∙ (character stuffing), kdy je p°ed °φdφcφ znaky STX a ETX vlo₧en jeÜt∞ jin² °φdφcφ znak - znak DLE (Data Link Escape, zm∞na v²znamu nßsledujφcφho znaku). Ten se ovÜem m∙₧e vyskytovat i mezi vlastnφmi daty, a proto se zde ka₧d² jeho v²skyt zdvojuje. P°φjemce se pak v₧dy po p°ijetφ znaku DLE rozhoduje podle nßsledujφcφho znaku - je-li jφm dalÜφ znak DLE, jednoduÜe jej vypustφ (a p°ijme p°edchozφ znak DLE jako "u₧iteΦnß" data). Je-li naopak dalÜφm znakem znak ETX, p°φjemce si z toho odvodφ, ₧e se dostal na konec bloku .

Jednou z nev²hod asynchronnφho zp∙sobu p°enosu je vklßdßnφ nezbytn²ch start a stop bit∙, Φφm₧ se dosti podstatn∞ sni₧uje efektivnφ p°enosovß rychlost. Pro vyÜÜφ p°enosovΘ rychlosti se proto pou₧φvß spφÜe p°enos synchronnφ (viz 1. kapitola).

Synchronnφ p°enos si lze p°edstavit jako spojit² proud bit∙ (bez start a stop bit∙), ve kterΘm p°φjemce musφ sprßvn∞ rozpoznßvat hranice mezi jednotliv²mi znaky (co₧ p°edstavuje synchronizaci na ·rovni znak∙, character synchronization). TΘ se dosahuje pomocφ specißlnφch znak∙ SYN (viz op∞t 1.kapitola), kterΘ uvozujφ ka₧d² synchronn∞ p°enßÜen² blok znak∙.

Synchronizace na ·rovni rßmc∙ (tj. sprßvnΘ rozpoznßnφ zaΦßtku a konce rßmce) se p°i synchronnφm p°enosu m∙₧e dosahovat stejn∞, jako p°i p°enosu asynchronnφm - pomocφ °φdφcφch znak∙ p°enosu. Pak jde o tzv. znakov∞ orientovan² p°enos (character-oriented transmission).

Vklßdßnφ cel²ch °φdφcφch znak∙ do p°enßÜen²ch dat a jejich nezbytnΘ zdvojovßnφ p°i p°enosu binßrnφch dat ale op∞t p°inßÜφ snφ₧enφ efektivnφ p°enosovΘ rychlosti. Proto se dnes stßle vφce uplat≥uje bitov∞ orientovan² p°enos (bit-oriented transmission). Je zalo₧en na myÜlence indikovat zaΦßtek a konec rßmc∙ nikoli °φdφcφm znakem, ale skupinou bit∙. OznaΦenφ "bitov∞ orientovan²" p°itom zd∙raz≥uje skuteΦnost, ₧e p°enßÜenß data jsou vyhodnocovßna bit po bitu, dokud nenφ nalezena hledanß skupina bit∙, indikujφcφ zaΦßtek rßmce resp. jeho konec. PoΦet bit∙, kterΘ tvo°φ vlastnφ obsah rßmce, pak nemusφ nutn∞ b²t nßsobkem osmi.

Jednou z mo₧nostφ pro bitov∞ orientovan² p°enos je pou₧φt stejnou skupinu bit∙, tzv. k°φdlovou znaΦku (flag) pro uvozenφ i zakonΦenφ rßmce. Tato k°φdlovß znaΦka se pak ovÜem nesmφ vyskytovat "uvnit°" vlastnφho rßmce. Obvykle je k°φdlovß znaΦka tvo°ena posloupnostφ "01111110", a pot°ebnß transparence dat se zajiÜ¥uje vklßdßnφm bit∙ (bit stuffing), p°i kterΘm je za ka₧d²ch p∞t po sob∞ jdoucφch jedniΦkov²ch datov²ch bit∙ automaticky vlo₧en jeden nulov² bit (kter² p°φjemce zase automaticky odstra≥uje) .

DalÜφ mo₧nostφ je uvozenφ celΘho rßmce (po tzv. preambuli neboli synchronizaΦnφm poli) tzv. p°φznakem zaΦßtku rßmce (start-of-frame delimiter), za kter²m nßsleduje hlaviΦka (header) p°edem stanovenΘho formßtu, a ·daj o dΘlce rßmce. Tato varianta se pou₧φvß p°edevÜφm u lokßlnφch sφtφ.

Podle pou₧φvanΘho zp∙sobu p°enosu lze protokoly, pou₧φvanΘ na ·rovni linkovΘ vrstvy ISO/OSI modelu, rozd∞lit do dvou velk²ch skupin: na znakov∞ orientovanΘ protokoly (character-oriented protocols) a bitov∞ orientovanΘ protokoly (bit-oriented protocols).

Mezi znakov∞ orientovanΘ protokoly pat°φ p°edevÜφm protokol, vyvinut² firmou IBM pod oznaΦenφm Binary Synchronous Protocol, zkrßcen∞ naz²van² Bisync, Φi jen BSC. V poslednφ dob∞ se vÜak stßle vφce prosazujφ spφÜe bitov∞ orientovanΘ linkovΘ protokoly. Nejv²znamn∞jÜφm p°edstavitelem tΘto skupiny je op∞t protokol, vyvinut² firmou IBM pro jejφ sφ¥ovou architekturu SNA - protokol SDLC (Synchronous Data Link Control). Od tohoto protokolu jsou pak odvozeny tΘm∞° vÜechny ostatnφ pou₧φvanΘ bitov∞ orientovanΘ protokoly - HDLC (High-Level Data Link Control), pochßzejφcφ od organizace ISO, LAP (Link Access Procedure) a jeho r∙znΘ varianty od CCITT, Φi ADCCP (Advanced Data Communications Control Procedure), kter² je standardem ANSI.

 

Linkovß vrstva - II.

SprßvnΘ rozpoznßnφ zaΦßtku a konce ka₧dΘho rßmce i jeho jednotliv²ch Φßstφ nenφ zdaleka jedin²m ·kolem, kter² °eÜφ linkovß vrstva referenΦnφho ISO/OSI modelu.

Slu₧by, kterΘ linkovß vrstva poskytuje vrstv∞ sφ¥ovΘ, mohou mφt charakter spolehliv²ch i nespolehliv²ch slu₧eb (viz 26. kapitola). Pro realizaci spolehliv²ch slu₧eb pak linkovß vrstva musφ mφt k dispozici mechanismy pro zajiÜt∞nφ toho, ₧e p°φjemce skuteΦn∞ p°ijme vÜechny vyslanΘ rßmce, a to bez chyb (v p°φpad∞ spojovanΘ slu₧by jeÜt∞ ve sprßvnΘm po°adφ). Mo₧nΘ zp∙soby, jak tento po₧adavek zajistit, zßvisφ na charakteru spojenφ mezi vysφlajφcφm a p°φjemcem. Zßle₧φ na tom, zda toto spojenφ je svou povahou simplexnφ (simplex), tj. umo₧≥ujφcφ pouze jednosm∞rn² p°enos od vysφlajφcφho k p°φjemci, nebo tzv. poloduplexnφ (half-duplex), umo₧≥ujφcφ sice obousm∞rn² p°enos, ale nikoli souΦasn∞, nebo pln∞ duplexnφ (full duplex), umo₧≥ujφcφ souΦasn² p°enos ob∞ma sm∞ry.

Simplexnφ spoje neumo₧≥ujφ vytvo°it zp∞tnou vazbu mezi vysφlajφcφm a p°φjemcem. P°φjemce pak nemß mo₧nost vy₧ßdat si novΘ vyslßnφ t∞ch rßmc∙, kterΘ p°ijal jako poÜkozenΘ, a se vÜemi p°φpadn²mi chybami se musφ vyrovnat sßm. Vysφlajφcφ mu v tom m∙₧e pomoci tφm, ₧e pou₧ije vhodn² samoopravn² k≤d (viz 2. kapitola), dφky kterΘmu pak p°φjemce dokß₧e n∞kterΘ chyby v p°enesen²ch datech opravit sßm. Tyto k≤dy jsou vÜak spojeny se znaΦnou redundancφ, kv∙li kterΘ v²razn∞ klesß efektivnφ p°enosovß rychlost "u₧iteΦn²ch" dat. Stejnß situace nastßvß takΘ u takov²ch spoj∙, kterΘ sice nejsou simplexnφ, ale pracujφ s tak dlouh²mi dobami p°enosu, ₧e se na ·rovni linkovΘ vrstvy nevyplatφ Φekat na zp∞tnou vazbu od p°φjemce dat (p°φkladem mohou b²t dru₧icovΘ spoje, viz 17. kapitola).

V p°φpad∞ poloduplexnφch a pln∞ duplexnφch spoj∙ je mo₧nΘ vystaΦit ji₧ jen se zabezpeΦenφm p°enßÜen²ch dat pomocφ detekΦnφch k≤d∙. Z nich jsou nej·Φinn∞jÜφ tzv. cyklickΘ k≤dy, kterΘ lze pou₧φt k zabezpeΦenφ rßmce jako celku. P°i odesφlßnφ se k obsahu rßmce p°idß krßtk² zabezpeΦovacφ ·daj (typicky v rozsahu 16 bit∙), a p°φjemce je pak na zßklad∞ tohoto zabezpeΦovacφho ·daje schopen se znaΦnou pravd∞podobnostφ rozpoznat, zda p°ijal rßmec bez chyby, Φi nikoli. V druhΘm p°φpad∞ pak m∙₧e vyu₧φt zp∞tnΘ vazby, kterou mu nabφzφ poloduplexnφ a duplexnφ spojenφ s vysφlajφcφm, a vy₧ßdat si na n∞m novΘ vyslßnφ celΘho chybn∞ p°ijatΘho rßmce.

Prßv∞ naznaΦen² mechanismus je obvykle implementovßn v podob∞ tzv. potvrzovßnφ (acknowledgement), p°esn∞ji: potvrzovacφ zp∞tnΘ vazby, kterß p°edpoklßdß, ₧e p°φjemce zkontroluje bezchybovost ka₧dΘho p°ijatΘho rßmce, a o v²sledku informuje vysφlajφcφho. V angliΦtin∞ je pak tato technika oznaΦovßna takΘ jako ARQ (Automatic Retransmission reQuest).

Mo₧nostφ realizace mechanismu potvrzovßnφ existuje celß °ada. V prvnφm p°iblφ₧enφ je lze rozd∞lit na dv∞ velkΘ skupiny, na tzv. jednotlivΘ potvrzovßnφ (idle RQ, stop&wait RQ), a kontinußlnφ potvrzovßnφ (continuous RQ). V p°φpad∞ jednotlivΘho potvrzovßnφ vysφlajφcφ odeÜle rßmec, a pak Φekß na reakci p°φjemce. DalÜφ rßmec pak vyÜle teprve potΘ, kdy mu p°φjemce signalizuje ·sp∞ÜnΘ p°ijetφ p∙vodnφho rßmce. V opaΦnΘm p°φpad∞ (kdy je mu signalizovßno ne·sp∞ÜnΘ p°ijetφ, nebo nedostane-li do urΦitΘho ΦasovΘho limitu ₧ßdnou odpov∞∩), vyÜle p∙vodnφ rßmec znovu. KonkrΘtnφ implementovan² mechanismus pak m∙₧e vychßzet z toho, ₧e p°φjemce potvrzuje pouze bezchybn∞ p°ijatΘ rßmce (zatφmco p°ijetφ chybn²ch rßmc∙ nesignalizuje v∙bec a tyto rßmce jednoduÜe ignoruje), nebo naopak z toho, ₧e p°φjemce vysφlß jen zßpornß potvrzenφ (negative acknowledgements), resp. odmφtnutφ (rejections), kterß signalizujφ p°ijetφ rßmce s chybami a explicitn∞ ₧ßdajφ o jeho op∞tovnΘ vyslßnφ. Nejefektivn∞jÜφ je ovÜem takovß varianta, p°i kterΘ p°φjemce explicitn∞ signalizuje ob∞ mo₧nΘ situace - pomocφ kladnΘho i zßpornΘho potvrzenφ.

Obecnou nev²hodou vÜech variant jednotlivΘho potvrzovßnφ je nutnost Φekat p°ed odeslßnφm dalÜφho rßmce na reakci protistrany. V p°φpad∞ delÜφch dob p°enosu tak mohou vznikat ne·nosn∞ velkΘ ΦasovΘ ztrßty, kterΘ minimalizuje a₧ potvrzovßnφ kontinußlnφ. To je zalo₧enΘ na myÜlence, ₧e vysφlajφcφ bude vysφlat novΘ rßmce bez toho, ₧e by si byl jist ·sp∞Ün²m p°ijetφm p°edchozφch rßmc∙. Po odeslßnφ urΦitΘho rßmce tudφ₧ vysφlajφcφ neΦekß na zprßvu o ·sp∞ÜnΘm Φi ne·sp∞ÜnΘm p°ijetφ rßmce, ale m∙₧e ihned pokraΦovat vyslßnφm dalÜφho rßmce. Kladnß resp. zßpornß potvrzenφ jednotliv²ch rßmc∙ pak dostßvß s urΦit²m zpo₧d∞nφm, a reaguje na n∞ samoz°ejm∞ a₧ v okam₧iku, kdy je skuteΦn∞ dostane. Zde je op∞t n∞kolik mo₧n²ch variant: vysφlajφcφ m∙₧e znovu vyslat jen ten rßmec, o kterΘm se dozv∞d∞l, ₧e nebyl ·sp∞Ün∞ p°enesen (pak jde o tzv. selektivnφ opakovßnφ, selective repeat), nebo znovu vyslat chybn∞ p°enesen² rßmec, a po n∞m znovu i vÜechny nßsledujφcφ rßmce, kterΘ ji₧ mezitφm mohly b²t takΘ odvysφlßny (pak jde o tzv. opakovßnφ s nßvratem, v angliΦtin∞ o tzv. Go-back-N techniku).

Opakovßnφ s nßvratem je obecn∞ mΘn∞ efektivnφ ne₧ selektivnφ opakovßnφ, nebo¥ m∙₧e zp∙sobit opakovanΘ vyslßnφ rßmc∙, kterΘ ji₧ byly p°ijaty bezchybn∞. Selektivnφ opakovßnφ zase vy₧aduje ke svΘ implementaci pom∞rn∞ velkou kapacitu vyrovnßvacφch pam∞tφ, a to jak na stran∞ p°φjemce, tak i na stran∞ vysφlajφcφho.

P°i naÜich ·vahßch o mechanismech potvrzovßnφ je dobrΘ se zamyslet takΘ nad tφm, jakou konkrΘtnφ podobu majφ kladnß i zßpornß potvrzenφ, kterß p°φjemce datov²ch rßmc∙ vracφ jejich odesilateli. Mohou to b²t samostatnΘ rßmce zvlßÜtnφho typu, kterΘ nenesou ₧ßdnß "u₧iteΦnß" data, ale majφ pouze °φdφcφ charakter. Pak jde o tzv. samostatnΘ potvrzovßnφ, kterΘ ovÜem sv²mi °φdφcφmi rßmci zat∞₧uje p°enosovΘ cesty na ·kor datov²ch rßmc∙ s "u₧iteΦn²mi" daty. Efektivn∞jÜφ alternativou, pou₧itelnou vÜak jen v p°φpad∞ obousm∞rnΘho toku "u₧iteΦn²ch" dat, je vklßdat potvrzujφcφ informace p°φmo do datov²ch rßmc∙ - tΘto technice se v angliΦtin∞ °φkß piggybacking.

DalÜφm, velmi v²znamn²m ·kolem linkovΘ vrstvy ISO/OSI modelu je zajistit, aby vysφlajφcφ sv²mi daty nezahltil p°φjemce. Linkovß vrstva se tedy musφ zab²vat takΘ tzv. °φzenφm toku (flow control), kterΘ mß zajistit, aby vysφlajφcφ skuteΦn∞ vysφlal jen tehdy, kdy je p°ijφmajφcφ v∙bec schopen n∞jakß data p°ijφmat - a ne nap°. tehdy, kdy₧ p°φjemce nemß k dispozici dostateΦn∞ velk² objem vyrovnßvacφ pam∞ti pro ulo₧enφ p°ijφman²ch dat, nebo je zaneprßzdn∞n jinou Φinnostφ (obsluhou nalΘhavΘho p°eruÜenφ, zpracovßnφm d°φve p°ijat²ch dat apod.).

UrΦujφcφmi jsou p°itom mo₧nosti p°φjemce - ten musφ mφt mo₧nost doΦasn∞ pozastavit vysφlanφ dat, a pozd∞ji je zase obnovit. Na ·rovni linkovΘ vrstvy je nejjednoduÜÜφ doΦasn∞ pozastavovat vysφlßnφ cel²ch rßmc∙. V p°φpad∞ jednotlivΘho potvrzovßnφ (viz v²Üe) k tomu p°φjemci staΦφ nepotvrdit posledn∞ p°ijat² rßmec (nebo na n∞j reagovat zßporn²m potvrzenφm). V p°φpad∞ kontinußlnφho potvrzovßnφ nenφ situace o nic slo₧it∞jÜφ - vysφlajφcφ zde toti₧ vysφlß "dop°edu" (tj. bez potvrzenφ) v₧dy jen urΦit² maximßlnφ poΦet rßmc∙. Vznikß tak "okΘnko" ji₧ vyslan²ch ale dosud nepotvrzen²ch rßmc∙, kterΘ prost°ednictvφm sv²ch potvrzenφ posouvß prßv∞ p°φjemce rßmc∙. Dφky tomu mß i tomto p°φpad∞ mo₧nost podle sv²ch pot°eb doΦasn∞ pozastavit vysφlßnφ (tj. posun okΘnka) a pozd∞ji jej zase obnovit.

Kv∙li charakteristickΘ p°edstav∞ zmφn∞nΘho "okΘnka" se metoda kontinußlnφho potvrzovßnφ Φasto oznaΦuje takΘ jako metoda okΘnka (sliding window method).

 

Linkovß vrstva - III.

V minul²ch kapitolßch jsme se zab²vali postavenφm a funkcφ linkovΘ vrstvy v rßmci referenΦnφho modelu ISO/OSI. NaznaΦili jsme si, ₧e linkovß vrstva musφ zajiÜ¥ovat pot°ebnou synchronizaci na ·rovni jednotliv²ch znak∙ i cel²ch rßmc∙, a starat se o bezchybnΘ doruΦenφ vÜech rßmc∙ od odesilatele k jejich p°φjemci. Pro Φinnost linkovΘ vrstvy je vÜak velmi d∙le₧it² takΘ konkrΘtnφ zp∙sob vzßjemnΘho propojenφ jednotliv²ch uzl∙, mezi kter²mi mß p°enos rßmc∙ zajiÜ¥ovat. Podφvejme se proto nynφ, jakΘ jsou mo₧nosti takovΘhoto propojenφ, a jakΘ d∙sledky vypl²vajφ z jednotliv²ch alternativ.

Dva uzlovΘ poΦφtaΦe mohou b²t propojeny pomocφ dvoubodovΘho spoje (point-to-point connection). Dvoubodov² spoj m∙₧e b²t realizovßn nap°. pomocφ kroucenΘ dvoulinky, koaxißlnφho Φi optickΘho kabelu, nebo takΘ prost°ednictvφm ve°ejnΘ telefonnφ sφt∞ (jako sφt∞ s p°epojovßnφm okruh∙). Podstatnß je p°itom skuteΦnost, ₧e mezi ob∞ma uzly existuje (alespo≥ po dobu p°enosu) p°φm² p°enosov² kanßl, a protokol linkovΘ vrstvy pak zajiÜ¥uje p°φmou komunikaci obou koncov²ch ·Φastnφk∙.

Pon∞kud jinß situace vÜak nastßvß v p°φpad∞, kdy jsou dva uzly propojeny prost°ednictvφm sφt∞ s p°epojovßnφm paket∙ - nap°φklad pomocφ ve°ejnΘ datovΘ sφt∞ na bßzi X.25 (viz 17. dφl naÜeho serißlu). Sφt∞ tohoto typu si toti₧ samy zajiÜ¥ujφ vÜe, co je pot°eba pro "internφ" p°enos paket∙ (tj. a₧ do ·rovn∞ sφ¥ovΘ vrstvy, vΦetn∞). Linkovß vrstva zde pak mß na starosti jen p°enos rßmc∙ mezi koncov²m uzlem a mφstem jeho p°ipojenφ na datovou sφ¥.

DalÜφ mo₧nostφ, typickou spφÜe pro propojenφ na kratÜφ vzdßlenosti, je pou₧itφ tzv. mnohobodovΘho spoje (multipoint connection), kter² vzßjemn∞ propojuje vφce uzl∙ a umo₧≥uje p°enos dat mezi kter²mikoli dv∞ma uzly. Umo₧≥uje dokonce i p°enos dat z jednoho uzlu (v roli vysφlajφcφho) souΦasn∞ do vφce uzl∙ (v roli p°ijφmajφcφch) - pro tuto svou schopnost se v angliΦtin∞ tento druh propojenφ oznaΦuje takΘ jako tzv. broadcast channel (doslova: p°enosov² kanßl, umo₧≥ujφcφ "rozesφlßnφ").

Pro mnohobodov² spoj je vÜak podstatnß skuteΦnost, ₧e jde o sdφlen² prost°edek, kter² neumo₧≥uje vφcenßsobnΘ p°id∞lenφ - v roli vysφlajφcφho m∙₧e b²t v₧dy nejv²Üe jeden uzel. Pokud tedy dojde k situaci, ₧e o zφskßnφ tohoto sdφlenΘho prost°edku (tj. prßva vysφlat po mnohobodovΘm spoji) bude usilovat vφce uzl∙ souΦasn∞, musφ existovat mechanismus, kter² mezi vÜemi ₧adateli umo₧nφ vybrat jednoho, a tomu pak prost°edek p°id∞lit (tj. nechat jej vysφlat).

Mo₧nostφ realizace je op∞t vφce. Jednou z nich je existence centrßlnφho arbitra, kter² sßm rozhoduje o vyu₧itφ sdφlenΘho prost°edku - jednotliv²m ₧adatel∙m p°id∞luje prßvo vysφlat po mnohobodovΘm spoji. M∙₧e tak Φinit na zßklad∞ explicitnφch ₧ßdostφ jednotliv²ch ₧adatel∙, co₧ ovÜem znamenß, ₧e pro tyto ₧ßdosti je nutnΘ vyhradit urΦitou Φßst p°enosovΘ kapacity mnohobodovΘho spoje, nebo vytvo°it dalÜφ vhodnΘ propojenφ mezi centrßlnφm arbitrem a ostatnφmi uzly pro p°enos t∞chto ₧ßdostφ. V praxi se vÜak pou₧φvß spφÜe tzv. metoda v²zvy (polling), p°i kterΘ se centrßlnφ arbitr sßm postupn∞ obracφ na jednotlivΘ potencißlnφ ₧adatele a zjiÜ¥uje, zda cht∞jφ n∞co vyslat.

Znakov∞ i bitov∞ orientovanΘ protokoly linkovΘ vrstvy, o kter²ch jsme se zmi≥ovali ve 29. dφlu naÜeho serißlu obvykle umo₧≥ujφ pou₧φvat jak dvoubodovΘ, tak i mnohobodovΘ spoje. V p°φpad∞ mnohobodov²ch spoj∙ pak poΦφtajφ prßv∞ s existencφ centrßlnφho arbitra - tφm je u t∞chto protokol∙ jedna ze stanic, kterß mß postavenφ tzv. °φdφcφ stanice (supervisory, master), zatφmco ostatnφ stanice vystupujφ v roli pod°φzen²ch (slave) stanic. ╪φdφcφ stanice p°id∞luje jednotliv²m pod°φzen²m stanicφm prßvo vysφlat na zßklad∞ jejich kladnΘ reakce na zaslanou v²zvu (poll). Stanice, kterß v urΦitΘm okam₧iku zφskß prßvo vysφlat, se dostßvß do postavenφ tzv. hlavnφ stanice (primary) a sama si volφ, komu chce svß data vyslat - prost°ednictvφm zvlßÜtnφ v²zvy provede tzv. v²b∞r (selection) jednΘ nebo n∞kolika dalÜφch stanic, kterΘ budou jejφ data p°ijφmat, a budou tedy v∙Φi nφ vystupovat jako tzv. vedlejÜφ stanice (secondary)

Prßv∞ naznaΦen² mechanismus v sob∞ sk²tß jedno potencißlnφ nebezpeΦφ - v p°φpad∞ v²padku centrßlnφho arbitra (°φdφcφ stanice) se celß sφ¥ na bßzi mnohobodovΘho spoje stßvß nepou₧itelnou. Existujφ vÜak i jinΘ alternativy, kterΘ existenci centrßlnφho arbitra nep°edpoklßdajφ. Jsou zalo₧eny na myÜlence, ₧e vÜichni ₧adatelΘ o prßvo vysφlat po mnohobodovΘm spoji se dokß₧φ mezi sebou dohodnout, a vybrat ze svΘho st°edu jednoho, kter² pak skuteΦn∞ zaΦne vysφlat. Jde vlastn∞ o jakousi sout∞₧, do kterΘ se musφ p°ihlßsit ka₧dß stanice, kterß chce zφskat prßvo vysφlat pro mnohobodovΘm spoji (tj. stßt se stanicφ hlavnφ). Tato sout∞₧ musφ samoz°ejm∞ mφt p°esn∞ stanovenß pravidla, kterß vÜichni sout∞₧φcφ musφ dodr₧ovat - jsou definovßna ve form∞ tzv. p°φstupovΘ metody (access method).

"Decentralizovan²" zp∙sob °φzenφ mnohobodovΘho spoje, zalo₧en² na r∙zn²ch p°φstupov²ch metodßch, je charakteristick² hlavn∞ pro lokßlnφ sφt∞. NejrozÜφ°en∞jÜφ jsou dnes dv∞ p°φstupovΘ metody: metoda CSMA/CD, kterß se pou₧φvß v lokßlnφch sφtφch typu Ethernet, a metoda Token passing (tzv. p°edßvßnφ pov∞°enφ resp. "peÜka"), kterß se pou₧φvß v sφtφch Token Ring a Token Bus. O obou metodßch si samoz°ejm∞ budeme povφdat podrobn∞ji, pokusme se je vÜak jeÜt∞ za°adit do kontextu sedmivrstvΘho referenΦnφho modelu ISO/OSI.

P°φstupovß metoda, zajiÜ¥ujφcφ korektnφ p°φstup ke sdφlenΘmu mnohobodovΘmu spoji, musφ b²t implementovßna nad fyzickou vrstvou - nebo¥ sama vyu₧φvß slu₧eb tΘto vrstvy pro p°enos jednotliv²ch bit∙. Linkovß vrstva, kterß zabezpeΦuje p°enos cel²ch rßmc∙, by ale ji₧ m∞la mφt pot°ebn² p°φstup ke sdφlenΘmu mnohobodovΘmu spoji zajiÜt∞n. P°φstupovß metoda by tudφ₧ m∞la b²t implementovßna mezi fyzickou a linkovou vrstvou - co₧ by ovÜem znamenalo "vsunutφ" zcela novΘ vrstvy do referenΦnφho modelu, kterß je navφc zapot°ebφ jen v p°φpad∞ t∞ch lolnφch sφtφ, kterΘ pou₧φvajφ sdφlenΘ mnohobodovΘ spoje bez centrßlnφho arbitra. Celß situace se vy°eÜila tak, ₧e se u t∞chto sφtφ "p∙vodnφ" linkovß vrstva rozd∞luje na dv∞ Φßsti resp. podvrstvy - ni₧Üφ podvrstvu MAC (Media Access Control sublayer, podvrstva °φzenφ p°φstupu k p°enosovΘmu mΘdiu), ve kterΘ je implementovßna p°φsluÜnß p°φstupovß metoda, a vyÜÜφ podvrstvu LLC (Link Layer Control, podvrstvu °φzenφ logickΘho spoje), kterß zajiÜ¥uje vÜechno to, co jsme dosud p°isuzovali linkovΘ vrstv∞ jako takovΘ.

P°φstupovΘ metody pro dnes nejrozÜφ°en∞jÜφ lokßlnφ sφt∞ jsou definovßny ve standardech IEEE °ady 802, o kter²ch jsme se ji₧ zmi≥ovali v souvislosti s fyzickou vrstvou ISO/OSI modelu ve 28. dφlu naÜeho serißlu.

 

Sφ¥ovß vrstva - I.

Cht∞jφ-li spolu komunikovat dva uzly poΦφtaΦovΘ sφt∞, mezi kter²mi neexistuje p°φmΘ spojenφ, je nutnΘ pro n∞ najφt alespo≥ spojenφ nep°φmΘ - tedy vhodnou cestu, vedoucφ p°es mezilehlΘ uzly od jednoho koncovΘho uzly ke druhΘmu. Mo₧n²ch cest m∙₧e b²t samoz°ejm∞ vφce, n∞kdo je vÜak musφ najφt, jednu z nich vybrat, a pak takΘ zajistit sprßvnΘ p°edßvßnφ dat po tΘto cest∞. VÜechny tyto ·koly mß v referenΦnφm modelu ISO/OSI na starosti sφ¥ovß vrstva.

Uva₧ujme p°φklad poΦφtaΦovΘ sφt∞ a situaci, kdy je pot°eba p°enΘst urΦitß data z uzlu A do uzlu D. Zdrojem t∞chto dat nech¥ je u₧ivatelsk² proces, b∞₧φcφ na poΦφtaΦi A (m∙₧e to b²t nap°φklad program pro prßci s elektronickou poÜtu a jφm generovanß data zprßvou, urΦenou pro ·Φastnφka na uzlu resp. poΦφtaΦi D). U₧ivatelsk² proces na poΦφtaΦi A p°edß svß data k odeslßnφ aplikaΦnφ vrstv∞, kterß je zase p°edß vrstv∞ prezentaΦnφ atd.. Kdy₧ se p°φsluÜnß data dostanou a₧ na ·rove≥ sφ¥ovΘ vrstvy, musφ tato rozhodnout, kudy je skuteΦn∞ odeslat. V naÜem konkrΘtnφm p°φpad∞ je toto rozhodnutφ velmi jednoduchΘ, jedinß cesta "ven" zde toti₧ vede p°es uzel E. Data, urΦenß k doruΦenφ do uzlu D, proto sφ¥ovß vrstva uzlu A p°edß svΘ bezprost°edn∞ ni₧Üφ (linkovΘ) vrstv∞ s po₧adavkem na jejich odeslßnφ do uzlu E.

Jeliko₧ mezi uzly A a E existuje p°φmΘ spojenφ, dokß₧e lInkovß vrstva uzlu A p°edat blok dat (na ·rovni linkovΘ vrstvy oznaΦovan² jako rßmec) svΘ partnerskΘ linkovΘ vrstv∞ na uzlu E. Jak ji₧ ale vφme, ve skuteΦnosti tak Φinφ prost°ednictvφm fyzickΘ vrstvy.

Linkovß vrstva na uzlu E p°edß p°ijat² rßmec svΘ bezprost°edn∞ vyÜÜφ vrstv∞, tj. vrstv∞ sφ¥ovΘ. Ta musφ z obsahu rßmce poznat, ₧e jde o data urΦenß k doruΦenφ do uzlu D. Na zßklad∞ znalosti topologie sφt∞ (tj. zp∙sobu propojenφ jednotliv²ch uzl∙) tato vrstva zjistφ, ₧e cesta do uzlu D vede dßle bu∩ p°es uzel G, nebo p°es uzel F. Musφ se rozhodnout pro jednu z obou mo₧nostφ - p°edpoklßdejme, ₧e se rozhodne pro cestu p°es uzel G. Data, kterß p°evzala od linkovΘ vrstvy, proto sφ¥ovß vrstva uzlu E vrßtφ svΘ bezprost°edn∞ ni₧Üφ vrstv∞ s po₧adavkem na odeslßnφ do uzlu G.

V uzlu G se situace opakuje. Linkovß vrstva p°edß p°ijat² rßmec sφ¥ovΘ vrstv∞, kterß jej vrßtφ linkovΘ vrstv∞ zp∞t s po₧adavkem na odeslßnφ do uzlu D, kam ji₧ z uzlu G vede p°φmΘ spojenφ.

V uzlu D se data dostanou analogick²m zp∙sobem a₧ na ·rove≥ sφ¥ovΘ vrstvy. Ta rozpoznß, ₧e jde o data, urΦenß prßv∞ danΘmu uzlu, a proto je ji₧ nevracφ vrstv∞ linkovΘ, ale p°edß je svΘ bezprost°edn∞ vyÜÜφ (tj. transportnφ) vrstv∞. Odtud jsou pak postupn∞ p°edßvßna sm∞rem k vyÜÜφm vrstvßm, a₧ se dostanou k tΘ entit∞ resp. procesu, kterß je jejich koneΦn²m p°φjemce.

 

┌koly sφ¥ovΘ vrstvy

Pokusme se nynφ, na zßklad∞ v²Üe uvedenΘho p°φkladu, o zobecn∞nφ ·kol∙, kterΘ v referenΦnφm modelu ISO/OSI plnφ sφ¥ovß vrstva.

Kdykoli transportnφ vrstva p°edßvß vrstv∞ sφ¥ovΘ n∞jakß data k odeslßnφ, p°ipojuje k nim pouze informaci o tom, kdo mß b²t jejich koneΦn²m p°φjemcem. Pro ka₧d² samostatn∞ p°enßÜen² blok dat, kter² se na ·rovni sφ¥ovΘ vrstvy oznaΦuje jako paket (zatφmco na ·rovni linkovΘ vrstvy jako rßmec) pak musφ sφ¥ovß vrstva rozhodnout, kter²m "sm∞rem" jej mß skuteΦn∞ odeslat. Jakmile toto rozhodnutφ uΦinφ, p°edß p°φsluÜn² paket vrstv∞ linkovΘ spolu s ·dajem o zvolenΘm sm∞ru.

Nejd∙le₧it∞jÜφm ·kolem sφ¥ovΘ vrstvy je tedy tzv. sm∞rovßnφ (routing), kterΘ p°edstavuje prßv∞ ono zmφn∞nΘ rozhodovßnφ o sm∞ru odesφlßnφ jednotliv²ch paket∙. Nenφ jist∞ t°eba zd∙raz≥ovat, ₧e k tomu sφ¥ovß vrstva pot°ebuje alespo≥ zßkladnφ informace o topologii celΘ sφt∞. KonkrΘtnφch zp∙sob∙ sm∞rovßnφ, Φi spφÜe postup∙ resp. algoritm∙ volby vhodnΘho sm∞ru p°itom existuje celß °ada. Od jednoduch²ch statick²ch metod, kterΘ nejsou schopny reagovat na dynamickΘ zm∞ny v sφti, a₧ po adaptivnφ metody, kterΘ se dokß₧φ p°izp∙sobit aktußlnφmu stavu sφt∞, jejφmu zatφ₧enφ, p°φpadn²m v²padk∙m n∞kter²ch uzl∙ Φi spoj∙ apod.

Metodßm sm∞rovßnφ se budeme podrobn∞ji v∞novat v dalÜφch pokraΦovßnφch naÜeho serißlu. Vra¥me se vÜak jeÜt∞ k ·kol∙m sφ¥ovΘ vrstvy - krom∞ vlastnφho sm∞rovßnφ (chßpeme-li jej jen jako rozhodovßnφ o dalÜφm sm∞ru) musφ sφ¥ovß vrstva zajiÜ¥ovat i jeho skuteΦnou realizaci. Tedy v mezilehl²ch uzlech zajiÜ¥ovat pot°ebnΘ p°edßvßnφ jednotliv²ch paket∙ na cest∞ k jejich koncovΘmu p°φjemci.

S tφm dosti ·zce souvisφ i dalÜφ ·kol sφ¥ovΘ vrstvy - p°edchßzet p°etφ₧enφ Φi dokonce zahlcenφ Φßstφ sφt∞, °φdit tok dat a dbßt o co mo₧nß nejrovnom∞rn∞jÜφ vyu₧itφ vÜech p°enosov²ch prost°edk∙ a kapacit.

P°i vzßjemnΘm propojenφ dvou Φi vφce sφtφ pak p°ib²vß sφ¥ovΘ vrstv∞ jeÜt∞ jeden d∙le₧it² ·kol - zajiÜ¥ovat nezbytnΘ p°edßvßnφ paket∙ mezi jednotliv²mi sφt∞mi.

OdliÜnΘ pohledy na sv∞t

Ud∞lejme si nynφ malΘ shrnutφ toho, jak² pohled na celou sφ¥ a vzßjemnΘ propojenφ jednotliv²ch uzl∙ mß transportnφ, sφ¥ovß a linkovß vrstva ISO/OSI modelu - umo₧nφ nßm to snßze pochopit postavenφ a v²znam sφ¥ovΘ vrstvy: transportnφ vrstva v ka₧dΘm uzlu sφt∞ vychßzφ z p°edstavy, ₧e mezi jejφm uzlem a koncov²m p°φjemcem dat existuje p°φmΘ spojenφ, a proto adresuje svß data p°φmo tomuto koncovΘmu p°φjemci. Sφ¥ovß vrstva si ji₧ uv∞domuje skuteΦnou topologii sφt∞ a vφ, ₧e p°edstava transportnφ vrstvy nemusφ b²t sprßvnß (Φinφ vÜak vÜe pro to, aby transportnφ vrstv∞ jejφ iluzi zachovala). Pro linkovou vrstvu pak ji₧ nenφ topologie celΘ sφt∞ relevantnφ - tΘ staΦφ znßt jen ty uzly, se kter²mi mß "jejφ" uzel p°φmΘ spojenφ. Neznß dokonce ani koncovΘho p°φjemce dat obsa₧en²ch v rßmcφch, kterΘ sama p°enßÜφ.

KomunikaΦnφ podsφ¥ a hostitelskΘ poΦφtaΦe

P°φklad topologie sφt∞ naznaΦuje nejobecn∞jÜφ situaci, kdy vÜechny uzlovΘ poΦφtaΦe sφt∞ majφ stejnΘ postavenφ a mohou vystupovat jak v roli zdroj∙ a koncov²ch p°φjemc∙ dat, tak i v roli mezilehl²ch uzl∙.

V praxi vÜak m∙₧e Φasto dochßzet k tomu, ₧e meziuzly nejsou plnohodnotn²mi uzly poΦφtaΦovΘ sφt∞, ale pouze jedno·Φelov²mi "p°epojovaΦi", kterΘ vytvß°φ pot°ebnou komunikaΦnφ infrastrukturu pro propojenφ ostatnφch "plnohodnotn²ch" uzl∙. Prßv∞ s takovouto p°edstavou poΦφtal takΘ referenΦnφ model ISO/OSI ve svΘ p∙vodnφ verzi (kdy uva₧oval jen tzv. spojovanΘ slu₧by). Podle tΘto p°edstavy je odd∞lena Φist∞ komunikaΦnφ funkce sφt∞ a je sv∞°enß tzv. komunikaΦnφ podsφti (communication subnet, subnetwork), zatφmco vlastnφ aplikaΦnφ funkce zajiÜ¥ujφ tzv. koncovΘ systΘmy (end systems). S podobnou p°edstavou pracovala nap°φklad i jedna z prvnφch rozlehl²ch sφtφ ARPANET, jejφ₧ terminologie se nejvφce prosadila do praxe. KoncovΘ systΘmy, na kter²ch jsou provozovßny u₧ivatelskΘ aplikace, oznaΦuje jako hostitelskΘ poΦφtaΦe (host computers, hosts), zatφmco jednotlivΘ "p°epojovacφ" uzly v rßmci komunikaΦnφ podsφt∞ oznaΦuje jako IMP (Interface Message Processor) - viz obrßzek 32.1. a/. V literatu°e se vÜak Φasto pou₧φvajφ takΘ termφny uzel p°epojovßnφ paket∙ (Packet Switching Node) Φi mezilehl² systΘm (Intermediate Node) nebo datovß ·st°edna (Data Switching Exchange).

 

Sφ¥ovß vrstva - II

Otßzka volby mezi spojovan²mi a nespojovan²mi slu₧bami (connection-oriented vs. connectionless slu₧bami) je snad nejkontroverzn∞jÜφ prßv∞ na ·rovnφ sφ¥ovΘ vrstvy. Kdy₧ vznikal referenΦnφ model ISO/OSI, mezi jeho tv∙rci m∞li znaΦnou p°evahu zastßnci spojovan²ch slu₧eb. Proto takΘ referenΦnφ model p∙vodn∞ poΦφtal jen s tφmto druhem sφ¥ov²ch slu₧eb. Zastßnci druhΘ alternativy vÜak alespo≥ dodateΦn∞ prosadili do referenΦnφho modelu i slu₧by spojovanΘ. V Φem je ale skuteΦnΘ jßdro sporu mezi ob∞ma tendencemi?

P°ipome≥me si nejprve, ₧e spojovanß slu₧ba funguje obdobn∞ jako ve°ejnß telefonnφ sφ¥ - p°edpoklßdß nejprve navßzßnφ spojenφ mezi ob∞ma ·Φastnφky, pak vlastnφ p°enos dat prost°ednictvφm tohoto spojenφ, kterΘ se v jistΘm smyslu chovß jako roura, kterou se vlastnφ data "protlaΦujφ", a nakonec vy₧aduje ukonΦenφ (rozvßzßnφ) spojenφ. Naopak nespojovanß slu₧ba funguje obdobn∞ jako b∞₧nß listovnφ poÜta - ka₧d² jednotliv² paket (resp. datagram) doruΦuje samostatn∞ a nezßvisle na ostatnφch, bez toho, ₧e by se navazovalo spojenφ mezi p°φjemcem a odesilatelem. DalÜφ analogiφ s listovnφ poÜtou je rozdφl mezi spolehlivou a nespolehlivou nespojovanou slu₧bou - spolehlivß varianta je obdobou doporuΦenΘ zßsilky, kterß se nem∙₧e (alespo≥ teoreticky) ztratit, zatφmco nespolehlivß verze je obdobou obyΦejnΘ zßsilky, u kterΘ poÜta negarantuje jejφ doruΦenφ, a kterß se m∙₧e beze stopy ztratit. Zastßnci spojovan²ch slu₧eb, rekrutujφcφ se p°edevÜφm z kruh∙ spojov²ch organizacφ, zastßvajφ nßzor, ₧e u₧ivatelΘ resp. vyÜÜφ vrstvy pot°ebujφ maximßln∞ spolehlivou a jednoduÜe pou₧itelnou slu₧bu pro p°enos dat, kterß by je zbavila vÜech starostφ se zabezpeΦenφm vlastnφho p°enosu dat (nap°. s pot°ebn²m °φzenφm toku, opravou chyb, zajiÜt∞nφm sprßvnΘho po°adφ jednotliv²ch doruΦovan²ch paket∙ atd.). Tedy spolehlivou spojovanou sφ¥ovou slu₧bu pro p°enos paket∙.

Druhß strana, reprezentovanß p°edevÜφm lidmi kolem sφt∞ Internet, argumentuje svou dlouhodobou zkuÜenostφ s provozovßnφm velkΘ poΦφtaΦovΘ sφt∞ v reßln²ch podmφnkßch. Podle nφ je nutnΘ pova₧ovat komunikaΦnφ infrastrukturu (podsφ¥, viz minul² dφl naÜeho serißlu) za nespolehlivou, bez ohledu na to, jak je navr₧ena (tedy i v p°φpad∞, ₧e se sama sna₧φ b²t spolehlivou). KoncovΘ systΘmy (hostitelskΘ poΦφtaΦe, viz minule) musφ poΦφtat s tφm, ₧e pakety se mohou v podsφti ztrßcet, a vÜe pot°ebnΘ k zajiÜt∞nφ spolehlivosti si tudφ₧ musφ realizovat sami - tedy detekci a opravu chyb, °φzenφ toku atd. To ovÜem vede na po₧adavek pou₧φvat na ·rovni sφ¥ovΘ vrstvy jen ty nejrychlejÜφ a nejjednoduÜÜφ slu₧by (na ·rovni operacφ typu "vyÜli paket" a "p°ijmi paket"), a spolehlivost zajistit a₧ v bezprost°edn∞ vyÜÜφ, transportnφ vrstv∞. Tato druhß strana tedy po₧aduje na ·rovni sφ¥ovΘ vrstvy jen jednoduchou nespolehlivou nespojovanou slu₧bu.

Na cel² spor mezi ob∞ma tßbory je mo₧nΘ se dφvat i z pon∞kud jinΘho ·hlu. SpojovΘ organizace jako zastßnci spojovan²ch slu₧eb cht∞jφ poskytovat u₧ivatel∙m co nejkomplexn∞jÜφ a nej·pln∞jÜφ slu₧by - je to asi p°irozenΘ, nebo¥ prßv∞ za n∞ jsou placeny. Druhß strana naopak tvrdφ, ₧e v²poΦetnφ kapacita je dnes tak lacinß, ₧e nenφ nejmenÜφ problΘm, aby si co nejvφce funkcφ zajiÜ¥ovaly a₧ jednotlivΘ hostitelskΘ poΦφtaΦe (obvykle ve vlastnictvφ u₧ivatel∙). DalÜφm siln²m argumentem tΘto skupiny je pak to, ₧e charakter n∞kter²ch sφ¥ov²ch aplikacφ (jako nap°. p°enos digitalizovanΘho zvuku a sb∞r dat v reßlnΘm Φase) up°ednost≥uje rychl² p°enos p°ed p°enosem spolehliv²m.

Rozpor mezi spojovan²mi a nespojovan²mi slu₧bami na ·rovni sφ¥ovΘ vrstvy je tedy ve svΘ podstat∞ sporem o to, kam umφstit veÜkerou slo₧itost - tedy funkce, spojenΘ se zajiÜt∞nφm spolehlivosti, kterΘ tak jako tak musφ b²t n∞kde realizovßny. Zastßnci spojovan²ch slu₧eb je cht∞jφ umφstit do sφ¥ovΘ vrstvy, zatφmco zastßnci nespojovan²ch slu₧eb po₧adujφ jejich umφst∞nφ a₧ do vrstvy transportnφ (zatφmco od vrstvy sφ¥ovΘ po₧adujφ jen nejjednoduÜÜφ nespolehlivou nespojovanou slu₧bu).

CONS i CLNS

Cel² spor byl nakonec vy°eÜen tak, ₧e aktualizovanß verze referenΦnφho modelu ISO/OSI ji₧ poΦφtß na ·rovni sφ¥ovΘ vrstvy s mo₧nostφ poskytovßnφ obou druh∙ slu₧eb - spojovan²ch sφ¥ov²ch slu₧eb (CONS - Connection-Oriented Network Services) i nespojovan²ch sφ¥ov²ch slu₧eb (CLNS, ConnectionLess Network Services).

Slu₧by vs. jejich realizace

Druh slu₧eb, kterΘ sφ¥ovß vrstva poskytuje svΘ bezprost°edn∞ vyÜÜφ (tj. transportnφ) vrstv∞, nesmφme mechanicky ztoto₧≥ovat s tφm, jak sφ¥ovß vrstva skuteΦn∞ funguje "uvnit°". Zßkladnφ mo₧nosti jsme si naznaΦili ji₧ v 17. dφlu naÜeho serißlu, kdy jsme si povφdali o ve°ejn²ch datov²ch sφtφch. Pomineme-li mo₧nost tzv. p°epojovßnφ okruh∙, kterß vytvß°φ p°φmΘ fyzickΘ spojenφ mezi ob∞ma koncov²mi ·Φastnφky, jde o dv∞ zßkladnφ varianty: prvnφ z nich jsou tzv. virtußlnφ okruhy (tΘ₧: virtußlnφ spoje, virtual calls, virtual circuits) jako mechanismus spojovanΘho charakteru, kter² p°ed vlastnφm p°enosem datov²ch paket∙ p°edpoklßdß "vytyΦenφ" logickΘ cesty (virtußlnφho okruhu) mezi ob∞ma koncov²mi ·Φastnφky.

Druhou alternativou je pak p°enos datagram∙, kter² mß nespojovan² charakter, ka₧d² jednotliv² paket (nynφ naz²van² datagram) doruΦuje samostatn∞, nezßvisle na ostatnφch paketech, a nep°edpoklßdß ₧ßdnΘ vytyΦenφ cesty od odesilatele k jejich p°φjemci.

Je jist∞ z°ejmΘ, ₧e spojovanΘ sφ¥ovΘ slu₧by (CONS) se obvykle realizujφ prost°ednictvφm komunikaΦnφ podsφt∞, kterß pou₧φvß mechanismus virtußlnφch okruh∙, zatφmco nespojovanΘ sφ¥ovΘ slu₧by (CLNS) se realizujφ prost°ednictvφm podsφt∞, kterΘ pracuje na bßzi p°enosu jednotliv²ch datagram∙. Nenφ to ale jedinß mo₧nost. SpojovanΘ sφ¥ovΘ slu₧by lze bez v∞tÜφch problΘm∙ poskytovat i pomocφ podsφt∞, kterß pracuje s p°enosem jednotliv²ch datagram∙ (jestli₧e se ka₧d² paket mφsto virtußlnφm okruhem ve skuteΦnosti p°enßÜφ samostatn∞ jako datagram). Teoreticky je mo₧nß i opaΦnß kombinace - nespojovanΘ slu₧by v podsφti, kterß pracuje s virtußlnφmi okruhy. P°φliÜ efektivnφ to ale nenφ - pro p°enos ka₧dΘho jednotlivΘho datagramu je nutnΘ nejprve z°φdit, a pak zase zruÜit pot°ebn² virtußlnφ okruh. Pokud je ale k dispozici jen podsφ¥ s virtußlnφmi okruhy, nic jinΘho nezb²vß.

NaznaΦme si nynφ pon∞kud podrobn∞ji, jak jsou implementovßny a jak fungujφ mechanismy virtußlnφch okruh∙ a p°enosu datagram∙. Pom∙₧e nßm to lΘpe pochopit podstatu sporu mezi zastßnci spojovan²ch a nespojovan²ch slu₧eb.

Virtußlnφ okruhy vs. datagramy

Mechanismus virtußlnφch okruh∙ p°edpoklßdß, ₧e mezi zdrojem dat a jejich koncov²m p°φjemcem je v rßmci navazovßnφ spojenφ nejprve "vytyΦena" logickß cesta (virtußlnφ okruh), po kterΘ jsou pak postupn∞ p°enßÜeny jednotlivΘ pakety.

VytyΦit cestu ve skuteΦnosti znamenß, ₧e se prßv∞ jednou (v rßmci navazovßnφ spojenφ) najde takovß posloupnost mezilehl²ch uzl∙ (resp. uzl∙ IMP, viz minule), kterß vede od zdroje dat a₧ k jejich koncovΘmu p°φjemci, a je v dan² moment pova₧ovßna za optimßlnφ. ┌daje o tΘto cest∞ (virtußlnφm kanßlu) se pak uchovßvajφ v jednotliv²ch meziuzlech jako polo₧ky specißlnφ tabulky.

JednotlivΘ datovΘ pakety, kterΘ jsou pak skuteΦn∞ p°enßÜeny, nejsou oznaΦeny adresou svΘho koneΦnΘho p°φjemce (kterß m∙₧e b²t relativn∞ dlouhß), ale pouze oznaΦenφm p°φsluÜnΘho virtußlnφho kanßlu. Sφ¥ovß vrstva v ka₧dΘm meziuzlu pak podle tohoto ·daje zjistφ ve svΘ tabulce, kter²m sm∞rem mß paket p°edat dßle, a uΦinφ tak.

Naproti tomu p°i p°enosu datagram∙ se p°edpoklßdß, ₧e mezi zdrojem dat a jejich koncov²m p°φjemcem nenφ navazovßno p°φmΘ spojenφ, a jednotlivΘ datovΘ pakety (datagramy) jsou vysφlßny "naslepo", v dobrΘ vφ°e, ₧e jejich p°φjemce v∙bec existuje a bude schopen je p°ijmout. Ka₧d² datagram je p°itom doruΦovßn nezßvisle na ostatnφch (tak jako nap°. b∞₧n² dopis v p°φpad∞ listovnφ poÜty) - to znamenß, ₧e v ka₧dΘm meziuzlu musφ sφ¥ovß vrstva v₧dy znovu rozhodnout, kter²m sm∞rem mß b²t datagram poslßn dßle. V jednotliv²ch meziuzlech si proto sφ¥ovß vrstva nevytvß°φ obdobu tabulky, popisujφcφ virtußlnφ okruhy. Mφsto toho pracuje s tabulkou, ve kterΘ mß alespo≥ zßkladnφ informace o topologii sφt∞ a podle nφ p°ijφmß svß rozhodnutφ o nejvhodn∞jÜφm sm∞ru dalÜφho p°enosu ka₧dΘho jednotlivΘho datagramu.

Hlavnφ v²hodou virtußlnφch okruh∙ je skuteΦnost, ₧e rozhodovßnφ o dalÜφm sm∞ru p°enosu paket∙ se v ka₧dΘm meziuzlu p°ijφmß jen jednou, a nikoli poka₧dΘ znovu, jako je tomu v p°φpad∞ datagram∙. Nev²hodou je naopak statick² charakter tohoto rozhodnutφ (a tφm i zvolenΘ cesty resp. virtußlnφho okruhu), kterΘ nenφ mo₧nΘ dynamicky p°izp∙sobovat okam₧itΘmu stavu sφt∞ - co₧ je naopak mo₧nΘ v p°φpad∞ p°enosu datagram∙.

Virtußlnφ okruhy vykazujφ v∞tÜφ jednorßzovou poΦßteΦnφ re₧ii (na navßzßnφ spojenφ resp. vytvo°enφ logickΘho okruhu), a menÜφ relativnφ re₧ii na p°enos jednotliv²ch paket∙, zatφmco v p°φpad∞ datagram∙ je tomu p°esn∞ naopak.

Obecn∞ lze °φci, ₧e mechanismus virtußlnφch okruh∙ je v²hodn∞jÜφ v p°φpad∞ p°enosu menÜφch paket∙ (jako je tomu nap°. p°i interaktivnφch aplikacφch), zatφmco varianta s p°enosem datagram∙ je v²hodn∞jÜφ pro menÜφ poΦty relativn∞ v∞tÜφch paket∙, a ve verzi nespolehlivΘ (resp. nepotvrzovanΘ) datagramovΘ slu₧by takΘ tam, kde jde p°edevÜφm o rychlost.

 

Sφ¥ovß vrstva - sm∞rovßnφ

Neexistuje-li v poΦφtaΦovΘ sφti p°φmΘ spojenφ mezi odesilatelem dat a jejich koncov²m p°φjemcem, je ·kolem sφ¥ovΘ vrstvy nalΘzt mezi nimi alespo≥ takovou cestu, kterß vede p°es n∞kterΘ jinΘ uzly sφt∞. Z p°edchozφch dφl∙ naÜeho serißlu ji₧ vφme, ₧e v p°φpad∞ tzv. virtußlnφch okruh∙ se takovßto cesta hledß jen jednou, a to na zaΦßtku komunikace obou koncov²ch ·Φastnφk∙ (v rßmci navazovßnφ spojenφ resp. z°izovßnφ virtußlnφho okruhu), zatφmco u tzv. datagramovΘ slu₧by se vhodnß cesta hledß pro ka₧d² jednotliv² paket (resp. datagram) poka₧dΘ znovu. Vφme ji₧ takΘ, ₧e problematika hledßnφ cest v sφti se obecn∞ oznaΦuje jako sm∞rovßnφ (routing). Co vÜak jeÜt∞ nevφme, je jak se takovß cesta vlastn∞ hledß.

Pro nalezenφ vhodnΘ cesty od odesilatele a₧ ke koncovΘmu p°φjemci existuje celß °ada algoritm∙ sm∞rovßnφ (routing algorithms), kterΘ jsou zalo₧eny na r∙zn²ch myÜlenkßch a principech, a vy₧adujφ r∙znΘ stupn∞ znalosti sφt∞, jejφ topologie a dalÜφch parametr∙ statickΘho i dynamickΘho charakteru. VÜechny algoritmy sm∞rovßnφ by ovÜem m∞ly b²t korektnφ, tedy dßvat jen takovΘ v²sledky, kterΘ jsou sprßvnΘ a pou₧itelnΘ, m∞ly by b²t co mo₧nß nejjednoduÜÜφ, nejsnßze implementovatelnΘ, a jejich re₧ie by m∞la b²t minimßlnφ. SouΦasn∞ s tφm by ale algoritmy sm∞rovßnφ m∞ly b²t i tzv. robustnφ, tedy schopnΘ vyrovnat se s nep°edvφdan²mi v²padky, poruchami Φi jin²mi nestandardnφmi situacemi. M∞ly by takΘ usilovat o optimßlnφ vyu₧itφ celΘ sφt∞ a jejφ p°enosovΘ kapacity, a p°itom nikoho nediskriminovat - tedy n∞komu hledat "lepÜφ" cesty, a n∞komu "horÜφ".

V²sledn²m efektem aplikace algoritm∙ sm∞rovßnφ by m∞lo b²t to, aby sφ¥ovß vrstva v ka₧dΘm z uzl∙ sφt∞ v∞d∞la, kudy poslat dßle takov² paket, kter² nenφ urΦen p°φmo jejφmu uzlu. KonkrΘtnφ pokyny pro sm∞rovßnφ paket∙ resp. datagram∙, kterΘ vznikajφ na zßklad∞ aplikace algoritm∙ sm∞rovßnφ, se pak v jednotliv²ch uzlech uchovßvajφ ve form∞ tzv. sm∞rovacφch tabulek (routing tables).

Adaptivnφ a neadaptivnφ sm∞rovßnφ

V prvnφm p°iblφ₧enφ si m∙₧eme rozd∞lit algoritmy sm∞rovßnφ na dv∞ velkΘ skupiny. Do prvnφ z nich budou pat°it takovΘ, kterΘ se sna₧φ pr∙b∞₧n∞ reagovat na skuteΦn² stav sφt∞, a brßt jej do ·vahy p°i svΘm hledßnφ nejvhodn∞jÜφ cesty. Dokß₧φ se tedy p°izp∙sobit okam₧itΘmu stavu sφt∞, a proto se obecn∞ oznaΦujφ jako adaptivnφ algoritmy (adaptive algorithms). Naproti tomu neadaptivnφ algoritmy (nonadaptive algorithms) nevyu₧φvajφ ₧ßdnΘ informace dynamickΘho charakteru - nap°. ·daje o okam₧itΘm zatφ₧enφ jednotliv²ch p°enosov²ch cest, v²padcφch, dΘlkßch Φekacφch front v jednotliv²ch uzlech apod. Svß rozhodnutφ stavφ pouze na informacφch statickΘho charakteru, kterΘ jsou p°edem znßmy. Dφky tomu lze neadaptivnφ algoritmy pou₧φt k nalezenφ vÜech pot°ebn²ch cest jeÜt∞ p°ed uvedenφm sφt∞ do provozu, a pot°ebnΘ informace pak jednorßzov∞ zanΘst do sm∞rovacφch tabulek jednotliv²ch uzl∙ sφt∞. Kv∙li statickΘmu charakteru v²chozφch ·daj∙ se pou₧itφ neadaptivnφch algoritm∙ n∞kdy oznaΦuje takΘ jako tzv. statickΘ sm∞rovßnφ (static routing). Je vhodnΘ tam, kde topologie sφt∞ je skuteΦn∞ nem∞nnß, kde prakticky nedochßzφ k v²padk∙m a kde se p°φliÜ nem∞nφ ani intenzita provozu resp. zßt∞₧ sφt∞.

CentralizovanΘ sm∞rovßnφ

Adaptivnφ algoritmus m∙₧e b²t koncipovßn tak, ₧e veÜkerΘ informace o aktußlnφm stavu celΘ sφt∞ se pr∙b∞₧n∞ shroma₧∩ujφ v jedinΘm centrßlnφm bod∞, tzv. sm∞rovacφm centru (RCC, Routing Control Center), kterΘ pak na jejich zßklad∞ samo p°ijφmß vÜechna pot°ebnß rozhodnutφ, a ostatnφm uzl∙m je oznamuje. Pak jde o tzv. centralizovanΘ sm∞rovßnφ (centralized routing). Jeho v²hodou je mo₧nost optimßlnφho rozhodovßnφ na zßklad∞ znalosti skuteΦnΘho stavu celΘ sφt∞. ProblΘm je ovÜem v tom, ₧e mß-li b²t centralizovanΘ sm∞rovßnφ opravdu adaptivnφ, tedy mß-li pr∙b∞₧n∞ reagovat na aktußlnφ stav sφt∞, musφ b²t vyhledßvßnφ nejvhodn∞jÜφch cest provßd∞no dostateΦn∞ Φasto. Vlastnφ hledßnφ cest je samo o sob∞ operacφ znaΦn∞ nßroΦnou na v²poΦetnφ kapacitu, a mß-li se Φasto opakovat, dokß₧e pln∞ zam∞stnat i velmi v²konn² poΦφtaΦ. Jsou zde vÜak jeÜt∞ i dalÜφ problΘmy - co nap°φklad d∞lat v p°φpad∞ v²padku sm∞rovacφho centra? Nezanedbatelnß nenφ ani zßt∞₧ p°enosov²ch cest, kterou p°edstavuje neustßl² p°φsun aktußlnφch informacφ o stavu sφt∞ do sm∞rovacφho centra, stejn∞ tak jako zp∞tnß distribuce v²sledk∙.

IzolovanΘ sm∞rovßnφ

Alternativou k centralizovanΘmu sm∞rovßnφ je tzv. izolovanΘ sm∞rovßnφ (isolated routing), zalo₧enΘ na myÜlence, ₧e rozhodovat o nejvhodn∞jÜφ cest∞ si bude ka₧d² uzel sßm za sebe, a to na zßklad∞ takov²ch informacφ, kterΘ dokß₧e zφskat sßm, bez spoluprßce s ostatnφmi uzly. Jednou z mo₧nostφ realizace je algoritmus, nazvan² p°φznaΦn∞ algoritmem horkΘ brambory (hot potato algorithm). Jak jeho nßzev dßvß tuÜit, sna₧φ se uzel zbavit ka₧dΘho paketu resp. datagramu co mo₧nß nejrychleji. Sleduje proto poΦet paket∙, kterΘ Φekajφ ve front∞ na odeslßnφ jednotliv²mi sm∞ry, a nov² paket za°adφ do tΘ fronty, kterß je momentßln∞ nejkratÜφ. Uzel se tedy nerozhoduje podle adresy, ani nehledß nejkratÜφ cestu pro p°enos paketu, pouze se jej sna₧φ co nejrychleji zbavit ve vφ°e, ₧e po jistΘ dob∞ p°eci jen dojde ke svΘmu cφli. V praxi se ovÜem algoritmus horkΘ brambory spφÜe kombinuje s jin²mi algoritmy resp. metodami - nejΦast∞ji je pou₧φvßn jako jejich dopln∞k, kter² se uplatnφ a₧ v okam₧iku, kdy poΦet paket∙ v n∞kterΘ front∞ p°ekroΦφ urΦitou ·nosnou mez.

Zp∞tnΘ uΦenφ

Jin²m p°φkladem izolovanΘho sm∞rovßnφ je tzv. metoda zp∞tnΘho uΦenφ (backward learning). P°edpoklßdß, ₧e ka₧d² uzel si do sv²ch sm∞rovacφch tabulek pr∙b∞₧n∞ poznamenßvß, ze kterΘho sm∞ru dostßvß pakety, pochßzejφcφ od jin²ch uzl∙. Tφm se postupn∞ "uΦφ", ve kterΘm sm∞ru se tyto uzly nalΘzajφ. Kdy₧ pak sßm pot°ebuje odeslat n∞jak² paket jinΘmu uzlu, vyÜle jej tφm sm∞rem, ze kterΘho d°φve p°ijal paket, pochßzejφcφ od tΘho₧ uzlu.

ProblΘmem je ovÜem vrozen² optimismus metody zp∞tnΘho uΦenφ. Dojde-li k v²padku urΦitΘ p°enosovΘ cesty, kterou se jednotlivΘ uzly ji₧ "nauΦily", v∙bec ji nezaznamenajφ. Prakticky jedin²m mo₧n²m °eÜenφm je pak pravidelnΘ "zapomφnßnφ".

ZßplavovΘ sm∞rovßnφ

ExtrΘmnφ formou izolovanΘho sm∞rovßnφ je tzv. zßplavovΘ sm∞rovßnφ (flooding). P°edpoklßdß, ₧e p°ijat² paket je znovu odeslßn vÜemi sm∞ry krom∞ toho, odkud sßm p°iÜel.

Z°ejmou v²hodou je maximßlnφ robustnost, dφky kterΘ se zßplavovΘ sm∞rovßnφ dokß₧e vyrovnat prakticky s jak²mkoli v²padkem. ZaruΦuje takΘ, ₧e ka₧d² paket je v₧dy doruΦen tou nejkratÜφ mo₧nou cestou. Nev²hodou je ale vznik velkΘho mno₧stvφ duplicitnφch paket∙, kterΘ v²razn∞ zvyÜujφ zßt∞₧ existujφcφch p°enosov²ch cest, a kterΘ je t°eba nßsledn∞ ruÜit.

V praxi se proto pou₧φvß spφÜe tzv. selektivnφ zßplavovΘ sm∞rovßnφ (selective flooding), p°i kterΘm nenφ ka₧d² paket znovu vysφlßn vÜemi sm∞ry, ale pouze t∞mi, kterΘ jsou alespo≥ p°ibli₧n∞ orientovßny ke koneΦnΘmu p°φjemci paketu.

DistribuovanΘ sm∞rovßnφ

Metody izolovanΘho sm∞rovßnφ stavφ na p°edpokladu, ₧e jednotlivΘ uzly nebudou zat∞₧ovat p°enosovΘ cesty vzßjemnou v²m∞nou informacφ o stavu sφt∞. To je ale n∞kdy zbyteΦn∞ p°φsn²m omezenφm.

Pokud jej odstranφme, dostaneme tzv. distribuovanΘ sm∞rovßnφ (distributed routing). To p°edpoklßdß, ₧e jednotlivΘ uzly si pravideln∞ vym∞≥ujφ informace o stavu sφt∞, a podle nich si pak samy volφ p°φsluÜnΘ cesty.

Jakmile umo₧nφme v²m∞nu stavov²ch informacφ mezi jednotliv²mi uzly sφt∞, m∙₧eme vcelku efektivn∞ implementovat distribuovanou verzi algoritmu hledßnφ nejkratÜφch cest v sφti, kter² bychom z°ejm∞ pou₧φvali v p°φpad∞ centralizovanΘho sm∞rovßnφ a jedinΘho sm∞rovacφho centra. NaznaΦme si nynφ myÜlenku tohoto distribuovanΘho algoritmu.

Nejprve si vÜak musφme ujasnit, co vlastn∞ bude pro nßs m∞°φtkem "dΘlky" n∞jakΘ cesty. M∙₧e to b²t nap°φklad poΦet meziuzl∙, kter²mi cesta prochßzφ. Tφm vÜak dßvßme ka₧dΘmu existujφcφmu spoji mezi dv∞ma uzly stejnou jednotkovou vßhu resp. dΘlku. RealistiΦt∞jÜφ je p°i°adit vhodnΘ ohodnocenφ (dΘlku) ka₧dΘmu p°φmΘmu spoji mezi dv∞ma uzly, a dΘlku v²slednΘ cesty pak chßpat jako souΦet dΘlek jejφch jednotliv²ch Φßstφ. DΘlka spoje p°itom m∙₧e odrß₧et jeho p°enosovou rychlost, cenu za jednotku p°enesen²ch dat, zpo₧d∞nφ p°i p°enosu, dΘlku v²stupnφch front apod.

P°edstavme si nynφ sφ¥ vΦetn∞ "dΘlek" jednotliv²ch p°φm²ch spoj∙. Ka₧d² uzel p°edem znß svou "vzdßlenost" od vÜech sv²ch soused∙, a tak si ji ve svΘ sm∞rovacφ tabulce vyznaΦφ. Svou vzdßlenost (dΘlku nejkratÜφ cesty) od ostatnφch uzl∙ vÜak jeÜt∞ neznß, a tak ji zatφm pova₧uje za nekoneΦnou (na obrßzku naznaΦeno vyÜrafovßnφm).

Vlastnφ algoritmus distribuovanΘho v²poΦtu pak probφhß v opakujφcφch se krocφch. V ka₧dΘm z nich se ka₧d² uzel dotß₧e sv²ch bezprost°ednφch soused∙, jakΘ jsou jejich vzdßlenosti od ostatnφch uzl∙, a podle toho si pak odvozuje i svΘ vlastnφ vzdßlenosti od t∞chto uzl∙.

Uva₧me p°φklad uzlu E. Ten se v prvnφm kroku od svΘho souseda C dozvφ, ₧e jeho vzdßlenost od uzlu B je 2. K nφ si uzel E p°ipoΦte svou vzdßlenost od uzlu C, tj. 1, a do svΘ sm∞rovacφ tabulky si poznaΦφ, ₧e cesta do uzlu B vede p°es uzel C a mß dΘlku 3. Zatφm vÜak neznß vÜechny mo₧nΘ cesty do uzlu B, a tak nevφ, zda je to cesta nejkratÜφ. Proto se bude v dalÜφch krocφch znovu ptßt vÜech sv²ch soused∙, zde p°es n∞ nevede cesta jeÜt∞ kratÜφ.

Obecn∞ si ka₧d² uzel v₧dy volφ minimum z toho, co "ji₧ umφ" on sßm (tj. z cesty, kterou ji₧ mß poznaΦenu ve svΘ sm∞rovacφ tabulce), a co "umφ" jeho sousedΘ (samoz°ejm∞ s uvß₧enφm svΘ vzdßlenostφ od t∞chto soused∙). P°φkladem m∙₧e b²t op∞t uzel E, kter² si ji₧ na poΦßtku do svΘ sm∞rovacφ tabulky zanese, ₧e jeho vzdßlenost od uzlu D je 5 (co₧ je dΘlka jejich p°φmΘho spojenφ). Ji₧ v prvnφm kroku vÜak od svΘho souseda C zjistφ, ₧e jeho vzdßlenost od uzlu D je jen 2. Kdy₧ si k tomu p°ipoΦφtß svou vzdßlenost od uzlu C (tj. 1), vyjde mu, ₧e cesta do uzlu D, vedenß p°es uzel C, je kratÜφ. Tuto skuteΦnost si pak poznaΦφ do svΘ sm∞rovacφ tabulky .

Zde by algoritmus mohl konΦit, v praxi se vÜak budou jeho kroky neustßle opakovat, aby obsah sm∞rovacφch tabulek mohl reagovat na pr∙b∞₧nΘ zm∞ny v sφti.

Prßv∞ naznaΦen² algoritmus distribuovanΘho sm∞rovßnφ byl pou₧φvßn v sφti ARPA (zßkladu dneÜnφ sφt∞ Internet), a jednotlivΘ kroky algoritmu zde probφhaly s intervalem 640 milisekund. Ukßzalo se vÜak, ₧e re₧ie je p°eci jen p°φliÜ vysokß - ₧e vzßjemnΘ p°edßvßnφ informacφ mezi sousednφmi uzly (kterΘ vlastn∞ p°edstavuje p°edßvßnφ cel²ch sm∞rovacφch tabulek) ne·nosn∞ zat∞₧ovalo dostupnΘ p°enosovΘ cesty na ·kor "u₧iteΦn²ch" dat. Proto byl uveden² algoritmus distribuovanΘho sm∞rovßnφ v sφti ARPA nahrazen jin²m - o n∞m si ale budeme povφdat pozd∞ji.

 

Transportnφ vrstva

Hlavnφm ·kolem transportnφ vrstvy referenΦnφho modelu ISO/OSI je poskytovat efektivnφ p°enosovΘ slu₧by svΘ bezprost°edn∞ vyÜÜφ (tj. relaΦnφ) vrstv∞. Tyto slu₧by p°itom mohou mφt spojovan² (connection-oriented) i nespojovan² (connectionless) charakter. Stejn² charakter a stejnou podstatu vÜak majφ i slu₧by sφ¥ovΘ vrstvy, kterΘ transportnφ vrstva sama vyu₧φvß. Do znaΦnΘ mφry analogickΘ jsou v obou vrstvßch i mechanismy adresovßnφ a °φzenφ toku dat. Zßkonit∞ se pak nabφzφ otßzka, proΦ je vlastn∞ nutnß samostatnß transportnφ vrstva, kdy₧ alespo≥ na prvnφ pohled nenabφzφ nic principißln∞ jinΘho, ne₧ vrstva sφ¥ovß?

Komunikace dvou koncov²ch ·Φastnφk∙ se transportnφ vrstva z·Φast≥uje jen na obou koncov²ch poΦφtaΦφch, zatφmco v jednotliv²ch meziuzlech se na p°enosu podφlφ jen t°i nejni₧Üφ vrstvy - fyzickß, linkovß a sφ¥ovß. V p°φpad∞ rozlehl²ch sφtφ jsou tyto mezilehlΘ uzly (tΘ₧: uzly IMP) Φasto jen p°epojovacφmi uzly v rßmci komunikaΦnφ podsφt∞, a vyÜÜφ vrstvy u nich nemusφ b²t v∙bec realizovßny. Tak je tomu nap°φklad u v∞tÜiny ve°ejn²ch datov²ch sφtφ, kterΘ jsou provozovßny nejr∙zn∞jÜφmi spojov²mi organizacemi. A zde je prßv∞ kßmen ·razu - je-li komunikaΦnφ podsφ¥ majetkem spojovΘ organizace, musφ u₧ivatelΘ a jejich koncovΘ (hostitelskΘ) poΦφtaΦe vystaΦit s tφm, co jim komunikaΦnφ podsφ¥ prost°ednictvφm svΘ sφ¥ovΘ vrstvy nabφzφ. Cht∞jφ-li n∞co jinΘho - nap°φklad spolehlivou p°enosovou slu₧bu mφsto nespolehlivΘ, spolehliv∞jÜφ mφsto mΘn∞ spolehlivΘ, spojovanou mφsto nespojovanΘ apod. - musφ si vÜe pot°ebnΘ zajistit sami. A to prßv∞ v transportnφ vrstv∞.

K Φemu slou₧φ transportnφ vrstva?

Transportnφ vrstva je tedy v referenΦnφm modelu ISO/OSI p°edevÜφm proto, aby vyÜÜφm vrstvßm poskytovala kvalitn∞jÜφ p°enosovΘ slu₧by, ne₧ jakΘ ve skuteΦnosti dokß₧e poskytovat vrstva sφ¥ovß. SouΦasn∞ s tφm pak m∙₧e u₧ivatele resp. vyÜÜφ vrstvy odsti≥ovat od konkrΘtnφch specifik pou₧φvanΘ komunikaΦnφ podsφt∞, od jejφ p°enosovΘ technologie, a p°edevÜφm pak od vÜech nedokonalostφ podsφt∞. Transportnφ vrstva je tedy vlastn∞ rozhranφm mezi poskytovateli p°enosov²ch slu₧eb (komunikaΦnφ podsφtφ) a jejich u₧ivateli (nejvyÜÜφmi t°emi vrstvami). Je takΘ "poslednφ instancφ", kterß m∙₧e zm∞nit nespojovan² charakter poskytovanΘ p°enosovΘ slu₧by na spojovan² a naopak. To je mo₧nΘ ud∞lat takΘ na ·rovni sφ¥ovΘ vrstvy , nikoli vÜak ji₧ na ·rovni vyÜÜφch vrstev, kterΘ jsou u₧ivateli t∞chto slu₧eb.

Sφ¥ovΘ vs. transportnφ spojenφ

K lepÜφmu pochopenφ ·lohy transportnφ vrstvy nßm pom∙₧e bli₧Üφ p°iblφ₧enφ rozdφlu mezi transportnφm a sφ¥ov²m spojenφm. Transportnφ spojenφ (transport connection) je spojenφ, kterΘ vznikß mezi dv∞ma entitami transportnφ vrstvy (v p°φpad∞ spojovan²ch slu₧eb). Ve skuteΦnosti je vÜak realizovßno prost°ednictvφm ni₧Üφch vrstev, tedy prost°ednictvφm sφ¥ov²ch spojenφ (network connections) jako spojenφ mezi dv∞ma entitami na ·rovni sφ¥ovΘ vrstvy. Standardn∞ se ka₧dΘ jednotlivΘ transportnφ spojenφ realizuje prost°ednictvφm jednoho sφ¥ovΘho spojenφ. Pokud ale transportnφ spojenφ po₧aduje vyÜÜφ p°enosovou kapacitu, ne₧ jakou dokß₧e zajistit jedno sφ¥ovΘ spojenφ, m∙₧e b²t jedno transportnφ spojenφ zajiÜ¥ovßno pomocφ vφce spojenφ sφ¥ov²ch. Transportnφ vrstva se pak starß o rozd∞lenφ p°enßÜen²ch dat mezi jednotlivß sφ¥ovß spojenφ tak, aby to pro vyÜÜφ vrstvy bylo transparentnφ (tj. neviditelnΘ).

M∙₧e vÜak nastat i opaΦn² p°φpad. Pokud je zapot°ebφ vytvo°it vφce transportnφch spojenφ s relativn∞ mal²mi nßroky na p°enosovou kapacitu, m∙₧e b²t v₧dy n∞kolik z nich realizovßno prost°ednictvφm jedinΘho sφ¥ovΘho spojenφ. Takovßto pot°eba nastßvß nap°. p°i pou₧itφ vφce terminßl∙, z nich₧ ka₧d² vy₧aduje samostatnΘ transportnφ spojenφ se vzdßlen²ch poΦφtaΦem. Jsou-li ale tyto terminßly pou₧φvßny spφÜe p°φle₧itostn∞ a jsou-li fyzicky blφzko sebe, m∙₧e b²t dosti neekonomickΘ z°izovat pro ka₧d² z nich samostatnΘ sφ¥ovΘ spojenφ. Pot°ebnΘ p°epφnßnφ (multiplexovßnφ) jednoho sdφlenΘho sφ¥ovΘho spojenφ mezi vφce transportnφch spojenφ pak zajiÜ¥uje op∞t transportnφ vrstva.

Kvalita slu₧eb sφ¥ovΘ vrstvy

Pro transportnφ vrstvu je velmi podstatnΘ, jakou kvalitu m∙₧e p°edpoklßdat u slu₧eb, kterΘ jφ poskytuje sφ¥ovß vrstva. TΘto kvalit∞ pak musφ b²t p°izp∙sobeny p°enosovΘ protokoly transportnφ vrstvy, majφ-li vyÜÜφ vrstvy odsti≥ovat od vÜech specifik a nedokonalostφ komunikaΦnφ podsφt∞ resp. sφ¥ovΘ vrstvy.

Slu₧by sφ¥ovΘ vrstvy se v tΘto souvislosti rozd∞lujφ na t°i kategorie - viz tabulka 35.3. Do kategorie A pat°φ sφ¥ovΘ slu₧by, kterΘ ztrßcφ Φi p°enßÜφ s chybou jen zcela zanedbatelnΘ procento paket∙, a u kter²ch prakticky nedochßzφ k v²padk∙m ji₧ jednou navßzan²ch spojenφ. TakovΘto sφ¥ovΘ slu₧by lze pova₧ovat za (tΘm∞°) dokonalΘ, a transportnφ vrstva pak mß p°i jejich pou₧itφ nejmΘn∞ prßce. Kvality kategorie A dosahujφ sφ¥ovΘ slu₧by n∞kter²ch lokßlnφch sφtφ, zatφmco v p°φpad∞ rozlehl²ch sφtφ je kategorie A vzßcn∞jÜφ ne₧ Üafrßn.

Do kategorie C pak pat°φ vÜechny ostatnφ sφ¥ovΘ slu₧by. Transportnφ vrstva je musφ pova₧ovat za nespolehlivΘ, a pot°ebnou spolehlivost zajistit sama. Protokoly transportnφ vrstvy, kterΘ musφ vyu₧φvat slu₧by tΘto kategorie, jsou pak samoz°ejm∞ neslo₧it∞jÜφ a nejkomplikovan∞jÜφ.

T°φdy transportnφch protokol∙

ReferenΦnφ model ISO/OSI se vyrovnßvß s odliÜnou kvalitou slu₧eb na ·rovni sφ¥ovΘ vrstvy zavedenφ p∞ti r∙zn²ch t°φd p°enosov²ch protokol∙ na ·rovni transportnφ vrstvy (transportnφch protokol∙).

Do t°φdy 0 (TP0, Transport Protocol class 0) pat°φ transportnφ protokoly, kterΘ vyu₧φvajφ sφ¥ovΘ slu₧by kategorie A. Jsou jednoduchou "obßlkou" nad p°φsluÜn²mi sφ¥ov²mi protokoly, a navφc zajiÜ¥ujφ prakticky jen nezbytnΘ navazovßnφ a ruÜenφ transportnφch spojenφ.

 

T°φda 1 (TP1) p°edpoklßdß pou₧itφ sφ¥ov²ch slu₧eb kategorie B, a musφ se tedy um∞t vyrovnat s p°φpadn²mi v²padky spojenφ na ·rovni sφ¥ovΘ vrstvy.

 

T°φda 2 (TP2) p°edpoklßdß op∞t pou₧itφ sφ¥ov²ch slu₧eb kategorie A, tedy takov²ch, kterΘ m∙₧e pova₧ovat za dostateΦn∞ spolehlivΘ - stejn∞ jako v p°φpad∞ t°φdy 0. Transportnφ protokoly t°φdy 2 jsou vÜak navφc schopnΘ zajistit pot°ebnΘ multiplexovßnφ jednoho sφ¥ovΘho spojenφ mezi vφce spojenφ transportnφch (viz v²Üe).

T°φda 3 (TP3) je kombinacφ t°φd 1 a 2. P°edpoklßdß sφ¥ovΘ slu₧by kategorie B, a dokß₧e je multiplexovat mezi vφce spojenφ transportnφch.

 

T°φda 4 (TP4) je urΦena pro pou₧itφ nad sφ¥ov²mi slu₧bami kategorie C. Transportnφ protokoly tΘto t°φdy musφ "poΦφtat s nejhorÜφm", a jsou tedy ze vÜech transportnφch protokol∙ nejslo₧it∞jÜφ a nejkomplikovan∞jÜφ.

 

 RelaΦnφ vrstva

Jak jsme si ji₧ naznaΦili d°φve, Φty°i nejni₧Üφ vrstvy referenΦnφho modelu ISO/OSI jsou zam∞°eny p°edevÜφm na vlastnφ p°enos dat mezi jednotliv²mi uzlov²mi poΦφtaΦi. Ka₧dß z nich p°itom poskytuje "o n∞co vφce" ne₧ vrstva bezprost°edn∞ ni₧Üφ - Φtvrtß (tj. transportnφ) vrstva pak nabφzφ prost°edky pro takovou komunikaci dvou koncov²ch poΦφtaΦ∙ resp. ·Φastnφk∙, kterß je nezßvislß na konkrΘtnφ komunikaΦnφ podsφti, na jejφ topologii i na dalÜφch specifikßch. VyÜÜφ vrstvy referenΦnφho modelu ISO/OSI jsou pak ji₧ orientovßny spφÜe na pot°eby sφ¥ov²ch aplikacφ. Samy vyu₧φvajφ p°enosovΘ slu₧by transportnφ vrstvy, a p°idßvajφ k nim takovΘ funkce a schopnosti, kterΘ by m∞ly b²t u₧iteΦnΘ pro v∞tÜinu aplikacφ. Takov² je tedy smysl existence pßtΘ (relaΦnφ), ÜestΘ (prezentaΦnφ), a vlastn∞ i sedmΘ (aplikaΦnφ) vrstvy ISO/OSI modelu.

ReferenΦnφ model ISO/OSI tedy vychßzφ z p°edstavy, ₧e jednotlivΘ aplikace by m∞ly mφt k dispozici a m∞ly by vyu₧φvat jeÜt∞ dokonalejÜφ a obecn∞jÜφ slu₧by, ne₧ jakΘ nabφzφ transportnφ vrstva. Jejich realizaci pak referenΦnφ model sv∞°uje relaΦnφ (session) a prezentaΦnφ (presentation) vrstv∞. MlΦky tφm ovÜem p°edpoklßdß, ₧e je budou vyu₧φvat vÜechny aplikace, nebo alespo≥ v∞tÜina z nich - jen pak toti₧ mß rozumn² smysl realizovat je pro vÜechny aplikace spoleΦn∞. Existuje ale velkΘ mno₧stvφ aplikacφ, kterΘ tento p°edpoklad nespl≥ujφ, a kterΘ pln∞ vystaΦφ s takov²mi slu₧bami, jakΘ nabφzφ ji₧ transportnφ vrstva. V tomto ohledu nenφ jist∞ bez zajφmavosti, ₧e "konkurenΦnφ" soustava protokol∙ TCP/IP vychßzφ z p°esn∞ opaΦnΘ ·vahy ne₧ referenΦnφ model ISO/OSI - sv²m aplikacφm nabφzφ pouze p°enosovΘ slu₧by na ·rovni transportnφ vrstvy. Pot°ebuje-li n∞kterß aplikace resp. slu₧ba aplikaΦnφ vrstvy slu₧by obecn∞jÜφho charakteru, musφ si je realizovat sama vlastnφmi silami. To je takΘ d∙vod, proΦ soustava protokol∙ TCP/IP, na kterΘ je vybudovßna nap°. sφ¥ ARPANET resp. dneÜnφ Internet, s existencφ relaΦnφ a prezentaΦnφ vrstvy v∙bec nepoΦφtß.

RelaΦnφ vrstvu s takov²mi funkcemi, jakΘ jφ p°isuzuje referenΦnφ model ISO/OSI, nem∞la v dob∞ jeho zavedenφ ₧ßdnß sφ¥ - snad s v²jimkou sφt∞ SNA firmy IBM, kterß mß obdobnΘ funkce realizovßny ve vφce r∙zn²ch vrstvßch.

P°i vytvß°enφ samotnΘho referenΦnφho modelu ISO/OSI byla kolem relaΦnφ vrstvy a jejφch ·kol∙ velkß diskuse. N∞kterΘ alternativnφ nßvrhy, kterΘ se v tΘ dob∞ objevily, s relaΦnφ vrstvou dokonce v∙bec nepoΦφtaly. Nakonec se vÜak relaΦnφ vrstva do referenΦnφho modelu p°eci jen prosadila. Spolu se svou bezprost°edn∞ nad°azenou (tj. prezentaΦnφ vrstvou) vÜak byla a nadßle je relativn∞ nejmΘn∞ propracovanou vrstvou.

Co je vlastn∞ relace?

Pro sprßvnΘ pochopenφ smyslu relaΦnφ vrstvy je dobrΘ si nejprve oz°ejmit onen pon∞kud vßgnφ termφn relace (session). Nejnßzorn∞jÜφ bude z°ejm∞ analogie s telefonnφm hovorem - ten je t°eba nejprve vytoΦit (Φφm₧ vznikß analogie transportnφho spojenφ), a pak je mo₧nΘ jeho prost°ednictvφm vΘst rozhovor (relaci) dvou ·Φastnφk∙.

Relaci tedy m∙₧eme pova₧ovat za spojenφ mezi dv∞ma koncov²mi ·Φastnφky na ·rovni bezprost°edn∞ vyÜÜφ, ne₧ je vrstva transportnφ. Obvykle je ka₧dΘ takovΘto spojenφ (relace) zajiÜ¥ovßno prost°ednictvφm jednoho transportnφho spojenφ (tj. spojenφ na ·rovni transportnφ vrstvy), kterΘ je z°izovßno a ruÜeno p°i z°izovßnφ resp. ruÜenφ relace. Je ovÜem mo₧n² i takov² p°φpad, kdy jedno transportnφ spojenφ zajiÜ¥uje dv∞ nebo vφce po sob∞ jdoucφch relacφ. Pou₧ijeme-li op∞t analogii s telefonnφm hovorem, odpovφdß tato situace tomu, ₧e dva ·Φastnφci telefonnφho hovoru sv∙j rozhovor dokonΦφ, ale mφsto zav∞Üenφ p°edajφ telefon jinΘ dvojici, kterß se m∙₧e zaΦφt bavit o n∞Φem zcela jinΘm - tedy zahßjit nov² rozhovor (relaci).

Podobn∞, jako se transportnφ vrstva sna₧φ zakr²t p°φpadnΘ v²padky spojenφ na ·rovni sφ¥ovΘ vrstvy, m∞la by se i relaΦnφ vrstva dokßzat vyrovnat s p°φpadn²m v²padkem transportnφho spojenφ, a zajistit pokraΦovßnφ relace prost°ednictvφm nov∞ z°φzenΘho transportnφho spojenφ. V naÜφ "telefonnφ" analogii to odpovφdß situaci, kdy v pr∙b∞hu rozhovoru dvou ·Φastnφk∙ je jejich hovor p°eruÜen, a oni si musφ zavolat znovu, aby sv∙j rozhovor dokonΦili.

Zajφmavou odliÜnostφ relace od transportnφho spojenφ je i zp∙sob jejφho ukonΦenφ. V p°φpad∞ transportnφho spojenφ nabφzφ referenΦnφ model ISO/OSI jen prost°edky pro jednostrannΘ direktivnφ ukonΦenφ spojenφ, kterΘmu druhß strana nemß mo₧nost zabrßnit. Na ·rovni relaΦnφ vrstvy se vÜak p°edpoklßdß spφÜe ukonΦenφ na zßklad∞ vzßjemnΘ dohody obou z·Φastn∞n²ch stran. P°esn∞ji na nßvrh jednΘ strany, kter² ale druhß strana mß mo₧nost odmφtnou a zajistit si tak pokraΦovßnφ relace.

╪φzenφ dialogu

Jednφm z hlavnφch ·kol∙ relaΦnφ vrstvy je °φzenφ dialogu mezi ob∞ma koncov²mi ·Φastnφky. Tak jako p°i telefonnφm rozhovoru nenφ mo₧nΘ (Φi alespo≥ sluÜnΘ), aby oba ·Φastnφci mluvili souΦasn∞, existujφ i v poΦφtaΦov²ch sφtφch takovΘ aplikace, kterΘ vy₧adujφ koordinovanΘ st°φdßnφ obou z·Φastn∞n²ch p°i vysφlßnφ (nap°φklad r∙znΘ aplikace transakΦnφho charakteru apod.).

RelaΦnφ vrstva tento po₧adavek zajiÜ¥uje obvykle pomocφ mechanismu p°edßvßnφ pov∞°enφ k p°enosu dat (data token) - vysφlat data smφ v₧dy jen ten, kdo vlastnφ tento pomysln² Ütafetov² kolφk (pov∞°enφ resp. token). RelaΦnφ vrstva p°itom nabφzφ prost°edky, pomocφ kter²ch lze pov∞°enφ p°edat, nebo si jej naopak vy₧ßdat.

Obecn∞ se na ·rovni relaΦnφ vrstvy rozliÜujφ t°i zp∙soby vedenφ dialogu :

 

Mechanismus p°edßvßnφ pov∞°enφ se p°itom t²kß samoz°ejm∞ jen poloduplexnφho dialogu. Zd∙razn∞me si vÜak, ₧e zp∙sob vedenφ dialogu nemß nic spoleΦnΘho s duplexnφm, poloduplexnφm Φi ev. simplexnφm charakterem p°enosovΘho kanßlu. VÜechna spojenφ v referenΦnφm modelu ISO/OSI jsou obecn∞ pln∞ duplexnφ, a umo₧≥ujφ tedy souΦasn² p°enos dat ob∞ma sm∞ry. R∙znΘ aplikace vÜak z r∙zn²ch d∙vod∙ nemusφ tΘto mo₧nosti vyu₧φvat, a po pln∞ duplexnφm spoji mohou vΘst jen poloduplexnφ dialog.

Synchronizace

DalÜφm d∙le₧it²m ·kolem relaΦnφ vrstvy je tzv. synchronizace (synchronization, tΘ₧: checkpointing). K jejφmu pochopenφ si nejprve p°edstavme nßsledujφcφ situaci: p°φjemcem dat v rßmci urΦitΘ relace nech¥ je poΦφtaΦ, kter² si p°ijφmanß data pr∙b∞₧n∞ zapisuje na disk, p°φpadn∞ je ihned tiskne na tiskßrn∞. Dojde-li nßhle k poruÜe disku Φi tiskßrny (nebo jφ nap°. dojde papφr, toner apod.), m∙₧e p°φjemce p°ijφt o urΦit² objem dat, kterΘ jinak v po°ßdku p°ijal (tj. kterΘ byly transportnφ vrstvou bezchybn∞ doruΦeny).

Co je pak zapot°ebφ, je mo₧nost "vrßtit se o kousek zp∞t", a ztracenß data p°enΘst znovu. Tedy znovu dosßhnout pot°ebnΘ synchronizace (vzßjemnΘho souladu). RelaΦnφ vrstva °eÜφ tento problΘm mo₧nostφ vklßdat do p°enßÜen²ch dat kontrolnφ body (synchronization points, checkpoints). P°φjemci pak umo₧≥uje, aby si na vysφlajφcφm vy₧ßdal nßvrat k zadanΘmu kontrolnφmu bodu, a novΘ vyslßnφ t∞ch dat, kterß le₧φ za tφmto bodem. Nenφ ovÜem ·kolem relaΦnφ vrstvy pamatovat si p°enßÜenß data tak, aby byl mo₧n² nßvrat k existujφm kontrolnφm bod∙m. Tato data si musφ "pamatovat" sßm jejich odesilatel, kter² slu₧eb relaΦnφ vrstvy vyu₧φvß. Aby si ale nemusel uchovßvat zbyteΦn∞ velkΘ objemy dat, rozliÜuje relaΦnφ vrstva dva druhy kontrolnφch bod∙ - hlavnφ (major) a vedlejÜφ (minor). Rozdφl mezi nimi je ten, ₧e p°es vedlejÜφ kontrolnφ bod se vracet lze, zatφmco p°es hlavnφ kontrolnφ bod ji₧ nikoli. Pro vysφlajφcφho z toho pak vypl²vß, ₧e si musφ "pamatovat" p°enßÜenß data jen od poslednφho hlavnφho kontrolnφho bodu.

 

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.

Pro zajiÜt∞nφ nezbytn²ch konverzφ na ·rovni prezentaΦnφ vrstvy se nabφzφ dv∞ zßkladnφ mo₧nosti. 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.

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 .

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.

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. 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).

 

AplikaΦnφ vrstva

Bylo by jist∞ noÜenφm d°φvφ do lesa tvrdit, ₧e poΦφtaΦe jsou zde proto, aby d∞laly n∞co u₧iteΦnΘho, a vyjmenovßvat, co vÜechno to m∙₧e b²t. P°esto neuÜkodφ p°esn∞ji vymezit pojem aplikace (aplikaΦnφho programu, aplikaΦnφho procesu, aplikaΦnφ ·lohy) jako tΘ Φßsti programovΘho vybavenφ, kterß zajiÜ¥uje ony "u₧iteΦnΘ funkce", kv∙li kter²m se poΦφtaΦe v∙bec pou₧φvajφ. Protip≤lem je pak zb²vajφcφ Φßst programovΘho vybavenφ, kterß zajiÜ¥uje fungovßnφ poΦφtaΦe jako takovΘho, a jednotliv²m aplikacφm vytvß°φ takovΘ prost°edφ, ve kterΘm mohou ·sp∞Ün∞ pracovat.

Jde-li o samostatn² poΦφtaΦ, jsou aplikacemi jednotlivΘ u₧ivatelskΘ programy, a "zb²vajφcφ" Φßstφ programovΘho vybavenφ je operaΦnφ systΘm, kter² u₧ivatelsk²m program∙m zprost°edkovßvß vyu₧itφ nejr∙zn∞jÜφch zdroj∙ a prost°edk∙ danΘho poΦφtaΦe - disk∙, operaΦnφ pam∞ti, klßvesnice, displeje, dalÜφch V/V za°φzenφ apod. V p°φpad∞ uzl∙ poΦφtaΦovΘ sφt∞ je pak odliÜnost pouze v tom, ₧e sφ¥ov² operaΦnφ systΘm, kter² v sob∞ implementuje jednotlivΘ vrstvy vrstvovΘho sφ¥ovΘho modelu, zprost°edkovßvß aplikacφm navφc jeÜt∞ vÜechno to, co vlastnφ sφ¥ nabφzφ - tedy p°edevÜφm mo₧nost komunikace s aplikacemi, b∞₧φcφmi na jin²ch uzlov²ch poΦφtaΦφch, p°φpadn∞ i p°φstup k technick²m prost°edk∙m jin²ch uzlov²ch poΦφtaΦ∙ atd.

Nynφ ji₧ si m∙₧eme p°esn∞ji vymezit funkci aplikaΦnφ vrstvy (application layer) v rßmci referenΦnφho modelu ISO/OSI. V prvnφm p°iblφ₧enφ lze °φci, ₧e je urΦena k tomu, aby aplikacφm poskytovala p°φstup do prost°edφ sφt∞ na bßzi ISO/OSI modelu, tedy aby fungovala jako jakΘsi okno (Φi brßna) mezi aplikacemi na r∙zn²ch uzlov²ch poΦφtaΦφch, kterΘ si cht∞jφ vzßjemn∞ vym∞≥ovat n∞jakΘ informace.

P°edstavy o podstat∞ a mechanismu fungovßnφ aplikaΦnφ vrstvy se vÜak v pr∙b∞hu existence referenΦnφho modelu ISO/OSI vyvφjely a znaΦn∞ zp°es≥ovaly. P∙vodnφ p°edstavu, kterß se objevila v prvnφ verzi referenΦnφho modelu. Zde se p°edpoklßdalo, ₧e jednotlivΘ u₧ivatelskΘ aplikace budou zasahovat a₧ do vlastnφ aplikaΦnφ vrstvy - p°esn∞ji: ty Φßsti aplikacφ, kterΘ se bezprost°edn∞ t²kajφ sφt∞ a jejφho vyu₧itφ, budou p°φmou souΦßstφ aplikaΦnφ vrstvy (v terminologii ISO/OSI modelu se tyto Φßsti aplikacφ oznaΦovaly jako aplikaΦnφ entity, resp. application entities). Zb²vajφcφ Φßsti aplikacφ ji₧ nebyly pova₧ovßny za souΦßst "sφ¥ovΘho prost°edφ ISO/OSI modelu".

Tato p°edstava znamenala, ₧e jednotlivΘ aplikace (resp. ty jejich Φßsti, kterΘ tvo°ily aplikaΦnφ entity) si musely samy zajiÜ¥ovat vÜechny slu₧by, pot°ebnΘ na ·rovni aplikaΦnφ vrstvy (a to pomocφ slu₧eb, poskytovan²ch resp. zprost°edkovan²ch prezentaΦnφ vrstvou). ReferenΦnφ model ISO/OSI tyto slu₧by na ·rovni aplikaΦnφ vrstvy nijak podrobn∞ji nespecifikoval, pouze je vymezil jako "takovΘ, kterΘ jsou pot°eba pro vzßjemnou komunikaci mezi otev°en²mi systΘmy, a nejsou zajiÜ¥ovßny na ni₧Üφch ·rovnφch". Nespecifikoval samoz°ejm∞ ani ₧ßdnΘ protokoly, prost°ednictvφm kter²ch by slu₧by aplikaΦnφ vrstvy m∞ly b²t realizovßny. JednotlivΘ protokoly pro aplikaΦnφ vrstvu vznikaly a₧ dodateΦn∞, v pr∙b∞hu prßce na implementaci sφ¥ov²ch aplikacφ r∙znΘho typu. P°itom se ale ukßzalo, ₧e v∞tÜina t∞chto aplikacφ mß mnoho spoleΦnΘho, a tudφ₧ se nevyplatφ, aby si ka₧dß z nich v₧dy znovu implementovala to, co na ·rovni aplikaΦnφ vrstvy pot°ebuje. Proto se p∙vodnφ p°edstava referenΦnφho modelu zm∞nila: zajiÜt∞nφ slu₧eb na ·rovni aplikaΦnφ vrstvy bylo sv∞°eno aplikaΦnφm entitßm, kterΘ ale ji₧ nejsou souΦßstφ jednotliv²ch aplikacφ, ale jsou naopak souΦßstφ sφ¥ovΘho programovΘho vybavenφ.

Diferenciace na ·rovni aplikaΦnφ vrstvy pak pokraΦovala jeÜt∞ dßle. Zjistilo se toti₧, ₧e takto koncipovanΘ aplikaΦnφ entity je nejv²hodn∞jÜφ sestavovat z jeÜt∞ menÜφch stavebnφch blok∙, kterΘ zajiÜ¥ujφ jednotlivΘ dφlΦφ funkce resp. slu₧by. Tyto stavebnφ bloky se v souΦasnΘ terminologii referenΦnφho modelu ISO/OSI oznaΦujφ jako prvky ASE (Application Service Elements). Jsou v zßsad∞ dvojφho druhu: takovΘ, kterΘ zajiÜ¥ujφ slu₧by, pot°ebnΘ pro podporu aplikacφ r∙zn²ch typ∙ (pak jde o tzv. prvky CASE, Common Application Service Element), a koneΦn∞ takovΘ, kterΘ realizujφ specifickΘ slu₧by, pot°ebnΘ jen pro jeden konkrΘtnφ typ aplikacφ (oznaΦovanΘ jako prvky SASE, Specific Application Service Element).

Vezm∞me si jako p°φklad otßzku vzßjemnΘ komunikace dvou aplikacφ. Ta m∙₧e b²t realizovßna bu∩ jako spojovanß, prost°ednictvφm (logickΘho) spojenφ mezi dv∞ma aplikaΦnφmi entitami, nebo jako nespojovanß, zajiÜ¥ovanß jednoduchou v²m∞nnou zprßv. LogickΘ spojenφ na ·rovni aplikaΦnφ vrstvy, v terminologii ISO/OSI modelu oznaΦovanΘ jako asociace (association), vÜak musφ n∞kdo navßzat, udr₧ovat jej, a poslΘze zase zruÜit. To mß na starosti jeden z mo₧n²ch prvk∙ ASE, konkrΘtn∞ ACSE (Association Control Service Element), kter² pat°φ mezi "podp∙rnΘ" prvky ASE, tj. mezi prvky CASE.

Nespojovanß komunikace na ·rovni aplikaΦnφ vrstvy, realizovanß jako v²m∞na krßtk²ch zprßv, mß vesm∞s charakter vzdßlenΘho volßnφ procedur (remote procedure call, v terminologii ISO: vzdßlen²ch operacφ, remote operation), p°i kterΘm p°enßÜenΘ zprßvy ₧ßdajφ o provedenφ urΦitΘ akce (provedenφ resp. volßnφ procedury), resp. vracφ jejφ v²sledky. Pro zajiÜt∞nφ takovΘhoto zp∙sobu komunikace je pak urΦen jin² druh podp∙rnΘho prvku (prvku CASE), a to ROSE (Remote Operations Service Element).

DalÜφm p°φkladem podp∙rnΘho prvku je prvek CCR (Commitment, Concurrency and Recovery), kter² je urΦen p°edevÜφm pro koordinaci vzßjemnΘ souΦinnosti vφce uzl∙ a pro implementaci transakΦnφho zpracovßnφ v sφtφch. Umo₧≥uje dosßhnout toho, aby posloupnost operacφ, vy₧ßdanß jednφm uzlem a provßd∞nß na jinΘm uzlu, se v₧dy provedla bu∩to celß, nebo se neprovedla v∙bec, bez ohledu na p°φpadnΘ v²padky, poruchy apod.

Mezi specifickΘ aplikaΦnφ slu₧by, kterΘ majφ na starosti prvky CASE, pat°φ nap°φklad p°enos soubor∙, elektronickß poÜta, vzdßlenΘ terminßlovΘ relace apod. ReferenΦnφ model ISO/OSI p°itom p°edpoklßdß, ₧e tyto slu₧by budou implementovßny tak, aby se v∙Φi vlastnφm aplikaΦnφm proces∙m "tvß°ily" v₧dy stejn∞, jako jedinΘ virtußlnφ za°φzenφ (virtual device). Nejmarkantn∞jÜφ je tento p°φstup na zp∙sobu, jak²m se model ISO/OSI vyrovnßvß se znaΦnou r∙znorodostφ pou₧φvan²ch terminßl∙, liÜφcφch se sv²mi parametry, zp∙sobem ovlßdßnφ apod. Mechanismus, umo₧≥ujφcφ terminßlu jednoho uzlovΘho poΦφtaΦe vystupovat v roli (lokßlnφho) terminßlu jinΘho poΦφtaΦe, poΦφtß s existencφ tzv. virtußlnφho terminßlu. Jde vlastn∞ o abstrakci, o hypotetick² terminßl, kter² nemusφ ve skuteΦnosti v∙bec existovat, ale kter² se v₧dy chovß stejn∞. Uzlov² poΦφtaΦ pak m∙₧e p°edpoklßdat, ₧e pracuje v₧dy jen s tφmto jedin²m typem (virtußlnφho) terminßlu, zatφmco ve skuteΦnosti pracuje s terminßlem jin²m. Pot°ebnΘ p°izp∙sobenφ mezi virtußlnφm terminßlem a skuteΦn∞ pou₧φvan²m terminßlem pak zajiÜ¥uje a₧ konkrΘtnφ aplikaΦnφ proces, kter² "sv∙j" terminßl dob°e znß a dokß₧e ovlßdat. Podobn∞ je tomu i v p°φpad∞ p°enosu soubor∙ mezi odliÜn²mi a vzßjemn∞ nesluΦiteln²mi souborov²mi systΘmy (kterΘ se mohou liÜit nap°φklad ve vnit°nφ organizaci soubor∙ a adresß°∙, v konvencφch pro jejich jmΘna apod.). Zda se op∞t zavßdφ spoleΦn² "mezitvar" v podob∞ virtußlnφho systΘmu soubor∙, se kter²m aplikaΦnφ entity dokß₧φ pracovat.

Pokud sφ¥ovß aplikace pot°ebuje jinΘ slu₧by, ne₧ jakΘ jsou jφ nabφzeny v souvislosti s p°edstavou virtußlnφho za°φzenφ, musφ si je sama podle sv²ch konkrΘtnφch pot°eb upravit. V rßmci v∞tÜiny aplikacφ lze proto jeÜt∞ vymezit vrstvu, kterß zajiÜ¥uje pot°ebnΘ p°izp∙sobenφ resp. zamapovßnφ virtußlnφho za°φzenφ z/do skuteΦnΘho - tedy nap°. "mapovßnφ" virtußlnφho terminßlu do konkrΘtnφho reßlnΘho terminßlu, "mapovßnφ" reßlnΘho systΘmu soubor∙ do virtußlnφho apod. V terminologii ISO/OSI modelu se tato vrstva oznaΦuje jako (u₧ivatelsk²) prvek UE (User Element) .

Pro specifickΘ slu₧by na ·rovni aplikaΦnφ vrstvy (poskytovanΘ prvky SASE, viz v²Üe), byly a jsou postupn∞ vytvß°eny pot°ebnΘ protokoly. V∞tÜina z nich dnes ji₧ mß formu mezinßrodnφch standard∙ resp. norem (IS, International Standards), jinΘ jsou zatφm jeÜt∞ ve stßdiu nßvrh∙ norem (DIS, Draft International Standard). Jejich struΦn² p°ehled obsahuje tabulka 38.4., kterß uvßdφ takΘ obdobn∞ zam∞°enΘ aplikaΦnφ protokoly v "konkurenΦnφ" soustav∞ protokol∙ TCP/IP.