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

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

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

Transportnφ protokoly TCP/IP - I.

P°i srovnßvßnφ celkovΘ filosofie sφ¥ovΘho modelu TCP/IP a referenΦnφho modelu ISO/OSI jsme si ji₧ d°φve uvedli, ₧e jednou z jejich odliÜnostφ je po₧adavek na spolehlivost p°enosov²ch slu₧eb na jednotliv²ch ·rovnφch. ReferenΦnφ model ISO/OSI (alespo≥ ve svΘ p∙vodnφ koncepci) je orientovßn p°edevÜφm na spojovanΘ slu₧by spolehlivΘho charakteru, a p°edpoklßdß tudφ₧ za°azenφ pot°ebn²ch mechanism∙ pro zajiÜt∞nφ spolehlivosti ji₧ do vrstvy sφ¥ovΘ. Naproti tomu TCP/IP model pova₧uje zajiÜt∞nφ spolehlivosti za ·kol koncov²ch ·Φastnφk∙, a za°azuje proto p°φsluÜnΘ mechanismy a₧ do vrstvy transportnφ.

Pro sprßvnΘ pochopenφ podstaty celΘho problΘmu je t°eba si uv∞domit, ₧e realizace spolehliv²ch slu₧eb je spojena s v∞tÜφ re₧iφ, ne₧ jakou jsou zatφ₧eny nespolehlivΘ p°enosovΘ slu₧by. Nejde p°itom jen o v∞tÜφ v²poΦetnφ nßroΦnost, ale takΘ o v∞tÜφ nßroky na p°enosovou kapacitu. Spolehlivost p°enos∙ po ne zcela spolehliv²ch p°enosov²ch cestßch se toti₧ musφ zajiÜ¥ovat vhodnou formou potvrzovßnφ (viz 30. dφl serißlu), co₧ je ale v₧dy spojeno s p°enosem urΦitΘho objemu slu₧ebnφch dat, ke kterΘmu samoz°ejm∞ dochßzφ na ·kor "u₧iteΦn²ch dat".

Jestli₧e tedy TCP/IP model po₧aduje na sφ¥ovΘ vrstv∞ pouze nespolehlivou p°enosovou slu₧bu (realizovanou protokolem IP, viz minul² dφl), umo₧≥uje tφm souΦasn∞, aby sφ¥ovß vrstva pracovala s menÜφ re₧iφ, a tudφ₧ rychleji.

Spolehlivost vs. rychlost

Pova₧uje-li sφ¥ov² model TCP/IP otßzku zajiÜt∞nφ spolehlivosti za ·kol koncov²ch ·Φastnφk∙ komunikace, znamenß to, ₧e p°φsluÜnΘ mechanismy pro jejφ zajiÜt∞nφ musφ b²t implementovßny ve vyÜÜφ vrstv∞, ne₧ je vrstva sφ¥ovß. Otßzkou ovÜem je, zda to skuteΦn∞ musφ b²t ji₧ vrstva bezprost°edn∞ vyÜÜφ, tedy vrstva transportnφ - jak jsme dosud p°edpoklßdali.

Za°adit pot°ebnΘ mechanismy pro zajiÜt∞nφ spolehlivosti do transportnφ vrstvy mß ΦetnΘ v²hody. P°edevÜφm pak tu, ₧e tyto prost°edky mohou b²t v transportnφ vrstv∞ realizovßny prßv∞ jednou, a sdφleny vÜemi entitami aplikaΦnφ vrstvy. Pokud bychom naopak tyto prost°edky umφstili a₧ do vrstvy aplikaΦnφ, vlastn∞ by to znamenalo, ₧e by si je musela ka₧dß entita aplikaΦnφ vrstvy zajiÜ¥ovat v₧dy znovu a sama.

Mohlo by se tedy zdßt, ₧e vÜe hovo°φ ve prosp∞ch prvnφ mo₧nosti. Ale i ta druhß m∙₧e mφt svΘ opodstatn∞nφ - existujφ toti₧ i takovΘ druhy aplikacφ, kterΘ bu∩ v∙bec nepot°ebujφ spolehlivΘ p°enosovΘ slu₧by, nebo naopak nepova₧ujφ "spolehlivost" na ·rovni transportnφ vrstvy za dostateΦnou, a tak si ji musφ zajiÜ¥ovat samy a znovu. Jinou motivacφ mohou b²t otßzky efektivnosti - n∞kterΘ aplikace si dokß₧φ zajistit samy takovou mφru spolehlivosti, jakou skuteΦn∞ pot°ebujφ, a vykazujφ p°itom menÜφ re₧ii, ne₧ jakou na zajiÜt∞nφ "·plnΘ" spolehlivosti vy₧aduje vrstva transportnφ. P°φkladem takovΘhoto druhu aplikacφ m∙₧e b²t distribuovan² systΘm soubor∙ NFS (Network File System) firmy Sun, velmi oblφben² a znaΦn∞ rozÜφ°en² v prost°edφ operaΦnφho systΘmu Unix. Umo₧≥uje, aby jeden uzlov² poΦφtaΦ zcela transparentn∞ sdφlel soubory jinΘho uzlovΘho poΦφtaΦe, tedy aby k nim p°istupoval naprosto stejn∞, jako ke sv²m vlastnφm soubor∙m. Nemß-li ale dochßzet k v²razn∞jÜφm Φasov²m rozdφl∙m p°i p°φstupu k lokßlnφm a vzdßlen²m soubor∙m, musφ systΘm NFS pracovat maximßln∞ rychle. Nem∙₧e si proto dovolit pou₧φvat spolehlivΘ, zato ale "pomalΘ" p°enosovΘ slu₧by na ·rovni transportnφ vrstvy.

Ka₧d² si m∙₧e vybrat sßm

Obrßzek 54.1.
Obr. 54.1.: Vyu₧itφ transportnφch protokol∙ n∞kter²mi protokoly aplikaΦnφ vrstvy TCP/IP
Sφ¥ov² model TCP/IP vychßzφ vst°φc ob∞ma skupinßm aplikacφ - jak t∞m, kterΘ na transportnφ vrstv∞ po₧adujφ spolehliv² p°enos, tak i t∞m, kterΘ jej cht∞jφ mφt co mo₧nß nejrychlejÜφ. SouΦßstφ rodiny protokol∙ TCP/IP jsou toti₧ dva alternativnφ protokoly pro transportnφ vrstvu: protokol TCP (Transmission Control Protocol), kter² zajiÜ¥uje spolehlivou p°enosovou slu₧bu, a protokol UDP (User Datagram Protocol), kter² naopak nabφzφ slu₧bu nespolehlivou, s v²razn∞ ni₧Üφ re₧iφ, a tudφ₧ rychlejÜφ. JednotlivΘ protokoly aplikaΦnφ vrstvy si pak mezi ob∞ma protokoly transportnφ vrstvy mohou vybrat ten, kter² jim lΘpe vyhovuje, p°φpadn∞ vyu₧φvat oba - n∞kolik konkrΘtnφch p°φklad∙ naznaΦuje obrßzek 54.1.

Spojovan² vs. nespojovan² charakter transportnφch slu₧eb

Spolehlivost a nespolehlivost nenφ jedin²m rozdφlem mezi ob∞ma protokoly transportnφ vrstvy. Protokol TCP mß spojovan² (connection-oriented) charakter, kter² pracuje s virtußlnφmi okruhy (virtual circuits), a p°ed vlastnφm p°enosem p°edpoklßdß navßzßnφ spojenφ mezi odesilatelem a p°φjemcem. Naproti tomu protokol UDP mß nespojovan² (connectionless) charakter, a ka₧d² jednotliv² blok dat, oznaΦovan² v tomto p°φpad jako u₧ivatelsk² datagram (user datagram) p°enßÜφ samostatn∞ a nezßvisle na ostatnφch datagramech.

Protokol UDP tak vlastn∞ poskytuje na ·rovni transportnφ vrstvy slu₧by stejnΘho charakteru, jakΘ na ·rovni vrstvy sφ¥ovΘ poskytuje protokol IP (viz minule), tedy nespolehlivΘ a nespojovanΘ slu₧by. Naproti tomu protokol TCP implementuje pomocφ nespolehliv²ch a nespojovan²ch slu₧eb na ·rovni sφ¥ovΘ vrstvy spolehlivΘ a spojovanΘ transportnφ slu₧by. Jak jsme si ji₧ naznaΦili v²Üe, Φinφ tak s pomocφ mechanismu potvrzovßnφ (acknowledgement), a tudφ₧ i s nezanedbatelnou re₧iφ.

Proud vs. blokov∞ orientovan² p°enos

DalÜφ odliÜnostφ mezi ob∞ma protokoly je pak takΘ forma, jakou svΘ p°enosovΘ slu₧by nabφzφ. Protokol UDP koncipuje svou p°enosovou slu₧bu jako p°enos cel²ch blok∙ dat. OΦekßvß tedy, ₧e entita aplikaΦnφ vrstvy, kterß chce odeslat n∞jakß data, je sama sestavφ do bloku, a ten pak protokolu UDP p°edß jako jeden celek. Protokol UDP tento blok vezme, umφstφ jej do svΘho u₧ivatelskΘho datagramu (viz v²Üe), a p°enese op∞t jako jeden celek. Naproti tomu protokol TCP koncipuje svou p°enosovou slu₧bu jako tzv. proud (stream) jednotliv²ch byt∙ (p°esn∞ji: osmic byt∙, tzv. oktet∙). Odesilatel na jednom uzlovΘm poΦφtaΦi postupn∞ p°edßvß protokolu TCP jednotlivΘ byty (oktety), a obdobn∞ postupuje i p°φjemce, kter² si je na druhΘ stran∞ zase postupn∞ odebφrß. VeÜkerΘ Φlen∞nφ p°enßÜen²ch dat na bloky a p°enos cel²ch t∞chto blok∙ zajiÜ¥uje protokol TCP pln∞ transparentn∞. U₧ivatelΘ p°enosov²ch slu₧eb protokolu TCP tak zφskßvajφ iluzi, ₧e pracujφ se slu₧bou, kterß p°enßÜφ individußln∞ jednotlivΘ byty (oktety).

Stavov² vs. bezestavov² zp∙sob komunikace

Se spojovan²m, resp. nespojovan²m charakterem protokol∙ TCP a UDP ·zce souvisφ jeÜt∞ i dalÜφ aspekt, kter² je velmi podstatn² pro protokoly aplikaΦnφ vrstvy a pro jejich volbu mezi ob∞ma nabφzen²mi transportnφmi protokoly.

Ka₧d² u₧ivatelsk² datagram (user datagram) - jak je oznaΦovßn blok dat, p°enßÜen² na ·rovni transportnφ vrstvy protokolem UDP - je pova₧ovßn za samostatn² celek, a vzhledem k nespojovanΘmu charakteru protokolu UDP je takΘ tak p°enßÜen - samostatn∞, nezßvisle na jin²ch u₧ivatelsk²ch datagramech, a bez p°edchozφho navßzßnφ spojenφ mezi p°φjemcem a odesilatelem. Stejn∞ tak i p°φjemce chßpe u₧ivatelsk² datagram jako jedin² celek, a ne jako souΦßst v∞tÜφho celku. Tomu pak odpovφdß i skuteΦnost, ₧e p°φjemce nem∞nφ sv∙j stav v zßvislosti na pr∙b∞hu komunikace - po p°ijetφ datagramu se nachßzφ ve stejnΘm stavu, v jakΘm byl p°ed jeho p°ijetφm. Jde tedy o zp∙sob p°enosu, kter² je mo₧nΘ charakterizovat jako bezestavov² (stateless).

Naproti tomu ka₧dß spojovanß slu₧ba mß v₧dy nutn∞ stavov² charakter, nebo¥ ji₧ pouh²m navßzßnφm spojenφ se p°φjemce dostßvß do jinΘho stavu, ne₧ v jakΘm byl p°edtφm.

Bezestavov² zp∙sob komunikace je vzhledem ke svΘ podstat∞ dob°e odoln² v∙Φi r∙zn²m nestandardnφm situacφm, p°edevÜφm pak v²padk∙m a ztrßtßm dat. Dojde-li nap°φklad k v²padku p°enosov²ch cest Φi k v²padku p°φjemce (a je nutnΘ jej znovu spustit, provΘst tzv. reboot), nejsou nutnß ₧ßdnß specifickß opat°enφ pro obnovu p∙vodnφho stavu - v p°enosu dat se jednoduÜe pokraΦuje dßl. Naproti tomu v p°φpad∞ stavovΘho zp∙sobu komunikace mohou b²t urΦitΘ nßpravnΘ akce zapot°ebφ, mß-li b²t zachovßna konzistence prßv∞ probφhajφcφch Φinnostφ, a znovu navßzßno p°eruÜenΘ spojenφ.

S tφm pak takΘ souvisφ i otßzka spolehlivosti - zatφmco bezestavovΘ protokoly si mohou dovolit b²t nespolehlivΘ (jako UDP), pro jejich stavovΘ prot∞jÜky je v²hodn∞jÜφ pracovat s dostateΦnou mφrou spolehlivosti, a tedy nabφzet spolehlivΘ p°enosovΘ slu₧by (jako protokol TCP).


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