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