VyÜlo v t²denφku: COMPUTERWORLD
╚φslo:25/93
RoΦnφk:1993
Rubrika/kategorie: Co je Φφm ... v poΦφtaΦov²ch sφtφch
Dφl:67

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 (67):

Telnet - I.

V p°edchozφch dvou dφlech jsme si vysv∞tlili podstatu terminßlov²ch relacφ a vzdßlenΘho p°ihlaÜovßnφ v poΦφtaΦov²ch sφtφch, a poslΘze narazili na nejvß₧n∞jÜφ problΘm kolem jejich praktickΘ implementace - na velkou r∙znorodost pou₧φvan²ch terminßl∙. Dnes se ji₧ m∙₧eme zaΦφt podrobn∞ji zab²vat protokolem TELNET, kter² mß v sφ¥ovΘm modelu TCP/IP realizaci vzdßlen²ch terminßlov²ch relacφ na starosti.

Ka₧d² aplikaΦnφ protokol, kter² chce realizovat vzdßlenΘ terminßlovΘ relace v prost°edφ poΦφtaΦov²ch sφtφ, musφ p°edpoklßdat urΦitou mφru distribuovanosti svΘ vlastnφ implementace - jak jsme si ostatn∞ ji₧ naznaΦovali v 65. dφlu, kde jsme se nad realizacφ vzdßlen²ch terminßlov²ch relacφ zam²Üleli poprvΘ. Snad neuÜkodφ si tuto p°edstavu jeÜt∞ jednou o₧ivit, tentokrßte ji₧ na konkrΘtnφm p°φkladu protokolu TELNETu.

TELNET klient a server

Protokol TELNET p°edpoklßdß vzßjemnou spoluprßci dvou sv²ch slo₧ek, jejich₧ role a postavenφ vychßzφ z architektury klient-server: jedna slo₧ka, provozovanß na "lokßlnφm" poΦφtaΦi (tj. na tom, ke kterΘmu je fyzicky p°ipojen u₧ivatel∙v terminßl) je oznaΦovßna jako TELNET klient, zatφmco druhß slo₧ka, na "vzdßlenΘm" poΦφtaΦi (ke kterΘmu se prost°ednictvφm vzdßlenΘ terminßlovΘ relace u₧ivatel p°ihlaÜuje) je v postavenφ TELNET serveru. ┌loha obou slo₧ek p°itom odpovφdß p°edstav∞, kterou jsme si zavedli v 65. dφlu: slo₧ka v roli klienta p°ijφmß vÜechny vstupy od terminßlu, a odesφlß je po sφti svΘ partnerskΘ slo₧ce v roli serveru na "vzdßlenΘm" poΦφtaΦi. Tato slo₧ka pak p°φsluÜnΘ vstupy "podstrkuje" svΘmu okolφ tak, jako kdyby Ülo o vstupy terminßlu, p°ipojenΘho k mφstnφmu vzdßlenΘmu poΦφtaΦi. Filosofie protokolu TELNET p°itom p°edpoklßdß, ₧e ob∞ slo₧ky majφ formu aplikaΦnφch program∙, a nejsou tedy "pevn∞ zabudovßny" v operaΦnφm systΘmu - jak by asi bylo, alespo≥ u slo₧ky v roli serveru, z°ejm∞ nejp°irozen∞jÜφ. V²hodou je toti₧ mnohem v∞tÜφ flexibilita a snadnost provßd∞nφ p°φpadn²ch zm∞n, nev²hodou pak menÜφ efektivnost. Uv∞domme si toti₧, ₧e p°i takovΘmto °eÜenφ ka₧d² jednotliv² znak prochßzφ celkem p∞tkrßt "skrz" cel² operaΦnφ systΘm: poprvΘ ne₧ se dostane od terminßlu ke klientskΘ slo₧ce, podruhΘ kdy₧ jej tato slo₧ka odesφlß na vzdßlen² poΦφtaΦ, pot°etφ kdy₧ projde operaΦnφm systΘmem na tomto vzdßlenΘm poΦφtaΦi a₧ ke slo₧ce v roli serveru, poΦtvrtΘ prochßzφ operaΦnφm systΘmem, kdy₧ jej serverovß slo₧ka "podstrkuje" zp∞t svΘmu operaΦnφmu systΘmu, a koneΦn∞ popßtΘ, kdy₧ jej tento operaΦnφ systΘm p°edßvß jinΘ aplikaΦnφ ·loze, kterß je koneΦn²m p°φjemcem vstupu. Analogicky pro vÜechny v²stupy, kterΘ cestujφ opaΦn²m sm∞rem.

Dßle je pro toto °eÜenφ nutnΘ, aby operaΦnφ systΘm (alespo≥ na stran∞ serveru) vychßzel vst°φc v²Üe citovanΘ mo₧nosti "podstrkovßnφ" vstup∙, a poskytoval za tφmto ·Φelem vhodn² mechanismus. Zde velmi zßle₧φ na konkrΘtnφm prost°edφ, ve kterΘm je protokol TELNET implementovßn. OperaΦnφ systΘm Unix s takovouto mo₧nostφ poΦφtß, a nabφzφ k vyu₧itφ zvlßÜtnφ vstupn∞/v²stupnφ body, na kterΘ se nejr∙zn∞jÜφ programy mohou napojit, a napodobovat chovßnφ skuteΦnΘho terminßlu. V AT&T Unixu se t∞mto vstupnφm bod∙m do operaΦnφho systΘmu °φkß pseudoterminßly, zatφmco v BSD Unixu jsou oznaΦovßny jako pseudo tty.

Za zmφnku takΘ stojφ konkrΘtnφ zp∙sob implementace obou slo₧ek v prost°edφ Unixu. Slo₧ka v roli klienta je b∞₧n²m aplikaΦnφm programem, kter² si u₧ivatel sßm a explicitn∞ spouÜtφ a₧ v okam₧iku, kdy to skuteΦn∞ pot°ebuje. Naproti tomu slo₧ka v roli serveru mß postavenφ systΘmovΘho procesu - tzv. TELNET dΘmona (viz 64. dφl), oznaΦovanΘho tΘ₧: TELNETD.

Nejen Unixem ₧iv je TELNET

Protokol TELNET je relativn∞ velmi jednoduch²m protokolem, kter² se zßm∞rn∞ sna₧φ nevßzat na vlastnosti, schopnosti a slu₧by urΦitΘho konkrΘtnφho prost°edφ. Uka₧me si smysl tohoto poΦφnßnφ na p°φkladu: kdy₧ se u₧ivatel p°ihlßsφ k prßci v operaΦnφm systΘmu urΦitΘho poΦφtaΦe (tj. provede tzv. login), a potΘ si prost°ednictvφm TELNET-u otev°e vzdßlenou terminßlovou relaci s jin²m poΦφtaΦem, musφ se na n∞m znovu sßm p°ihlßsit (op∞t provΘst tzv. login). Bylo by sice mo₧nΘ, aby za n∞j toto p°ihlßÜenφ provedl TELNET automaticky. Znamenalo by to ovÜem, ₧e by musel v∞d∞t jak - musel by znßt konkrΘtnφ konvence pro p°ihlaÜovßnφ a zadßvßnφ hesel, zp∙sob uchovßvßnφ informacφ o u₧ivatelφch a jejich heslech a mnoho dalÜφch konkrΘtnφch informacφ, kterΘ se v r∙zn²ch systΘmech mohou v²razn∞ liÜit.

Dφky tomu, ₧e se TELNET o automatickΘ p°ihlaÜovßnφ nesna₧φ, m∙₧e b²t implementovßn v prost°edφ r∙zn²ch operaΦnφch systΘm∙, a to dokonce i takov²ch, kterΘ pojem terminßlov²ch relacφ a u₧ivatelsk²ch jmen a ·Φt∙ v∙bec neznajφ. Nap°φklad je mo₧nΘ (a v souΦasnΘ dob∞ i velmi ΦastΘ), aby klientskß slo₧ka protokolu TELNET byla provozovßna jako b∞₧n² aplikaΦnφ program na osobnφm poΦφtaΦi v prost°edφ operaΦnφho systΘmu MS DOS, zatφmco slo₧ka v roli serveru b∞₧ela na UnixovskΘm poΦφtaΦi. U₧ivatel osobnφho poΦφtaΦe si pak m∙₧e z°izovat vzdßlenΘ terminßlovΘ relace z prost°edφ DOSu do prost°edφ Unixu.

S implementacφ klientskΘ slo₧ky protokolu TELNET se dnes m∙₧eme setkat v prost°edφ snad ka₧dΘho operaΦnφho systΘmu, zdaleka ne jen MS DOSu, a ze vÜech t∞chto operaΦnφch systΘm∙ je pak mo₧nΘ si z°izovat vzdßlenΘ terminßlovΘ relace s Unixovsk²mi poΦφtaΦi. ZajφmavΘ je, zda to platφ i obrßcen∞ - tedy zda i slo₧ka v roli serveru m∙₧e b²t implementovßna v jinΘm prost°edφ ne₧ v Unixu, a zda je tedy mo₧nΘ si prost°ednictvφm protokolu TELNET z°izovat vzdßlenΘ terminßlovΘ relace i s jin²mi, ne₧ Unixovsk²mi poΦφtaΦi. Odpov∞∩ je samoz°ejm∞ kladnß, jen p°φsluÜn²ch implementacφ TELNET server∙ je zatφm pon∞kud mΘn∞.

TELNET server na PC

Existujφ dokonce i implementace serverov²ch slo₧ek protokolu TELNET pro operaΦnφ systΘm MS DOS poΦφtaΦ∙ PC (dokonce z kategorie public domain). To je pon∞kud pikantnφ, proto₧e MS DOS je jedno·lohov² a jednou₧ivatelsk² operaΦnφ systΘm, kter² pojem terminßlovΘ relace v∙bec neznß. Z°φzenφ vzdßlenΘ terminßlovΘ relace s poΦφtaΦem PC (pod MS DOSem) je pak vlastn∞ formou dßlkovΘho ovlßdßnφ (remote control) poΦφtaΦe PC jako celku. Pro pot°eby dßlkovΘho ovlßdßnφ poΦφtaΦ∙ PC dnes existuje celß °ada komerΦnφch i public domain program∙, kterΘ ale vesm∞s vy₧adujφ vlastnφ, specifickΘ klientskΘ slo₧ky. V²hodou tohoto °eÜenφ (tj. TELNET serveru na poΦφtaΦi PC) je mo₧nost vyu₧φt standardnφ klientskou slo₧ku protokolu TELNET, kterß m∙₧e b²t navφc provozovßna i jinde, ne₧ jen v prost°edφ MS DOSu. Dφky tomu je mo₧nΘ, aby nap°φklad Unixovsk² poΦφtaΦ na dßlku ovlßdal poΦφtaΦ PC. Navφc je vhodnΘ si uv∞domit, ₧e po z°φzenφ vzdßlenΘ terminßlovΘ relace prost°ednictvφm protokolu TELNET je jejφ existence pro u₧ivatele transparentnφ, tak₧e nap°φklad u₧ivatel UnixovskΘho poΦφtaΦe pak m∙₧e mφt dojem, ₧e pracuje na poΦφtaΦi PC. Nebude to ale iluze dokonalß - ji₧ jen z d∙vodu omezenΘ p°enosovΘ rychlosti. DalÜφ problΘmy pak zp∙sobuje nap°. odliÜnost v poΦtu °ßdk∙: zatφmco terminßly Unixovsk²ch poΦφtaΦ∙ majφ nejΦast∞ji 24 °ßdk∙, poΦφtaΦe PC zobrazujφ v zßkladnφm textovΘm re₧imu 25 °ßdek.

Rlogin je jin²

TELNET nenφ zdaleka jedin²m protokolem pro realizaci vzdßlen²ch terminßlov²ch relacφ - v prost°edφ TCP/IP sφtφ je ale z°ejm∞ nejrozÜφ°en∞jÜφ. Existuje °ada dalÜφch, mnohem propracovan∞jÜφch a komplexn∞jÜφch protokol∙ pro vzdßlenΘ terminßlovΘ relace, kterΘ nabφzφ v∞tÜφ rozsah slu₧eb, ale za svou dokonalost platφ omezen∞jÜφmi mo₧nostmi nasazenφ, ne₧ jednoduÜÜφ TELNE. Za zmφnku stojφ alespo≥ jeden alternativnφ protokol - rlogin. Pochßzφ z prost°edφ BSD Unixu, a liÜφ se od TELNETu p°edevÜφm v tom, ₧e "vnφmß" prost°edφ, ve kterΘm pracuje jeho klientskß i serverovß slo₧ka, a sna₧φ se vyu₧φvat specifickΘ vlastnosti a schopnosti t∞chto prost°edφ - nap°. pro zajiÜt∞nφ automatickΘho p°ihlaÜovßnφ. P°φstup protokolu rlogin je takov², ₧e sprßvce systΘmu na urΦitΘm poΦφtaΦi mß mo₧nost specifikovat, kterΘ jinΘ poΦφtaΦe pova₧uje za "d∙v∞ryhodnΘ" - v tom smyslu, ₧e kdy₧ u₧ivatel ji₧ jednou proÜel na takovΘmto poΦφtaΦi procesem ov∞°ovßnφ svΘ identity (zadßnφm u₧ivatelskΘho jmΘna a hesla), dan² poΦφtaΦ ji₧ nepo₧aduje novΘ opakovßnφ tohoto procesu. Jin²mi slovy: "v∞°φ" v identitu u₧ivatel∙, kte°φ mu vysφlajφ svΘ ₧ßdosti o z°φzenφ vzdßlen²ch terminßlov²ch relacφ z t∞ch poΦφtaΦ∙, kterΘ jsou sprßvcem urΦeny jako "d∙v∞ryhodnΘ" (anglicky: trusted hosts), a nesna₧φ se ji ov∞°ovat znovu. Dßle mß sprßvce systΘmu mo₧nost stanovit, ₧e konkrΘtnφ u₧ivatelΘ "d∙v∞ryhodn²ch" poΦφtaΦ∙ majφ na danΘm poΦφtaΦi takovß a takovß u₧ivatelskß jmΘna. Kdy₧ pak p°ijde ₧ßdost o z°φzenφ terminßlovΘ relace od konkrΘtnφho u₧ivatele "d∙v∞ryhodnΘho" poΦφtaΦe, m∙₧e b²t tento u₧ivatel automaticky p°ihlßÜen do systΘmu danΘho poΦφtaΦe pod p°φsluÜn²m jmΘnem, a bez nutnosti zadßvat heslo.

Jakmile je toto mo₧nΘ, lze implementovat i takovou slu₧bu, kterß u₧ivateli jednoho poΦφtaΦe umo₧nφ zadat p°φkaz, kter² se mß provΘst na jinΘm poΦφtaΦi. P°itom se automaticky z°φdφ vzdßlenß terminßlovß relace, v rßmci kterΘ se vzdßlenΘmu poΦφtaΦi zadß p°φsluÜn² p°φkaz, a po jeho provedenφ se terminßlovß relace zase zruÜφ. U₧ivateli p°itom staΦφ zadat jen dva zßkladnφ ·daje: p°φkaz, kter² mß b²t proveden, a dßle jmΘno poΦφtaΦe, na kterΘm se tak mß stßt.


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