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 (70):
Přenos a sdílení souborů
V posledních pěti dílech tohoto seriálu jsme se
podrobněji zabývali první z aplikačních služeb v rámci
síťového modelu TCP/IP - vzdáleným přihlašováním. Dnes již
přijde na řadu další velmi potřebná služba: přenos a sdílení
souborů. Stejně jako v předchozím případě se ale nejprve
zamyslíme nad tím, o co vlastně jde, a teprve pak si
ukážeme, jak je přenos souborů a jejich sdílení konkrétně
řešeno v TCP/IP sítích.
Problematika přenosu a sdílení souborů v počítačových
sítích má společný základ v situaci, kterou je možné
lapidárně vyjádřit slovy: "chceme pracovat se souborem,
který se nachází na jiném uzlovém počítači". Buďme ale
přesnější: obsah souboru, který se nachází na jiném uzlu,
chceme zpracovávat na našem počítači. Nepůjde nám tedy
o takové řešení, kdy bychom se prostřednictvím vzdáleného
přihlašování dostali se svým počítačem do role terminálu
toho uzlu, na kterém se příslušný soubor nachází, a zde jej
zpracovávali jako "místní" soubor. Představme si například,
že chceme editovat nějaký soubor - pak by tato druhá
varianta odpovídala situaci, kdy editor běží jako aplikační
program na stejném počítači, na kterém se nachází
i editovaný soubor. Nám půjde o případ, kdy chceme používat
editor běžící na našem počítači, a jeho prostřednictvím
editovat obsah souboru, který se nachází na vzdáleném
počítači.
Vícenásobný přístup
Řešení právě naznačeného problému má přinejmenším dvě
stránky. Tou první je přenos celého souboru či jeho částí z
místa, kde se nachází, na místo kde má být zpracován, a ev.
zpět. Druhou stránkou je pak otázka vícenásobného přístupu k
jednomu a témuž souboru - tedy řešení situace, kdy se
o přístup k určitému souboru uchází více zájemců současně.
Vícenásobný přístup samozřejmě není specialitou
počítačových sítí, přesně stejný problém totiž nastává
obecně u každého víceuživatelského, a dokonce i jen
víceúlohového systému. Jeho řešení v prostředí počítačových
sítí se nemusí nijak principiálně lišit od řešení na
izolovaných počítačích, je spíše jen ztíženo existencí
přenosových cest s omezenou kapacitou a zpožděními při
přenosu.
Pro zajištění korektního vícenásobného přístupu k
souborům existuje celá řada technik, od jednoduchého
uzamykání celých souborů či jejich jednotlivých částí až po
velmi propracované metody, které mají svůj původ v prostředí
distribuovaných systémů.
V této části seriálu se však problematikou
vícenásobného přístupu zabývat nebudeme, a zaměříme se
hlavně na vlastní přenos souborů mezi uzlovými počítači
sítě.
Transparentní vs. netransparentní přístup
Potřebujeme-li na jednom počítači zpracovávat obsah
souboru, který se nachází na jiném uzlovém počítači, musí
vždy dojít k přenosu tohoto souboru (či alespoň jeho části)
tam, kde má být zpracován. Existují ale dva zásadně odlišné
přístupy k tomu, kdo a jak tento přenos vyvolává: jeden
přístup můžeme označit jako transparentní, a druhý jako
netransparentní.
Netransparentní přístup je založen na myšlence, že
přenos souborů bude ponechán plně na koncovém uživateli.
Když chce pracovat s nějakým souborem, musí si jej sám
a explicitně (pomocí vhodné utility, kterou si za tímto
účelem vyvolá) nejprve přenést na svůj počítač, a zde jej
pak zpracovat stejným způsobem, jako kterýkoli jiný "místní"
soubor (a pak jej zase sám přenést zpět, pokud je to
zapotřebí). V tomto případě si tedy koncový uživatel plně
uvědomuje, že různé soubory se nachází na různých počítačích
(dokonce musí přesně vědět kde), a tudíž pro něj existuje
principiální rozdíl mezi "místními" a "vzdálenými" soubory.
Alternativou je transparentní přístup k souborům. Ten
se snaží vytvářet iluzi, že vzdálené soubory se nachází na
místním počítači, snaží se zakrýt veškeré rozdíly mezi oběma
druhy souborů, a přebírá na sebe veškerou agendu, která je
s tímto předstíráním spojena. Pro koncového uživatele (i pro
jím spouštěnou aplikaci) se pak i vzdálené soubory "tváří"
naprosto stejně, jako soubory místní, a stejně se s nimi
i pracuje. Uživatel a jeho aplikace si pak vlastně vůbec
nemusí uvědomovat existenci počítačové sítě a jakkoli
distribuovaného prostředí, a tudíž ani to, že různé soubory
se mohou ve skutečnosti nacházet na různých počítačích.
Zajištění plně transparentního přístupu k souborům je
samozřejmě mnohem náročnější, než zajištění přístupu
netransparentního. Součástí síťového modelu TCP/IP jsou
protokoly pro oba tyto přístupy (protokoly FTP a NFS), a my
se budeme oběma z nich podrobněji zabývat.
Ještě dříve si však alespoň naznačme, s jakými
principiálními problémy je realizace obou základních
přístupů spojena. Nejvíce jich samozřejmě bude
u transparentního přístupu, jehož implementace je
nejobtížnější - musí být totiž skryta pod operačním
systémem, který nezbytný přenos aktivuje v okamžiku, kdy je
uživatelem či aplikací požádán o zajištění přístupu
k určitému souboru, a zjistí že tento ve skutečnosti není
místní.
Problém je v rozdílnosti operačních systémů
Hlavní zdroj problémů před námi vyvstane v okamžiku,
kdy si uvědomíme, že přístup k souborům v počítačové síti
může být zajišťován i z prostředí různých operačních
systémů. Například je možné (a při dnešní popularitě
osobních počítačů a lokálních sítí i docela běžné) aby
uživatel počítače PC s operačním systémem MS DOS měl přístup
k souborům, které se ve skutečnosti nachází na jiném uzlovém
počítači, na kterém je provozován například operační systém
Unix. Ukažme si dvě hlavní oblasti, ve kterých se pohled
obou operačních systémů na soubory výrazně liší:
- jména a přípony; MS DOS připouští maximálně osmiznaková
jména souborů (a tříznakové přípony), zatímco Unix dovoluje
používat je jménech i příponách znaků více (konkrétní počet
závisí na variantě Unixu), a navíc to mohou být i některé
speciální znaky, které naopak v DOSovských jménech a
příponách přípustné nejsou. Další rozdíl je v tom, že MS DOS
nerozlišuje velká a malá písmena, zatímco Unix ano. Obecně
proto platí, že každé jméno a přípona, přípustné v MS DOSu,
je přípustné i v Unixu, ale naopak nikoli. Při přístupu
k Unixovským souborům z MS DOSu je proto nutné vhodně
nahradit případná nepřípustná jména. Při netransparentním
přístupu je možné vyřešit celý problém vcelku snadno - zde
si totiž uživatel musí zavolat příslušnou utilitu, a jejím
prostřednictvím explicitně zadávat, které soubory chce
přenést. Pak není problém vyžádat si na něm i jméno
(přípustné pro DOS), pod jakým má být Unixovský soubor
přenesen do prostředí MS DOSu. Při plně transparentním
přístupu však takovéto řešení není možné, a tak musí být
vhodně implementována automatická transformace Unixovských
jmen souborů na DOSsovská (což může být velkým oříškem - jak
zajistit jednoznačnost, neboli to, aby se dvě různá
Unixovská jména nepromítla do stejného DOSovského jména).
- vlastnictví souborů a přístupová práva; MS DOS je
jednouživatelský operační systém. Předpokládá, že s ním bude
vždy pracovat jen jeden uživatel, kterému také budou patřit
všechny soubory. Proto nemá zapotřebí uvažovat, že by různé
soubory mohly mít různé majitele, a ti mohli přístup ke svým
soborům jiným uživatelům nějak omezovat - z tohoto pohledu
je příznačné, že MS DOS pojem uživatele vlastně ani nezná.
Naproti tomu Unix je víceuživatelským systémem, který tudíž
jednotlivé uživatele rozlišovat musí, a u každého souboru
předpokládá, že někomu patří (tj. že každý soubor má svého
majitele). Majitel souboru pak může definovat přístupová
práva jiných uživatelů k tomuto souboru (a sobě samotnému
také). Aby tak nemusel činit pro každého individuálního
uživatele samostatně, jsou v Unixu zavedeny skupiny
uživatelů, a každý uživatel vždy do nějaké skupiny patří. Ke
každému souboru se pak explicitně definují přístupová práva
pro vlastníka souboru, pro skupinu, do které vlastník patří,
a pro ostatní uživatele. Takto je možné samostatně nastavit
právo ke čtení souboru, právo k zápisu do něj (resp.
přepisu), a právo ke spuštění (provedení spustitelného
programu).
Má-li však být Unixovský soubor přenesen do prostředí
MS DOSu nebo naopak, podle čeho se bude kontrolovat
oprávněnost přístupu k tomuto souboru? Ten, kdo z MS DOSu
vznáší svůj požadavek na přístup k souboru, je vlastně
anonymní (když MS DOS pojem uživatele nezná). V případě
netransparentního přístupu ze strany MS DOSu je řešení opět
vcelku jednoduché - příslušná utilita (aplikační program) na
straně DOSU se může svého uživatele vyptat, jménem koho má
vznést svůj požadavek na straně Unixu (tj. vyžádá si
Unixovské uživatelské jméno). Podle tohoto jména se pak
posuzuje oprávněnost přístup k příslušnému souboru. Jak to
ale udělat v případě plně transparentního přístupu? Zde
připadá v úvahu v podstatě jen jediná možnost: Unixovské
uživatelské jméno (a heslo) si vyžádat předem, a všechny
následné požadavky (které již jsou generovány bez přímého
vědomí uživatele), vznášet tímto jménem.
Jak se to konkrétně dělá, k tomu se včas dostaneme.
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