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 (72):
FTP - II.
V p°edchozφm dφlu jsme se zaΦali zab²vat konkrΘtnφmi
vlastnostmi protokolu FTP, kter² mß v rodin∞ protokol∙
TCP/IP na starosti netransparentnφ p°enos soubor∙. P°itom
jsme se v∞novali hlavn∞ zp∙sobu, jak²m se tento protokol
vyrovnßvß s odliÜnostmi r∙zn²ch poΦφtaΦ∙ a jejich operaΦnφch
systΘm∙ v pohledu na soubory, jejich vnit°nφ strukturu a
vlastnφ obsah. Dnes se ji₧ dostaneme k tomu, jak p°enos
soubor∙ podle protokolu FTP v praxi probφhß - k²m je
iniciovßn, k²m je °φzen, jak²mi p°φkazy atd.
Implementace protokolu FTP vychßzφ z architektury
klient-server, kterou jsme si p°iblφ₧ili ji₧ v 64. dφlu
serißlu. P°edpoklßdß tedy existenci dvou navzßjem
nerovnoprßvn²ch slo₧ek: klienta a serveru. Slo₧ka v roli
klienta je inicißtorem, z jeho₧ popudu k p°enos∙m soubor∙
dochßzφ, a server je druhou stranou, kterß p°itom
spolupracuje. Server tedy nabφzφ jako svou slu₧bu spoluprßci
na p°enosu soubor∙, a klient je tφm, kdo o tuto slu₧bu
₧ßdß. Typicky je slo₧ka v roli klienta p°edstavovßna
aplikaΦnφm programem, kter² si u₧ivatel spouÜtφ na svΘm
poΦφtaΦi, a slo₧ka v roli serveru dΘmonem (FTP dΘmonem
v prost°edφ Unixu, resp. obdobn²m systΘmov²m procesem
v jinΘm prost°edφ) na tom poΦφtaΦi, ze kterΘho Φi na kter²
u₧ivatel chce p°enΘst n∞jak² soubor. Vlastnφ sm∞r p°enosu
(od serveru ke klientovi Φi naopak) p°itom nenφ pro
rozliÜenφ obou slo₧ek relevantnφ.
Trvale jen nezbytnΘ minimum
![Obrßzek 72.1.](/file/23364/Chip_1997-10_cd.bin/tema/_peterka/gifs/t335c111.gif) |
Obr. 72.1. P°edstava slo₧ek v roli klienta a serveru protokolu FTP
Protokol FTP vychßzφ vst°φc takovΘmu zp∙sobu
implementace, kter² se sna₧φ minimalizovat svΘ nßroky na
r∙znΘ systΘmovΘ prost°edky - umo₧≥uje ₧ßdat o jejich
p°id∞lenφ a₧ na zßklad∞ skuteΦnΘ pot°eby, a po jejich
pou₧itφ je zase vrßtit. KonkrΘtnφ myÜlenka je takovß, ₧e po
celou dobu komunikace mezi klientem a serverem (tedy po
celou dobu existence relace mezi nimi) musφ existovat jen
to, co zajiÜ¥uje vysφlßnφ a p°φjem nejr∙zn∞jÜφch p°φkaz∙
a odpov∞dφ na n∞ mezi klientem a serverem, zatφmco vÜechno
ostatnφ, co je pot°eba pro vlastnφ p°enos dat, m∙₧e vznikat
dynamicky, a₧ na zßklad∞ skuteΦnΘ pot°eby.
TΘto p°edstav∞ odpovφdß i vnit°nφ Φlen∞nφ slo₧ek v
roli klienta a serveru i povaha komunikaΦnφch kanßl∙ mezi
nimi - viz obr. 72.1.
Interpret protokolu a p°enosov² proces
Ta Φßst slo₧ky v roli klienta, kterß existuje trvale
(resp. po celou dobu prßce s aplikacφ, kterß protokol FTP
implementuje), je tzv. interpret protokolu (PI, Protocol
Interpreter). Jeho ·kolem je nejprve navßzat spojenφ
s partnersk²m interpretem protokolu na stran∞ serveru,
a potΘ iniciovat jednotlivΘ akce a °φdit jejich pr∙b∞h. ╚inφ
tak prost°ednictvφm p°φkaz∙, kterΘ zasφlß svΘmu partnerskΘmu
interpretu protokolu na stran∞ serveru, a dßle tφm, ₧e na
svΘ stran∞ dynamicky vytvß°φ a °φdφ tzv. p°enosov² proces
(DTP, Data Transfer Process), kter² pak zajiÜ¥uje vlastnφ
p°enos dat na zßklad∞ pokyn∙ od svΘho interpretu protokolu
a pokyn∙ druhΘ strany.
╪φdφcφ a datovΘ spojenφ
Interpret protokolu na stran∞ klienta navazuje spojenφ
se sv²m partnersk²m interpretem na stran∞ serveru
prost°ednictvφm protokolu TCP - to znamenß, ₧e spojenφ mezi
ob∞ma interprety mß povahu spojovanΘho a spolehlivΘho
spojenφ. Interpret na stran∞ serveru musφ Φekat na ₧ßdost
o navßzßnφ spojenφ na jednom z tzv. dob°e znßm²ch port∙
(konkrΘtn∞ na portu Φ. 21). Jakmile je spojenφ navßzßno,
existuje po celou dobu existence relace, ale je vyu₧φvßno
jen pro pro pot°eby °φzenφ tΘto relace - proto se mu takΘ
°φkß °φdφcφ spojenφ (control connection).
Jakmile si oba interprety mezi sebou vykorespondujφ, ₧e
mß b²t proveden n∞jak² p°enos, vytvo°φ za tφmto ·Φelem svΘ
p°enosovΘ procesy. Ty si pak mezi sebou navß₧φ samostatnΘ
spojenφ (op∞t prost°ednictvφm protokolu TCP, tedy spolehlivΘ
a spojovanΘ), a jeho prost°ednictvφm pak zajistφ vlastnφ
p°enos dat. Proto se tomuto spojenφ takΘ °φkß datovΘ spojenφ
(data connection). Za povÜimnutφ stojφ skuteΦnost, ₧e
zatφmco navßzßnφ °φdφcφho spojenφ iniciuje klient (p°esn∞ji
interpret protokolu na stran∞ klienta), povinnost iniciovat
navßzßnφ datovΘho spojenφ mß naopak server (resp. jeho
p°enosov² proces). Interpret protokolu na stran∞ klienta
naopak instruuje sv∙j p°enosov² proces, aby Φekal na
zadanΘm portu na navßzßnφ spojenφ.
Protokol FTP ovÜem p°ipouÜtφ i jinou mo₧nost, ne₧ jen
p°enos soubor∙ mezi jednφm klientem a jednφm serverem.
Dovoluje, aby u₧ivatel z jednoho poΦφtaΦe inicioval p°enos
soubor∙ mezi dv∞ma jin²mi poΦφtaΦi (tedy mezi dv∞ma
vzdßlen²mi poΦφtaΦi). V tomto p°φpad∞ existuje slo₧ka v roli
klienta na poΦφtaΦi, na kterΘm pracuje u₧ivatel, a na obou
vzdßlen²ch poΦφtaΦφch musφ existovat slo₧ky v roli serveru.
╪φdφcφ spojenφ musφ b²t navßzßna dv∞, a to mezi interpretem
protokolu klientskΘ slo₧ky a interprety obou server∙,
a jejich prost°ednictvφm instruuje klient oba servery, jak
majφ zajistit po₧adovan² p°enos. DatovΘ spojenφ je pak ale
vytvß°eno jen mezi ob∞ma servery, tj. vlastnφ data ji₧
neprochßzφ p°es klientsk² poΦφtaΦ.
P°φkazy pro °φzenφ p°enosu
Interprety protokolu na stran∞ klienta a serveru spolu
komunikujφ prost°ednictvφm jazyka, kter² je souΦßstφ
definice protokolu FTP. Tento jazyk je tvo°en p°φkazy (kterΘ
vysφlß interpret klienta) a odpov∞∩mi na n∞ (kterΘ vysφlß
interpret serveru). JednotlivΘ p°φkazy lze rozd∞lit do t°φ
zßkladnφch skupin, na:
- p°φkazy pro °φzenφ p°φstupu (access control commands),
umo₧≥ujφ mj. zadat u₧ivatelskΘ jmΘno a heslo,
kterΘ pak slo₧ka v roli serveru bude pou₧φvat p°i vÜech
nßsledn²ch po₧adavcφch na p°φstup k soubor∙m (viz tΘ₧
70. dφl)
- p°φkazy pro nastavenφ parametr∙ p°enosu (transfer
parameter commands), kterΘ umo₧≥ujφ nap°φklad zm∞nit
implicitnφ Φφsla port∙, pou₧φvan²ch p°i navazovßnφ
datovΘho spojenφ, nastavit re₧im p°enosu, stanovit
reprezentaci dat Φi strukturu p°enßÜenΘho souboru (viz
minul² dφl serißlu).
- v²konnΘ p°φkazy (FTP service commands), kterΘ iniciujφ
vlastnφ p°enosy soubor∙ a manipulaci s nimi
(p°ejmenovßvßnφ, ruÜenφ), prßci s adresß°i (p°echody na
podadresß° Φi na nad°azen² adresß°), v²pisy obsahu
adresß°e (vlastnφ v²pis je pak p°enßÜen prost°ednictvφm
datovΘho spojenφ) apod.
Odpov∞di
Ka₧d² p°φkaz generuje alespo≥ jednu odpov∞∩ (n∞kterΘ
dokonce vφce odpov∞dφ). JednotlivΘ odpov∞di p°itom majφ
formu Φφseln²ch k≤d∙ - trojmφstn²ch desφtkov²ch Φφsel - za
kter²mi nßsleduje vysv∞tlujφcφ text. P°edstava je ovÜem
takovß, ₧e rozhodujφcφ jsou pouze ΦφselnΘ k≤dy, kterΘ v sob∞
nesou veÜkerou podstatnou informaci, zatφmco text mß pouze
vysv∞tlujφcφ charakter, a jeho obsah nenφ navφc v∙bec
zßvazn² (tj. r∙znΘ implementace mohou ke stejnΘmu ΦφselnΘmu
k≤du p°ipojovat r∙znΘ vysv∞tlujφcφ texty). Logika je takovß,
₧e Φφseln² k≤d je urΦen pro program, kter² odpov∞di
vyhodnocuje. Ten m∙₧e podle svΘho uvß₧enφ vysv∞tlujφcφ text
jednoduÜe ignorovat, nebo jej zobrazit u₧ivateli, aby i on
byl pro n∞j srozumitelnou formou informovßn o odpov∞dφch
serveru.
Zajφmav² je i zp∙sob k≤dovßnφ Φφseln²ch odpov∞dφ, kter²
vychßzφ vst°φc r∙znΘ ·rovni detailnosti p°i vyhodnocovßnφ
odpov∞dφ. ╚φseln² k≤d je trojmφstn², a jeho prvnφ Φφslice
udßvß to, zda odpov∞∩ je dobrß, Üpatnß Φi ne·plnß (viz
tabulka 72.2.). NejjednoduÜÜφ implementace se pak mohou
rozhodovat jen podle tΘto prvnφ Φφslice, zatφmco
propracovan∞jÜφ implementace mohou zφskat podrobn∞jÜφ
informace vyhodnocenφm druhΘ, ev. i t°etφ Φφslice.
1xx | p°edb∞₧nß kladnß odpov∞∩ (po₧adovanß akce byla ·sp∞Ün∞ zahßjena, jeÜt∞ bude nßsledovat dalÜφ zprßva o jejφm pr∙b∞hu) |
2xx | kladnß odpov∞∩ (po₧adovanß akce byla ·sp∞Ün∞ provedena, resp. dokonΦena) |
3xx | prozatφmnφ kladnß odpov∞∩ (p°φkaz byl p°ijat, ale pro zahßjenφ po₧adovanΘ akce jsou nutnΘ jeÜt∞ dalÜφ p°φkazy) |
4xx | doΦasnß zßpornß odpov∞∩ (po₧adovanß akce nebyla ·sp∞Ün∞ provedena, ale d∙vod ne·sp∞chu je doΦasn², a mß smysl ₧ßdat o novΘ provedenφ akce) |
5xx | trvalß zßpornß odpov∞∩ (po₧adovanß akce nebyla ·sp∞Ün∞ provedena a nemß smysl se o ni pokouÜet znovu) |
Tabulka 72.2: V²znam prvnφ Φφslice odpov∞di
FTP pou₧φvß Telnet
Za povÜimnutφ stojφ i konkrΘtnφ forma, v jakΘ jsou
jednotlivΘ p°φkazy a odpov∞di na n∞ p°enßÜeny °φdφcφm
spojenφm. P°φkazy i odpov∞di majφ zßsadn∞ textovou formu -
jmΘna p°φkaz∙ tvo°φ t°φ a₧ Φty°pφsmennΘ zkratky, a takΘ
Φφselnß Φßst odpov∞di je p°enßÜena textov∞ (jako trojice
desφtkov²ch Φφslic). Vzhledem k tomu se protokol FTP m∙₧e
odvolßvat na protokol Telnet a po₧adovat, aby tyto texty
byly p°enßÜeny po °φdφcφm spojenφ p°esn∞ tak, jak to Φinφ
protokol Telnet. V praxi to znamenß, ₧e implementace
protokolu FTP pro p°enos p°φkaz∙ a odpov∞dφ °φdφcφm spojenφm
bu∩to sama vyu₧φvß slu₧eb ji₧ existujφcφ implementace
Telnetu, nebo si sama implementuje tu Φßst protokolu Telnet,
kterou skuteΦn∞ pot°ebuje (proto₧e zdaleka nevyu₧φvß vÜech
mo₧nostφ, na kterΘ protokol Telnet pamatuje).
U₧ivatelsk² vs. °φdφcφ jazyk
D∙sledn∞ textovß podoba °φdφcφho jazyka i vyu₧itφ
protokolu Telnet pro p°enos p°φkaz∙ a odpov∞dφ nevyluΦuje,
aby na stran∞ klienta vydßval p°φkazy °φdφcφho jazyka mφsto
interpretu protokolu p°φmo u₧ivatel, kter² si otev°e
vzdßlenou terminßlovou relaci s interpretem na stran∞
serveru (pokud p°itom dodr₧φ vÜechny konvence protokolu
FTP). B∞₧n² p°φpad to ale rozhodn∞ nenφ.
![Obrßzek 72.3.](/file/23364/Chip_1997-10_cd.bin/tema/_peterka/gifs/t335c113.gif) |
Obr. 72.3. P°φklad pr∙b∞hu relace protokolu FTP
Obvyklß implementace protokolu FTP obsahuje vedle
interpretu p°φkaz∙ a p°enosovΘho procesu jeÜt∞ i u₧ivatelskΘ
rozhranφ, kterΘ zajiÜ¥uje komunikaci mezi u₧ivatelem
a interpretem p°φkaz∙ (viz obr. 72.1.). Toto rozhranφ pak
m∙₧e nabφzet v podstat∞ jak²koli "u₧ivatelsk²" jazyk, kter²
pak ve spoluprßci s interpretem protokolu p°eklßdß do
°φdφcφho jazyka, a ten ji₧ je pro vÜechny implementace
jednotn². Z pohledu u₧ivatele (kter² vyu₧φvß slu₧eb
protokolu FTP prost°ednictvφm u₧ivatelskΘho jazyka) se proto
r∙znΘ implementace FTP mohou "tvß°it" jinak (mohou pou₧φvat
r∙znΘ p°φkazy pro tytΘ₧ Φinnosti, mφsto °ßdkovΘho rozhranφ
mohou pou₧φvat grafickΘ u₧ivatelskΘ rozhranφ apod.), ale
dφky pou₧φvßnφ jednotnΘho °φdφcφho jazyka by se m∞ly vÜechny
sprßvn∞ domluvit.
P°φklad pr∙b∞hu relace mezi klientem a serverem ukazuje
obrßzek 72.3.
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