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

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

TFTP, anonymnφ FTP servery

V minul²ch dvou dφlech jsme se podrobn∞ji zab²vali protokolem FTP pro netransparentnφ p°enos v sφtφch na bßzi TCP/IP. Ji₧ na zaΦßtku jsme si ale avizovali, ₧e vedle tohoto "plnohodnotnΘho" protokolu existuje jeÜt∞ jeden, o mnoho jednoduÜÜφ a skromn∞jÜφ, oznaΦovan² p°φznaΦn∞ jako TFTP, neboli "Trivißlnφ FTP".

Jakß je ale logika, kterß stojφ za existencφ dvou protokol∙ pro netransparentnφ p°enos soubor∙? ProΦ je v²hodnΘ mφt dva?

Protokol FTP lze oznaΦit za plnohodnotn² v tom smyslu, ₧e je povinn∞ vybaven mnoha r∙zn²mi funkcemi, kterΘ vÜak nemusφ b²t zdaleka v₧dy vyu₧φvßny. Mno₧stvφ r∙zn²ch funkcφ a velk² rozsah schopnostφ vÜak znamenß v∞tÜφ, a obvykle i pomalejÜφ program, kter² takΘ zabφrß vφce mφsta jak na disku, tak i p°i svΘm b∞hu v operaΦnφ pam∞ti. V dneÜnφ dob∞, kdy se objemy operaΦnφch pam∞tφ poΦφtajφ spφÜe na megabyty, by n∞jak² ten kilobyte nemusel hrßt p°φliÜ velkou roli. P°esto jsou ale situace, kdy hraje roli v²znamnou. Tak v²znamnou, ₧e se kv∙li nφ vyplatφ pou₧φt jin² protokol, jeho₧ implementace je mΘn∞ nßroΦnß na r∙znΘ systΘmovΘ zdroje.

Co pot°ebujφ bezdiskovΘ stanice

Pro p°φklad je nejlΘpe zajφt k bezdiskov²m pracovnφm stanicφm. Nemaje vlastnφ pevn² disk, jsou odkßzßny na sdφlenφ disk∙ jin²ch uzlov²ch poΦφtaΦ∙ prost°ednictvφm sφt∞. Nejprve si ale musφ odn∞kud naΦφst sv∙j vlastnφ operaΦnφ systΘm a dalÜφ "nßle₧itosti", aby se v∙bec rozeb∞hly - z n∞kterΘho z uzlov²ch poΦφtaΦ∙, kter² plnφ roli tzv. bootovacφho serveru, a sv²m klient∙m nabφzφ jako svou slu₧bu mo₧nost nahrßt si to, co pot°ebujφ ke svΘmu startu a co by jinak m∞ly na svΘm vlastnφm disku (kdyby jej ovÜem m∞ly). Aby vÜak mohla bezdiskovß stanice (jako klient) tuto slu₧bu vyu₧φt, musφ um∞t se na p°φsluÜn² server v∙bec obrßtit a komunikovat s nφm. A to okam₧it∞ po svΘm zapnutφ, jeÜt∞ d°φve ne₧ od bootovacφho serveru cokoli zφskß. JedinΘ mo₧nΘ °eÜenφ je pak umφstit vÜe pot°ebnΘ pro navßzßnφ komunikace se serverem do pevnΘ pam∞ti, tak aby p°φsluÜn² k≤d mohl b²t spuÜt∞n ihned po zapnutφ stanice.

To, co pracovnφ stanice od bootovacφho serveru zφskßvß, mß formu soubor∙, a tak v tΘto pevnΘ pam∞ti musφ b²t implementovßn vhodn² protokol pro p°enos soubor∙, a s nφm i vÜechny protokoly ni₧Üφch vrstev, kterΘ ke svΘ prßci pot°ebuje. Je ovÜem zcela zbyteΦnΘ, aby to byl "plnohodnotn²" protokol - jeho Φinnost je v₧dy stejnß, a tak lze p°edem odhadnout, kterΘ funkce bude skuteΦn∞ vyu₧φvat a kterΘ nikoli, a implementovat jen ty skuteΦn∞ pot°ebnΘ. Velmi Φast² je i takov² p°φpad, kdy velmi mal² k≤d v pevnΘ pam∞ti naΦte ze serveru a zavede do operaΦnφ pam∞ti stanice slo₧it∞jÜφ zavßd∞cφ program, a teprve ten pak zajistφ naΦφtßnφ operaΦnφho systΘmu a vÜeho pot°ebnΘho pro start operaΦnφho systΘmu na bezdiskovΘ stanici (tomuto "vφcestup≥ovΘmu" zavßd∞nφ se v angliΦtin∞ °φkß bootstrapping).

DalÜφ motivacφ pro existenci jednoduchΘho protokolu pro p°enos soubor∙ pak jsou takovΘ aplikace, kterΘ "vymo₧enosti" plnohodnotnΘho protokolu nepot°ebujφ, dßle jednoduchΘ operaΦnφ systΘmy, kter²m Φinφ problΘmy udr₧ovat souΦasn∞ vφce otev°en²ch transportnφch spojenφ (jak to vy₧aduje protokol FTP) apod.

V Φem se liÜφ TFTP

Protokol TFTP (Trivial File Transfer Protocol) se od protokolu FTP liÜφ p°edevÜφm v nßsledujφcφch aspektech: Soubory, kterΘ p°enßÜφ, chßpe protokol TFTP bu∩ jako textovΘ soubory, nebo jako soubory binßrnφ. V prvnφm p°φpad∞ p°edpoklßdß (obdobn∞ jako protokol FTP), ₧e jednotlivΘ znaky jsou p°i p°enosu k≤dovßny p°esn∞ takov²m zp∙sobem, jak² po₧aduje protokol Telnet (a p°φjemce Φi odesilatel je v p°φpad∞ pot°eby konvertuje z/do mφstnφch konvencφ), zatφmco v druhΘm p°φpad∞ se na obsah p°enßÜenΘho souboru dφvß jako na posloupnost osmibitov²ch byt∙, a nijak je neinterpretuje.

Pro vlastnφ p°enos vyu₧φvß protokol TFTP nespolehliv²ch a nespojovan²ch slu₧eb transportnφho protokolu UDP. S jeho nespolehlivostφ se vyrovnßvß tak, ₧e si sßm zajiÜ¥uje pot°ebnΘ potvrzovßnφ. Toto potvrzovßnφ je zajφmavΘ tφm, ₧e jde o tzv. jednotlivΘ potvrzovßnφ (tedy takovΘ, kdy odesilatel po odeslßnφ jednoho bloku Φekß na jeho explicitnφ potvrzenφ, a teprve pak vysφlß dalÜφ blok), a dßle tφm, ₧e pou₧φvß symetrickΘ Φekßnφ na vyprÜenφ ΦasovΘho limitu (tzv. timeout). Odesilatel, kter² odeslal n∞jakß data, Φekß na jejich potvrzenφ, a pokud jej nedostane do urΦitΘho ΦasovΘho limitu, vyÜle data znovu. Obdobn∞ p°φjemce, kter² data obdr₧φ, je potvrdφ odeslßnφm p°φsluÜnΘho potvrzenφ, ale pokud do ΦasovΘho limitu nedostane dalÜφ data, znovu vyÜle ji₧ jednou odeslanΘ potvrzenφ. JednotlivΘ bloky dat, kterΘ jsou tφmto zp∙sobem p°enßÜeny, majφ pevnou velikost (512 byt∙), a jsou sekvenΦn∞ Φφslovßny od 1. Podobn∞ jsou sekvenΦn∞ Φφslovßna i potvrzenφ. Konec celΘho p°enosu p°φjemce rozpoznßvß podle poslednφho bloku, kter² musφ obsahovat mΘn∞ ne₧ standardnφch 512 byt∙ (tedy nap°. i 0 byt∙).

V prvnφm (resp. nultΘm) bloku, kter²m se p°enos zahajuje, musφ b²t uvedeno p°esnΘ jmΘno souboru, kter² mß b²t p°enesen, vΦetn∞ ·plnΘ p°φstupovΘ cesty k tomuto souboru. Protokol TFTP, na rozdφl od protokolu FTP, toti₧ nepoΦφtß s tφm, ₧e by na stran∞ serveru byl nastaven na n∞jak² konkrΘtnφ adresß°. V d∙sledku toho ani neznß pojem aktußlnφho adresß°e (na serveru), neumo₧≥uje p°echßzet mezi jednotliv²mi adresß°i, a nezprost°edkovßvß ani jejich v²pis. PoΦφtß s tφm, ₧e klient p°esn∞ vφ, kde a s jak²m souborem chce pracovat.

JmΘnem koho?

Velmi zajφmavΘ d∙sledky vypl²vajφ z dalÜφho zjednoduÜenφ protokolu TFTP. Na rozdφl od "plnohodnotnΘho" protokolu FTP toti₧ neznß pojem u₧ivatele. NepoΦφtß s tφm, ₧e by u₧ivatel v roli klienta prokazoval serveru svou toto₧nost (resp. toto neumo₧≥uje), a tak vÜechny jeho po₧adavky na Φtenφ Φi zßpis jednotliv²ch soubor∙ jsou vlastn∞ anonymnφ. Jak mß ale server posuzovat jejich oprßvn∞nost Φi neoprßvn∞nost?

Definice protokolu TFTP toto ponechßvß na implementaci, ale obvyklΘ °eÜenφ je takovΘ, ₧e Φφst lze jen ty soubory, kterΘ jsou ke Φtenφ p°φstupnΘ vÜem u₧ivatel∙m. V p°φpad∞ zßpisu pak rozhodujφ p°φstupovß prßva do konkrΘtnφho adresß°e (zda umo₧≥uje zßpis vÜem u₧ivatel∙m Φi nikoli), resp. p°φstupovß prßva ke konkrΘtnφmu souboru (jde-li o p°epis nebo o p°idßvßnφ za konec ji₧ existujφcφho souboru).

Anonymnφ FTP servery

Na problΘm s p°φstupov²mi prßvy narazφme i v okam₧iku, kdy se rozhodneme vytvo°it na n∞jakΘm poΦφtaΦi ve°ejn∞ p°φstupn² archiv, ze kterΘho by si kdokoli mohl nahrßvat zde umφst∞nΘ soubory. Jak² protokol pro p°enos soubor∙ je k tomuto ·Φelu nejvhodn∞jÜφ?

Protokol TFTP by byl vhodn² prßv∞ pro svou "anonymitu", dφky kterΘ by zßjemci o p°φstup k archivu nemuseli uvßd∞t ₧ßdnß u₧ivatelskß jmΘna ani hesla. Mß to ovÜem jeden mal² hßΦek - jeliko₧ protokol TFTP neumo₧≥uje prochßzet adresß°i serveru a vypisovat si jejich obsah, nemohl by si zßjemce sßm vyhledßvat to, co jej zajφmß Φi co pot°ebuje, ale musel by b²t s obsahem archivu seznßmen jin²m zp∙sobem, a pak jφt "na jistotu".

Proto se ke zp°φstupn∞nφ nejr∙zn∞jÜφch archiv∙ soubor∙ v sφtφch na bßzi TCP/IP pou₧φvß "plnohodnotn²" protokol FTP. I zde je ale mal² hßΦek - mß-li b²t archiv opravdu ve°ejn∞ p°φstupn², jak sd∞lit vÜem potencißlnφm zßjemc∙m pot°ebnΘ u₧ivatelskΘ jmΘno (a p°φpadn∞ i heslo), kterΘ majφ pou₧φt? Mo₧n²m °eÜenφm je zvolit jedno konkrΘtnφ jmΘno, a to pak pou₧φvat vÜude. Tedy vlastn∞ zavΘst jednotnou konvenci, a tu d∙sledn∞ dodr₧ovat. No a jakß ₧e tato konvence je? V sφti Internet, kterß je dnes zdaleka nejv²znamn∞jÜφ sφtφ na bßzi protokol∙ TCP/IP a pokr²vß prakticky cel² sv∞t, je touto jednotnou konvencφ u₧ivatelskΘ jmΘno anonymous (doslova: anonym). Podle n∞j jsou pak takΘ p°φsluÜnΘ ve°ejn∞ p°φstupnΘ archivy oznaΦovßny jako anonymnφ FTP servery (anonymous FTP servers). V celΘm Internetu jich je opravdu mnoho, jen jejich struΦnΘ seznamy mφvajφ desφtky strßnek.

Pokud se na n∞kter² z nich obrßtφte (v roli klienta protokolu FTP), m∙₧ete se p°ihlßsit jako u₧ivatel "anonymous". Heslo pak na vßs ji₧ v∙bec nenφ po₧adovßno, nebo jste vyzvßni k tomu, aby jste mφsto hesla uvedli svou skuteΦnou identitu (mφn∞no: svou adresu pro elektronickou poÜtu) - viz tΘ₧ obrßzek 72.3 v minulΘm dφlu serißlu. N∞kterΘ anonymnφ FTP servery pou₧φvajφ takto zφskanou informaci jen pro vlastnφ evidenci (aby m∞ly p°ehled, kdo a jak je vyu₧φvß). JinΘ anonymnφ servery vÜak mohou b²t mΘn∞ d∙v∞°ivΘ, a ov∞°ujφ si, zda vßmi uvedenß identita je skuteΦnß, Φi nikoli. A pokud dojdou k zßv∞ru, ₧e je smyÜlenß (nebo nejsou schopny jejφ pravost ov∞°it), jednoduÜe se s vßmi p°estanou bavit.


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