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

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

FTP - I.

V minulΘm dφlu jsme si naznaΦili, ₧e p°enos a sdφlenφ soubor∙ v poΦφtaΦov²ch sφtφch m∙₧e b²t °eÜeno dv∞ma principißln∞ odliÜn²mi zp∙soby: transparentn∞ a netransparentn∞. Dnes se ji₧ dostaneme k tomu, jak je v sφ¥ovΘm modelu TCP/IP zajiÜ¥ovßn netransparentnφ p°enos - tedy k protokolu FTP.

Nejprve si ale znovu zopakujme, v Φem je rozdφl mezi transparentnφm a netransparentnφm °eÜenφm: v p°φpad∞ netransparentnφho p°φstupu si u₧ivatel pln∞ uv∞domuje rozdφl mezi mφstnφmi soubory a soubory na vzdßlenΘm poΦφtaΦi, a musφ se sßm a explicitn∞ starat o jejich p°enos, zatφmco v p°φpad∞ netransparentnφho p°φstupu mφstnφ a vzdßlenΘ soubory spl²vajφ, pro u₧ivatele mezi nimi nenφ ₧ßdn² principißlnφ rozdφl, a veÜkerou agendu spojenou s p°edstφrßnφm tΘto iluze na sebe p°ebφrß sφ¥ov² software a operaΦnφ systΘm.

Minule jsme se ji₧ takΘ zmφnili o tom, ₧e sφ¥ov² model TCP/IP pamatuje na ob∞ varianty. Pro netransparentnφ variantu nabφzφ hned dva protokoly - protokol FTP (File Transfer Protocol, doslova: protokol pro p°enos soubor∙), kter² lze oznaΦit jako "plnohodnotn²", vybaven² mno₧stvφm r∙zn²ch schopnostφ a funkcφ, a dßle mnohem jednoduÜÜφ protokol TFTP (Trivial File Transfer Protocol), poskytujφcφ jen zßkladnφ funkce, ale zato implementaΦn∞ jednoduÜÜφ, a Φasto i rychlejÜφ. NaÜe povφdßnφ zaΦneme filosofiφ protokolu FTP.

FTP je starÜφ ne₧ TCP/IP

Na protokolu FTP je dob°e patrn² jeden v²znaΦn² rys celΘho sφ¥ovΘho modelu TCP/IP - toti₧ skuteΦnost, ₧e nevznikl narßz, od zelenΘho stolu, ale postupn²m v²vojem a zdokonalovßnφm. Jak jsme si uvedli ji₧ ve 42. dφlu tohoto serißlu, protokoly TCP/IP zφskaly svou dneÜnφ podobu zhruba v letech 1977 a₧ 1979, a do sφt∞ ARPANET se zaΦaly prosazovat p°ibli₧n∞ od roku 1980, kdy se z ARPANETu postupn∞ stßvß zßrodek dneÜnφho Internetu. Prvnφ verze protokolu FTP pro netransparentnφ p°enos soubor∙ vÜak pochßzφ ji₧ z roku 1971, a od tΘ doby proÜla dlouh²m v²vojem, podporovan²m Üirokou diskusφ u₧ivatelskΘ ve°ejnosti. Od zaΦßtku osmdesßt²ch let, kdy i protokol FTP p°eÜel na pou₧φvßnφ transportnφho protokolu TCP (mφsto p∙vodnφho transportnφho protokolu NCP sφt∞ ARPANET) se ale ji₧ zßsadn∞ji nem∞nil.

SprßvnΘ zasazenφ protokolu FTP do historickΘho rßmce nßm pom∙₧e snßze pochopit n∞kterΘ jeho koncepΦnφ rysy.

Jak se FTP vyrovnßvß s r∙znorodostφ

Ji₧ minule jsme si naznaΦili, ₧e p°enos a sdφlenφ soubor∙ mezi r∙zn²mi uzlov²mi poΦφtaΦi m∙₧e narß₧et na mnohΘ problΘmy. Ukßzali jsme si n∞kterΘ z nich, kterΘ vypl²vajφ z odliÜnΘho pohledu r∙zn²ch operaΦnφch systΘm∙ na soubory, a to na "novodobΘm" p°φkladu Unixu a MS DOSu. V dob∞, kdy koncepce protokolu FTP vznikala a utvß°ela se, vÜak existovaly jeÜt∞ mnohem zßkladn∞jÜφ rozdφly mezi jednotliv²mi poΦφtaΦi - n∞kterΘ z nich pou₧φvaly osmibitovΘ byty a 32-bitovß slova, zatφmco jinΘ 36-bytovß slova. N∞kterΘ pracovaly s textem tak, ₧e jeho jednotlivΘ znaky uklßdaly do 8-bitov²ch byt∙ v k≤du EBCDIC (zejmΘna st°ediskovΘ poΦφtaΦe IBM) nebo v k≤du ASCII, zatφmco jinΘ uklßdaly znaky po Φtve°icφch do 36-bitov²ch slov (ka₧d² znak do 9 bit∙), a jeÜt∞ jinΘ jich do 36-bitov²ch slov "nacpaly" a₧ p∞t (ka₧d² znak do sedmi bit∙). N∞kterΘ poΦφtaΦe p°itom umis¥ovaly jednotlivΘ °ßdky textu do zßznam∙ (records) pevnΘ dΘlky, zatφmco jinΘ chßpaly text jako lineßrnφ posloupnost jednotliv²ch znak∙, Φlen∞nou vlo₧en²mi znaky pro p°echod na novou °ßdku.

Protokol FTP se vyrovnßvß se vÜemi t∞mito odliÜnostmi v podstat∞ jedin²m mo₧n²m zp∙sobem: zavßdφ jednotn² tvar, ve kterΘm jsou data skuteΦn∞ p°enßÜena, a ponechßvß na obou koncov²ch ·Φastnφcφch, aby zajistili veÜkerΘ pot°ebnΘ p°evody z/do mφstnφch konvencφ.

Zßrove≥ ale protokol FTP vychßzφ vst°φc i p°φpad∙m, kdy by jedin² a nem∞nn² p°enosov² tvar byl neefektivnφ, a umo₧≥uje jej v urΦitΘm rozmezφ a po dohod∞ obou stran m∞nit. V podstat∞ lze °φci, ₧e tento p°enosov² tvar mß t°i stupn∞ volnosti: re₧im p°enosu, strukturu soubor∙ a reprezentaci dat.

Reprezentace dat

P°i vlastnφm p°enosu jsou veÜkerß data p°enßÜena zßsadn∞ jako 8-bitovΘ byty. Protokol FTP vÜak poΦφtß s tφm, ₧e poΦφtaΦe, na kter²ch jsou tato data uchovßvßna, mohou pou₧φvat jinΘ konvence - nap°φklad 36-bitovß slova, jin² zp∙sob uklßdßnφ jednotliv²ch znak∙ do cel²ch slov (viz v²Üe), jin² znakov² k≤d ne₧ ASCII, apod. Z tohoto d∙vodu musφ b²t na stran∞ p°φjemce a/nebo odesilatele zajiÜ¥ovßny pot°ebnΘ konverze. Jejich provßd∞nφ ovÜem vy₧aduje, aby ob∞ strany v∞d∞ly, co si vlastn∞ mezi sebou p°enßÜφ: zda jde o text, slo₧en² z jednotliv²ch znak∙, nebo zda jde o binßrnφ data, kterß majφ b²t chßpßna jako lineßrnφ posloupnost bit∙, nebo zde jde nap°φklad o p°enos jednotliv²ch byt∙ nestandardnφ velikosti (nap°. devφtibitov²ch byt∙).

Protokol FTP implicitn∞ p°edpoklßdß, ₧e p°enßÜenß data p°edstavujφ ASCII text. Ten se pak skuteΦn∞ p°enßÜφ v tom formßtu, kter² pro ASCII text po₧aduje protokol Telnet (viz 68. dφl). JednotlivΘ znaky jsou tedy p°enßÜeny jako 8-bitovΘ, a °ßdky jsou odd∞lovßny dvojicφ znak∙ CRLF. Odesilatel proto musφ p°evßd∞t jednotlivΘ znaky z takovΘho k≤du a zp∙sobu zobrazenφ, jak² pou₧φvß jeho poΦφtaΦ, na prßv∞ popsan² p°enosov² tvar (tj. p°evßd∞t je do k≤du ASCII, uklßdat po jednom do osmi bit∙, a p°echody na novΘ °ßdky reprezentovat dvojicφ znak∙ CR a LF). Analogicky se musφ chovat i p°φjemce.

Protokol FTP vÜak umo₧≥uje, aby se ob∞ strany dohodly na jinΘm v²znamu p°enßÜen²ch dat. Mo₧nosti jsou nßsledujφcφ:

Struktura soubor∙

DalÜφ odliÜnostφ, se kterou se protokol FTP musel vyrovnat, je rozdφln² pohled na to, jak je soubor vnit°n∞ Φlen∞n. Zda je nap°φklad pova₧ovßn za lineßrnφ posloupnost byt∙, nebo je Φlen∞n na sekvenΦnφ zßznamy (records), nebo zda je tvo°en navzßjem nezßvisl²mi strßnkami, kterΘ jsou opat°eny indexy, a mohou vytvß°et nespojit² soubor.

V tΘto souvislosti je op∞t t°eba mφt na pam∞ti, ₧e r∙znΘ systΘmy mohou pro jeden a tent²₧ druh souboru pou₧φvat jinou vnit°nφ strukturu - nap°φklad texty se na v∞tÜin∞ poΦφtaΦ∙ uchovßvajφ v textov²ch souborech, tvo°en²ch lineßrnφ posloupnostφ jednotliv²ch znak∙ (byt∙), ale nap°φklad na st°ediskov²ch poΦφtaΦφch IBM jsou textovΘ soubory organizovßny jako posloupnosti zßznam∙ pevnΘ dΘlky. I zde pak musφ nastoupit vhodnΘ konverze na jednΘ stran∞ Φi na obou souΦasn∞, ale op∞t platφ zßsada, ₧e ka₧d² musφ v∞d∞t, co se vlastn∞ p°enßÜφ.

Pokud nenφ °eΦeno jinak, protokol FTP implicitn∞ p°edpoklßdß, ₧e p°enßÜen² soubor nemß ₧ßdnou vnit°nφ strukturu, a je tvo°en lineßrnφ posloupnostφ jednotliv²ch datov²ch byt∙ (tato mo₧nost je oznaΦovßna jako file structure). DalÜφ mo₧nosti, na kter²ch se mohou z·Φastn∞nΘ strany dohodnout, je soubor Φlen∞n² na sekvenΦnφ zßznamy (record structure) a soubor, Φlen∞n² na strßnky (page structure).

Re₧im p°enosu

T°etφm stupn∞m volnosti je re₧im p°enosu dat. D∙vodem pro zavedenφ vφce r∙zn²ch re₧im∙ byla z°ejm∞ snaha vyrovnat se s nedokonalostφ a omezenou kapacitou p°enosov²ch cest. Protokol FTP toti₧ umo₧≥uje provßd∞t i urΦitou kompresi p°enßÜen²ch dat, a takΘ zotavit se z v²padku spojenφ v pr∙b∞hu p°enosu a po obnovenφ spojenφ v n∞m pokraΦovat.

Implicitnφ re₧im p°enosu (oznaΦovan² jako stream mode) je takov², kdy p°enßÜenß data jsou chßpßna jen jako spojit² proud (stream) byt∙, a jako takovß jsou takΘ p°enßÜena.

Je ovÜem mo₧n∞ zvolit i jin² re₧im (blokov² re₧im, block mode), p°i kterΘm jsou p°enßÜenß data Φlen∞na do blok∙, a ka₧d² z nich je opat°en hlaviΦkou (kterß obsahuje mj. ·daj o dΘlce bloku, p°φznak poslednφho bloku apod.). V tomto re₧imu je pak mo₧nΘ vklßdat mezi bloky, obsahujφcφ vlastnφ data, i malΘ specißlnφ bloky (identifikovanΘ p°φznakem ve svΘ hlaviΦce), kterΘ ve skuteΦnosti slou₧φ jako zßlo₧ky (kontrolnφ body). Po v²padku spojenφ a jeho nßslednΘm obnovenφ je pak mo₧nΘ vyu₧φt existence t∞chto znaΦek k indikaci mφsta, odkud mß b²t p°eruÜen² p°enos opakovßn.

T°etφm mo₧n²m re₧imem p°enosu je tzv. zhuÜt∞n² re₧im (compressed mode), p°i kterΘm jsou p°enßÜenß data komprimovßna. Nejde vÜak o ₧ßdnou propracovanou a efektivnφ kompresnφ techniku, jakΘ znßme ze souΦasnΘ doby, ale jen o pouhou eliminaci znak∙, kterΘ se opakujφ n∞kolikrßt za sebou (typick²m p°φkladem jsou posloupnosti mezer v textov²ch souborech). Takovßto posloupnost stejn²ch znak∙ je pro pot°eby p°enosu nahrazena pouze jednφm exemplß°em p°φsluÜnΘho znaku a ·dajem o tom, kolikrßt se v originßle opakuje.


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