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://ksi.ms.mff.cuni.cz/~peterka/archiv/copyleft.htm