1 7. Az alkalmazási réteg A bevezető'jellegű részek után elérkeztünk az alkalmazások fejezetéhez. Az alkalmazási réteg alatt található egyéb rétegek a...
A bevezető'jellegű részek után elérkeztünk az alkalmazások fejezetéhez. Az alkalma zási réteg alatt található egyéb rétegek a megbízható szállítási szolgálatot biztosítják, de a felhasználó számára nem végeznek tényleges munkát. Ebben a fejezetben igazi hálózati alkalmazásokkal fogunk megismerkedni. Még az alkalmazási rétegben is szükség van azonban olyan kiegészítő protokollok ra, melyek az alkalmazások működését biztosítják. így az alkalmazások tárgyalása előtt ezek közül egyet részletesebben is megnézünk: ez a protokoll a DNS, mely a ne vek kezeléséért felelős az Interneten. Ezután három tényleges alkalmazást is megtár gyalunk: az elektronikus levelezést, a Világhálót (World Wide Web) és végül a mul timédiát.
7.1.
DNS - a körzeti névkezelő rendszer
A programok elvileg a hálózati (pl. IP) címük segítségével is hivatkozhatnának a hosztokra, levelesládákra és más erőforrásokra, de ezeket a címeket az emberek nem igen tudják megjegyezni. Hasonlóképp, ha a tana® 128.111.24.41 címre küldenénk elektronikus levelet, az azt jelentené, hogy ha Tana internetszolgáltatója vagy szerve zete áttenné a levelezőszervert egy másik gépre, aminek más az IP-címe is, akkor Ta na e-levél címe is megváltozna. Ezért ASCI-neveket vezettek be, hogy különválasszák a gépek neveit a gépek címeitől. így Tana címe is valami ilyesmi lehet: ta na® art.ucsb.edu. A hálózat persze továbbra is csak a numerikus címeket érti meg, te hát valamilyen mechanizmusra van szükség, ami átalakítja az ASCI-karakterláncokat hálózati címekké. A következő szakaszokban megnézzük, hogy hogyan megy végbe ez a leképezés az Interneten. Még az ARPANET idejében, egyszerűen volt egy fájl, a hosts.txt, amiben fel vol tak sorolva a hosztok és az IP-címeik. Minden éjszaka az összes hoszt kiolvasta ezt a fájlt arról a gépről, ahol azt karbantartották. Ez a megközelítés egészen jól működött néhány száz nagy időosztásos gép esetében. Amikor azonban több ezer munkaállomást kapcsoltak a hálózatra, mindenki rájött, hogy ez a módszer nem működhet örökké. Ha másért nem, hát azért, mert a fájl mére-
627
AZ ALKALMAZÁSI RÉTEG
te túl nagy lenne. Még fontosabb azonban az, hogy a hosztnevek állandóan ütközné nek, amennyiben nem központilag kezelnénk a neveket; ez pedig a terhelés és a kés leltetések miatt elképzelhetetlen lenne egy kiterjedt nemzetközi hálózatban. Ezen problémák megoldására találták ki a DNS-t (Domain Name System - körzeti névkezelő rendszer). A DNS lényege egy hierarchikus körzetalapú névkiosztási séma, és az azt meg valósító osztott adatbázisrendszer kitalálásában rejlik. Elsó'sorban arra szolgál, hogy hoszt neveket és e-levél címeket feleltessen meg IP-címeknek, de más célokra is hasz nálható. A DNS-t az RFC 1034-ben és 1035-ben definiálják. Vázlatosan a következőképpen zajlik a DNS használata. Egy felhasználói program a névről IP-címre való leképzéséhez meghívja a névvel, mint paraméterrel a címfel oldó (resolver) nevű könyvtári eljárást. A címfeloldó elküld egy UDP-csomagot a he lyi DNS-szervernek. A szerver megkeresi és visszaküldi az IP-címet a címfeloldónak, ami visszaadja azt a hívónak. Az IP-cím birtokában a program már felépítheti a TCPkapcsolatot a célgéppel, vagy küldhet neki UDP-csomagokat.
7.1.1.
A DNS-névtér
Nagy mennyiségű, állandóan változó nevek halmazát nem triviális probléma kezelni. A postai rendszerben a névkezelés úgy történik, hogy a címzett eléréséhez a levélen (implicit vagy explicit módon) fel kell tüntetni az országot, az államot vagy megyét, a várost és az utcát. Ezen hierarchikus címzés mellett nincs kavarodás a Main St.-en, Bostonban, Massachusettsben lakó Marvin Anderson, és a Main St.-en, Austinban, Texasban lakó Marvin Anderson között. A DNS is így működik. Az Internet egy koncepció szerint néhány száz elsődleges körzetre (domain) van osztva, ahol minden körzethez sok hoszt tartozik. Minden körzet alkörzetekre van osztva, amelyek tovább vannak osztva és így tovább. Ezeket a körzeteket egy fával le het ábrázolni (lásd 7.1. ábra). A fa levelei olyan körzeteket reprezentálnak, amelyek nincsenek alkörzetekre bontva (de természetesen tartoznak hozzájuk gépek). Egy le-
com sun
edu yale
I
/\
eng cs
gov
mii
org
/ \
acm
/ \
jack
eng
/ \ ai
linda
I 7.1. ábra.robot Az Internet DNS-névtér egy darabja
jill
ieee
jp
niet
/ \
US
ac
co
1 keio 1 cs 1
1 nec 1 esi
pc24
ni
/ \
oce
vu
1
cs / \ flits fluit
628
SZÁMÍTÓGÉP-HÁLÓZATOK
veiben levő körzet tartalmazhat egyetlen hosztot is, vagy képviselhet egy egész válla latot, és tartalmazhat több ezer hosztot. A legfelső szinten levő, ún. elsődleges körzetek kétfélék lehetnek: általánosak és országra vonatkozó körzetek. Az eredeti általános körzetek a következők voltak, com (kereskedelem), edu (oktatási intézmények), gov (az USA szövetségi kormánya), int (néhány nemzetközi szervezet), mii (az USA fegyveres erői), net (hálózati szolgálta tók) és org (profit nélküli szervezetek). Az országra vonatkozó körzetek esetén min den országhoz tartozik egy országkörzet, az ISO 3166-nak megfelelően. 2000 novemberében az ICANN a következő négy új, általános célú elsődleges kör zetet hagyta jóvá: biz (cégek), info (információs), name (személyek nevei), és pro (szakmák, pl. orvosok és ügyvédek). Emellett még három speciális elsődleges körzetet is bevezettek bizonyos ágazatok kérésére. Ezek az aero (repülőgépipar), coop (szö vetkezetek), és museum (múzeumok). A jövőben további elsődleges körzeteket is be fognak vezetni. Kis kitérőként megjegyezzük, hogy amint az Internet egyre inkább üzleti alapokra helyeződik, úgy lesz egyre inkább a viták célpontja is. Vegyük például a pro körzetet. Ezt a bejegyzett szakembereknek szánták. De ki számít szakembernek? És ki fogja ezt tanúsítani? Az orvosok és az ügyvédek nyilván szakembernek számítanak. De mi van a szabadúszó fényképészekkel, a zongoratanárokkal, varázslókkal, vízvezeték-szerelőkkel, fodrászokkal, féregirtókkal, tető válóművészekkel, zsoldosokkal és prostituáltakkal? Vajon ezek a foglalkozások is szakmának számítanak, és így jogosultak a pro körzet névre? És ha igen, ki adja ki a tanúsítványokat az egyes szakmák művelőinek? Általában véve a másodlagos körzetnevekhez, mint amilyen például a cég neve.com, könnyű hozzájutni. Mindössze annyi szükséges hozzá, hogy az ember el megy a megfelelő elsődleges körzet (ez esetben a com) adminisztrátorához, s meg győződik róla, hogy a kívánt név még szabad és nem valaki más védjegye. Ha nincs semmi probléma, akkor az igénylő egy kisebb éves összeg fejében megkapja a nevet. Mára gyakorlatilag minden gyakori (angol) szó elkelt a com körzetben. Próbálja ki a háztartási cikkek, állatok, növények, testrészek stb. neveit! Szinte mind elkelt. Minden körzet nevét az adott névtől a (névtelen) gyökérhez felfelé vezető út adja. A komponenseket pont választja el egymástól (ezt „dot"-nak ejtik). így a Sun Microsystems műszaki részlegének neve lehet eng.sun.com, szemben egy UNIX stílu sú névvel, mint pl. a /com/sun/eng. Vegyük észre, hogy a hierarchikus felépítésből adódóan nincs ütközés az eng.sun.com-bm és az eng.yale.edu-ban használt eng kö zött, ami a Yale angol tanszékének neve lehetne. A körzetneyek lehetnek mind abszolútak, mind relatívak. Az abszolút körzetnevek ponttal végződnek (pl. eng.sun.com.), míg a relatívak nem. A relatív neveket egy adott kör nyezetben kell értelmezni, hogy a valódi jelentésüket megállapíthassuk. Mindkét esetben egy körzetnév a fa egyik csomópontjára és az alatta levő részfára vonatkozik. A körzetnevekben mindegy, hogy kis- vagy nagybetűket használunk-e, tehát az edu és az EDU ugyanazt jelenti. A névkomponensek maximum 63 karakter hosszúak le hetnek, és az egész útvonalnév nem haladhatja meg a 255 karaktert. Elvileg a körzetneveket kétféleképpen illeszthetjük be a fába. Például, a cs.yale.edu egyenértékű megfelelője lehet a us ország körzet alá illeszkedő cs.yale.ct.us névnek. Gyakorlatilag azonban majdnem minden egyesült államokbeli szervezet az általános
629
AZ ALKALMAZÁSI RÉTEG
körzetekhez tartozik, és majdnem minden Egyesült Államokon kívüli szervezet a saját ország körzetéhez tartozik. Nem szól szabály az ellen, hogy egy szervezet két elsődle ges körzetbe is be legyen jegyezve, de a multinacionális cégeken kívül (pl. sony.com és sony.nl) kevés szervezet él ezzel a lehetőséggel. Minden körzet maga ellenőrzi az alatta levő körzetek kiosztását. Például Japánnak külön körzetei vannak, ac.jp, co.jp, a com és edu megfeleltetésére. Hollandiában nincs ilyen szétosztás, hanem minden szervezet egyenesen az nl-htz tartozik. Ily módon mindhárom alábbi cím egyetemek informatikai tanszékének címei: 1. cs.yale.edu (Yale Egyetem, az Egyesült Államokban). 2. cs.vu.nl (Vrije Universiteit, Hollandiában). 3. cs.keio.ac.jp (Keio Egyetem, Japánban). Egy új körzet létrehozásához engedély kell attól a körzettől, amelyhez tartozni fog. Például, ha létrejön egy VLSI-csoport a Yale Egyetemen belül, és vlsi.cs.yale.edu né ven akar futni, akkor attól kell engedélyt kérnie, aki a cs.yale.edu-t karbantartja. Ha sonlóképpen, ha egy új egyetem nyílna, mondjuk a Dél-Dakotai Egyetem, akkor az edu körzet karbantartójától kellene engedélyt kérni, hogy rendelje hozzá a unsd.edu címet. Ily módon nincsenek névkonfliktusok, és minden körzet számon tarthatja a hozzá tartozó alkörzeteket. Miután egy új körzet létrejött, már szabadon létrehozhat hozzá tartozó alkörzeteket (pl. cs.unsd.edu) anélkül, hogy a fán egy fentebb elhelyezkedőtől engedélyt kellene kérnie. Az elnevezések nem a hálózat fizikai elrendezését, hanem a szervezetek határait követik. Például annak ellenére, hogy az informatikai és a villamosmérnöki tanszék ugyanabban az épületben van, és ugyanazt a hálózatot használja, különböző körze tekhez tartozhatnak. Hasonlóan, még ha az informatika tanszék a Babbage Hallban és Turing Hallban megosztva helyezkedik is el, akkor mindkét épületben a hosztok nor mális esetben ugyanahhoz a körzethez tartoznak. 7.1.2.
Erőforrás-nyilvántartás
Minden körzethez tartozhat egy erőforrás-bejegyzés (resource record) halmaz, attól függetlenül, hogy a körzet csak egyetlen hosztból áll, vagy egy elsődleges körzet. Egy egyedüli hoszt esetén általában ez az erőforrás-bejegyzés csak az IP-cím, de ezenkívül még sok másféle erőforrás-bejegyzés létezik. A címfeloldó a DNS-nek küldött körzet névhez tartozó erőforrás-bejegyzéseket kapja vissza. Ezek szerint a DNS igazi fel adata az, hogy megfeleltesse a körzetnevet az erőforrás-bejegyzéseknek. Az erőforrás-bejegyzés egy adatötösből áll. Annak ellenére, hogy az erőforrás-be jegyzéseket a hatékonyság miatt binárisan tárolják, a legtöbb ismertetőben az erőfor rás-bejegyzések ASCI-formában szerepelnek, bejegyzésenként egy sorban. Az álta lunk használt formátum a következő: Körzet_név
Élettartam
Osztály
Típus Érték
630 Típus
SZÁMÍTÓGÉP-HÁLÓZATOK
Érték
Jelentés
SOA
Lista kezdete
Ehhez a zónához tartozó paraméterek
A
Egy hoszt IP-címe
32 bites egész
MX
Levél csere
Prioritás, a levelet váró körzet
NS
Névszerver
Egy ehhez a körzethez tartozó szerver neve
CNAME
Kanonikus név
Körzetnév
PTR
Mutató
Álnév egy IP-címhez
HINFO
Hoszt leírás
CPU és az operációs rendszer ASCI-formában
TXT
Szöveg
Tetszőleges ASCII-szöveg
7.2. ábra. A legfontosabb DNS erőforrás-bejegyzés típusok A Körzetjiév jelenti azt a körzetet, amelyhez a rekord tartozik. Normális esetben minden körzethez sok bejegyzés tartozik, és az adatbázis minden másolata több, kör zettel kapcsolatos információt hordoz. Ez a mező az elsődleges kulcs a kereséshez. A bejegyzések sorrendje nem érdekes az adatbázisban. Az Élettartam mező jelzést ad arról, hogy a bejegyzés mennyire stabil. A nagyon stabil információkhoz magas értékek tartoznak, mint a 86 400 (1 nap másodpercek ben). Azokhoz az információkhoz, amelyek erősen ingatagok, kis értékek tartoznak, mint a 60 (1 perc). Ehhez a témához visszatérünk még, ha majd a gyorsítótárak hasz nálatát tárgyaljuk. Minden erőforrás-bejegyzés harmadik mezője az Osztály. Az Internethez tartozó információknál ez mindig IN. A nem internetes információkhoz más kódokat lehet rendelni, de a gyakorlatban ilyet ritkán lehet látni. A Típus mező a bejegyzés értékének típusára vonatkozik. A legfontosabb típusok a 7.2. ábrán láthatók. Az SOA bejegyzés megadja az elsődleges információforrás nevét a zónához tartozó névszerverről (lásd alább), az adminisztrátor e-levél címét, egy egyedi sorozatszámot, valamint különböző jelzőket és időzítőket. A legfontosabb hejegyzés típus az A (cím) bejegyzés. Egy 32 bites IP-címet tartal maz valamely hoszthoz. Minden internethosztnak legalább egy IP-címmel kell rendel keznie, hogy más gépek kommunikálhassanak vele. Egyes hosztok kettő vagy több hálózati csatlakozással is rendelkeznek, ebben az esetben minden hálózati csatlakozás hoz pontosan egy A típusú rekord tartozik (és ily módon minden IP-címhez is). A DNS-t úgy is be lehet állítani, hogy körben menjen végig ezeken a rekordokon, és az elsőt adja vissza az első kérésre, a másodikat a második kérésre és így tovább. A második legfontosabb bejegyzéstípus az MX bejegyzés. Ez tartalmazza annak a hosztnak a nevét, amely kész a körzethez tartozó levelek fogadására. Azért használják, mert nincs minden gép felkészülve e-levél fogadására. Ha valaki e-levelet szeretne küldeni például a [email protected] címre, akkor a küldő hosztnak találnia kell egy levelezőszervert a microsoft.com körzetben, amelyik hajlandó fogadni az e-levelet. Az MX bejegyzés erről tud információt adni. Az NS bejegyzések névszervereket adnak meg. Például rendszerint minden DNS-
AZ ALKALMAZÁSI RÉTEG
631
adatbázis tartalmaz egy bejegyzést minden elsődleges körzethez. Többek között ez te szi lehetővé, hogy a névfa távoli részeibe is lehessen e-levelet küldeni. Erre a témára később még visszatérünk. A CNAME bejegyzések segítségével álneveket lehet létrehozni. Például, ha valaki, aki ismeri az internetes névkonvenciókat, egy levelet szeretne küldeni valakinek, aki nek a login neve paul az M.I.T. Informatika tanszékén, akkor úgy gondolhatja, hogy a [email protected] cím valószínűleg megfelelő. Valójában azonban ez a cím nem jó, mert az M.I.T. Informatika tanszékének körzete lcs.mit.edu. Az M.I.T. azonban azok részére, akik ezt nem tudják, segítségképpen létrehozhat egy CNAME bejegyzést, ami átirányítja az embereket és programokat a helyes útra. Ezt megteszi pl. a következő bejegyzés: cs.mit.edu 86400 IN CNAME lcs.mit.edu
A CNAME-hez hasonlóan a PTR is egy másik névre mutat. A CNAME-e\ ellentét ben azonban, ami tulajdonképpen csak egy makró, a PTR egy valódi DNS-adattípus, melynek értelmezése az adott környezettől függ. A gyakorlatban majdnem mindig ar ra használják, hogy egy nevet megfeleltessenek egy IP-címnek, hogy lehetővé váljon az IP-címek szerinti keresés, ahol a keresett gép neve az eredmény. Ezt hívják fordí tott keresésnek (reverse lookup). A HINFO bejegyzések lehetővé teszik bárki számára annak megállapítását, hogy a kérdéses körzet milyen gépet és operációs rendszert használ. Végül a TXT bejegyzé sek arra szolgálnak, hogy a körzetek tetszés szerinti módon is azonosíthassák magu kat. Ez utóbbi két bejegyzés a felhasználók kényelmét szolgálja. Nem is kötelező jel legűek, azaz a programok nem számíthatnak rá, hogy megkapják őket (és ha mégis megkapják, valószínűleg nem tudnak mit kezdeni velük). Utolsóként nézzük az Érték mezőt. Ez a mező tartalmazhat egy számot, egy kör zetnevet vagy egy ASCII-karakterláncot. A szemantika a bejegyzés típusától függ. A legfontosabb bejegyzés-típusokhoz tartozó érték mezők leírása a 7.2. ábrán látható. Arra nézve, hogy milyen típusú információk találhatók egy körzethez a DNS-adatbázisban, a 7.3. ábra ad útmutatást. Ez az ábra a 7.1. ábrán látható cs.vu.nl körzet (felté telezett) adatbázisának egy részét mutatja. Az adatbázis hét különböző típusú erőfor rás-bejegyzést tartalmaz. Az első, nem megjegyzés sor a 7.3. ábrán a körzetről ad némi alapinformációt, de ezzel tovább nem foglalkozunk. A következő két sor egy szöveges leírást ad arról, hogy hol található a körzet. A következő két bejegyzés az elsődleges és másodlagos levélfogadó helyet adja meg, [email protected] címre érkező e-levelek számára. Elő ször a zephyr-rel (egy specifikus géppel) kell próbálkozni. Ha nem sikerül, akkor a top következik. Az üres sort (ami az olvashatóságot segíti) követő sorok megadják, hogy aflits egy Sun munkaállomás, amelyen UNIX fut, valamint megadják ennek mindkét IP-címét is. Ezután három lehetőség szerepel aflits.cs.vu.nl-re küldött e-levelek kezelésére. Az el ső választási lehetőség természetesen maga aflits, de amennyiben éppen nem üzemel, akkor a zephyr és a top jöhet szóba, mint második és harmadik lehetőség. A következő egy álnév, a www.cs.vu.nl, így ezt a címet anélkül lehet használni, hogy néven kellene
SZÁMÍTÓGÉP-HÁLÓZATOK
632
; A cs.vu.nl-hez tartozó irányadó adatok star boss (952771,7200,7200,2419200,86400) 86400 IN SOA cs.vu.nl "Faculteit Wiskunde en Informatica." 86400 IN TXT cs.vu.nl "Vrije Universiteit Amsterdam." 86400 IN TXT cs.vu.nl 1 zephyr.cs.vu.nl. 86400 IN MX cs.vu.nl 2 top.cs.vu.nl. 86400 IN MX cs.vu.nl IN IN IN IN IN IN IN IN
7.3. ábra. A cs.vu.rú-hoz tartozó lehetséges DNS-adatbázis egy része nevezni egy adott szervert. Ezen álnév létrehozása lehetővé teszi a cs.vu.nl számára, hogy anélkül cserélje le Világháló (World Wide Web) szerverét, hogy érvénytelenné válna a cím, amit az emberek az eléréshez használnak. Az ftp.cs.vu.nl-xe is ugyanez vonatkozik. A következő négy sor egy tipikus munkaállomás-leírást tartalmaz, esetünkben a rowboat.cs.vu.nl-ét. A megadott információ tartalmazza az IP-címet, az elsődleges és másodlagos levélfogadót, és a gépről szóló információkat. Ezután egy nem UNIX-os rendszer leírása jön, amely önmagában nem képes leveleket fogadni, majd ezt követő en egy, az Internethez csatlakozó lézernyomtatóra vonatkozó bejegyzés. Amik nem láthatók (és nincsenek is a fájlban), az elsődleges körzetek kereséséhez szükséges IP-címek. Ezek a távoli körzetek eléréséhez szükségesek, de mivel azok nem részei a cs.vu.nl körzetnek, ezért nem szerepelnek ebben a fájlban. Ezeket a rootszerverek szolgáltatják, amelyek IP-címei egy rendszer konfigurációs fájlban van nak tárolva, ami a DNS-szerver elindításakor betöltődik a DNS-gyorsítótárba. Körül belül egy tucatnyi rootszerver található szerte a világon, és mindegyik tudja az összes elsődleges körzetszerver IP-címét. Ha tehát egy gép tudja legalább egy rootszerver címét, akkor bármilyen DNS-nevet ki tud keresni.
633
AZ ALKALMAZÁSI RÉTEG
7.1.3.
Névszerverek
Elvileg egyetlen szerver elegendő lenne a DNS-adatbázis tárolására, és a kérések megvá laszolására. Gyakorlatilag ez a szerver annyira túl lenne terhelve, hogy használhatatlan lenne. Továbbá, ha egyszer csak felmondaná a szolgálatot, az egész Internet lebénulna. Az egyetlen szerver miatt adódó problémák elkerülése végett a DNS-névtér egy mást nem fedó' zónákra (zones) van osztva. A 7.1. ábra névterének egy lehetséges fel osztása a 7.4. ábrán látható. Minden zóna tartalmazza a fa egy részét, valamint tartal maz névszervereket, amelyek a zóna hiteles információit tárolják. Normális esetben zónánként egy elsődleges névszerver van, ami egy lemezen levő fájlból nyeri infor mációit, valamint egy vagy több másodlagos névszerver, amelyek az elsődleges név szervertől nyerik információikat. A megbízhatóság növelése érdekében a zónáért fe lelős szerverek egy része lehet a zónán kívül is. A zónán belüli zónahatárok meghatározása a szóban forgó zóna adminisztrátorától függ. A döntés meghozatalában nagy szerepet játszik, hogy hol és mennyi névszerver kell. Például a 7.4. ábrán a Yale-nek van egy szervere a.yale.edu-hoz, ami kiszolgálja az eng.yale.edu-t, de a cs.yale.edu-l nem, ami egy különálló zóna saját névszerverrel. Egy ilyen döntés akkor születik, ha egy tanszék, mint pl. az Angol nyelvi tanszék nem akar saját névszervert üzemeltetni, de pl. az Informatika tanszék igen. Ennek megfele lően a cs.yale.edu egy különálló zóna, míg az eng.yale.edu nem. Ha egy címfeloldó meg szeretne tudni valamit egy körzetnévről, akkor elküldi a le kérdezést egy helyi névszervernek. Ha a keresett körzet a névszerver hatáskörébe tar tozik, mint ahogy pl. az ai.cs.yale.edu a cs.yale.edu alá tartozik, akkor az visszaküldi a hiteles erőforrás-bejegyzéseket. A hiteles bejegyzés (authoritative record) azt je lenti, hogy a bejegyzés attól a szervtől származik, amelyik azt a bejegyzést kezeli, te hát mindig helyes. A hiteles bejegyzések tehát ellentétben vannak a gyorsítótárban le vő bejegyzésekkel, amelyek esetleg idejétmúltak lehetnek. Ha azonban egy távoli körzetről van szó, amelyről nincsen információ a helyi ada tok közt, akkor a névszerver elküld egy lekérdező üzenetet a szóban forgó körzetet
Általános
7.4. ábra. A DNS-névtér egy része zónákra osztással
•
L
Országok
634
SZÁMÍTÓGÉP-HÁLÓZATOK
VU CS Kezdeményező •) névszerver 2
cs.vu.nl
flits.cs.vu.nl
Edu névszerver edu-server.net
3
Yale névszerver yale.edu
4
Yale CS névszerver
cs.yale.edu
8 7.5. ábra. Hogyan keres meg a címfeloldó egy távoli nevet 8 lépésben
tartalmazó elsődleges körzetnek. A művelet megértéséhez vizsgáljuk meg a 7.5. ábrát. Itt egy címfeloldó a flits.cs.vu.nl-&r\ meg szeretné tudni, hogy mi az IP-címe a linda.cs.yale.edu-nak. Az 1. lépésben elküldi kérését a helyi névszervernek, a cs.vu.nlnek. Ez a lekérdezés tartalmazza a keresett körzet nevét, a típust (A) és az osztályt (IN). Tegyük fel, hogy a helyi névszerverhez még sohasem érkezett ezzel a körzettel kapcsolatban lekérdezés, és nem is tud róla semmit. Megkérdezhet néhány közeli név szervert, de amennyiben egyikük sem tud segíteni, elküld egy UDP-csomagot az adat bázisában levő edu-hoz tartozó szervernek (lásd 7.5. ábra), az edu-server.net-mk. Nem valószínű, hogy ez a szerver tudja a linda.cs.yale.edu címét, és valószínűleg a cs.yale.edu-ét sem, de ismernie kell minden gyermekét, tehát továbbítja a kérést a yale.edu névszervernek (3. lépés). Ez szintén továbbküldi a kérést a cs.yale.edu-nak (4. lépés), ahol már biztos megtalálhatók a hiteles bejegyzések. Mivel minden kérés egy klienstől egy szerverig haladt, így az erőforrás-bejegyzés az 5.-től 8.-ig terjedő lé péseken keresztül jut vissza. Amikor aztán ezek a bejegyzések eljutnak a cs.vu.nl névszerverhez, bekerülnek majd egy gyorsítótárba, arra az esetre, ha esetleg később szükség lenne rájuk. Ez az információ azonban nem hiteles, hiszen a cs.yale.edu-ní\ történt változásokat nem frissítik a világ összes gyorsítótárában, ahol számon vannak tartva. Ezért kell, hogy a gyorsítótárbeli bejegyzések rövid élettartamúak legyenek. Emiatt került be az Élet tartam mező minden erőforrás-bejegyzésbe. Ez jelzi a távoli névszerverek számára, hogy meddig tárolják a gyorsítótárban a bejegyzést. Ha egy gépnek már évek óta ugyanaz az IP-címe, akkor lehet, hogy biztonságos ezt az információt 1 napig tárolni. A gyakrabban változó információk esetében biztonságosabb lehet, ha a bejegyzéseket néhány másodperc vagy egy perc elteltével kitörlik. Érdemes megemlíteni, hogy az itt leírt lekérdezési eljárást rekurzív lekérdezésnek (recursive query) nevezik, mert minden szerver, amely nem rendelkezik a keresett információval, tovább keresi azt máshol, majd beszámol az eredményről. Egy másik megoldás is lehetséges. Ebben a megoldásban, ha egy lekérdezést nem lehet kielégíte ni lokálisan, akkor a keresés sikertelen, de annak a szervernek a neve lesz az ered mény, amellyel a sorban következőként próbálkozni lehet. Ennél a módszernél a kli ens jobban irányíthatja a keresést. Vannak olyan szerverek, ahol a rekurzív keresés nincs megvalósítva, és mindig annak a szervernek a nevét adják meg, amelyikkel kö vetkezőleg próbálkozni lehet. Érdemes még arra rámutatni, hogy amennyiben egy DNS-kliens nem kap választ, mielőtt a várakozási ideje lejárna, akkor normális esetben legközelebb egy másik szer verrel fog próbálkozni. A feltételezés ebben az esetben inkább az, hogy a szerver va lószínűleg nem üzemel, mint az, hogy a kérés vagy üzenet elveszett.
635
AZ ALKALMAZÁSI RÉTEG
A DNS ugyan elengedhetetlenül fontos az Internet helyes működéséhez, de valójá ban nem tesz mást, mint hogy leképezi a gépek szimbolikus neveit IP-címekre. Nem segít megtalálni embereket, erőforrásokat, szolgáltatásokat, sem általában vett objek tumokat. Ezek felkutatására egy másik könyvtárszolgáltatást vezettek be, melyet LDAP-nak (Lightweight Directory Access Protocol - könnyű könyvtárelérési protokoll) neveznek. Ez az OSI X.500 könyvtárszolgáltatásának leegyszerűsített vál tozata, melyet az RFC 2551 ír le. A protokoll az információkat egy fába rendezi, és lehetővé teszi a különböző komponensek szerinti kereséseket. Tekinthetjük úgy is, mint egy „arany oldalak" telefonkönyvet. Ebben a könyvben nem fogjuk ennél részlete sebben tárgyalni, de (Weltman és Dahbura, 2000) munkája további információkat ad.
7.2.
Elektronikus levél
Az elektronikus levél vagy e-levél (e-mail), ahogyan sok kedvelője nevezi, már két évtizede használatban van. 1990 előtt jobbára csak a kutatók használták. Az 1990-es években aztán a nagyközönség is megismerte, és használata innentől kezdve exponen ciális ütemben terjedt egészen addig, hogy mára a naponta elküldött e-levelek száma nagyságrendekkel meghaladja a papíralapú (snail mail) levelekét. Akárcsak a kommunikáció egyéb formáinak, az e-levélnek is megvannak a saját konvenciói és stílusai. Mindenekelőtt nagyon informális, és túlságosan is csábító a használata. Azok az emberek, akik még álmukban se gondolnának arra, hogy telefo náljanak, sőt levelet írjanak egy Nagyon Fontos Személynek, egy másodpercig sem haboznak egy hanyagul megírt e-levél elküldésénél. Az e-levél tele van olyan szlenggel, mint például a BTW (By The Way - apropó), ROTFL (Rolling On The Floor Laughing - gurulok a röhögéstől) és IMHO (In My Humble Opinion - szerény véleményem szerint). Sokan mosolyikonnak (smileynek vagy emoticonnak) nevezett kis ASCII-szimbólumokat is használnak az e-leveleikben. Mosoly ikon
Jelentés
Mosoly ikon
Jelentés
>)
Vidám vagyok
<:-(
Tökfilkó
:-( :-l
Szomorú/mérges vagyok
(-: :-)X
Ausztrál
Egykedvű vagyok
;-) :-(0)
Kacsintok
:+)
Nagy orr
Kiabálok
>))
Dupla toka
:-(*)
Hányingerem van
:-0
Bajusz
=1.-)
Abe Lincoln
=):-) *<:-)
Uncle Sam
8-)
Szemüveges
Mikulás
C:-)
Okostojás
# • - )
Csokornyakkendős ember
Kócos haj
7.6. ábra. Néhány mosolyikon. A vizsgán nem kérdezzük ezeket:-)
636
SZÁMÍTÓGÉP-HÁLÓZATOK
Ezek közül mutat be néhány érdekesebbet a 7.6. ábra. Legtöbbjük rögtön érthető lesz, ha elfordítjuk a könyvet az óramutató járásával megegyező irányban 90 fokkal. (Sanderson és Dougherty, 1993) egy 650 mosolyikont tartalmazó kiskönyvet is kiadtak. Az első e-levél rendszerek egyszerű fájlátviteli protokollokból álltak azzal a kon vencióval, hogy az üzenetek (azaz a fájlok) első sora a címzettre utalt. Az idő múlásá val azonban egyre világosabbá váltak ezen megközelítés hátrányai. Többek között a következő panaszok merültek fel: 1. Nehézkes volt egyszerre több embernek levelet küldeni. A főnököknek gyakran van szükségük erre a funkcióra, hogy emlékeztetőket küldjenek beosztottjaiknak. 2. Az üzeneteknek nem volt belső szerkezetük, ezért bonyolult volt a számítógépes feldolgozásuk. Például, ha egy továbbított üzenet be volt ágyazva egy másik üze netbe, akkor azt nehéz volt onnan kihámozni. 3. A feladó sosem tudta, hogy a levél megérkezett-e vagy sem. 4. Nem volt könnyű megoldani, hogy a titkárnő kezelhesse a több hétig üzleti úton levő főnök levelek. 5. A felhasználói felület olyan gyengén volt egybeépítve az átviteli rendszerrel, hogy a felhasználónak először meg kellett szerkesztenie a fájlt, aztán kilépni a szerkesz tőből, és külön meghívni a fájlátviteli programot. 6. Nem volt lehetséges szöveget, képeket, faxot és hangot is tartalmazó levelek létre hozása és küldése. Ahogy a tapasztalatok gyűltek, egyre kifinomultabb e-levél rendszerek láttak nap világot. 1982-ben tették közzé az ARPANET e-levél rendszerének javaslatát, a 821-es (átviteli protokoll) és 822-es (üzenetformátum) RFC-kben. Ezek kisebb módosítások után az RFC 2821 és 2822 révén váltak internetszabvánnyá, de az internetes e-levélre még ma is mindenki RFC 822-ként hivatkozik. 1984-ben a CCITT megfogalmazta az X.400 javaslatát. Ma, két évtizednyi versen gés után az RFC 822-n alapuló e-levél rendszereket széles körben használják, az X.400-alapúak pedig eltűntek. Dávid és Góliát bibliai történetét idézi az, hogy egy olyan rendszer, melyet egy maréknyi végzős informatikus barkácsolt össze, hogyan győzött le egy, a világ minden telefontársasága, számos kormánya és a számítógépes ipar nagy része által támogatott, hivatalos nemzetközi szabványt. Az RFC 822 nem azért sikeres, mert annyira jó, hanem mert az X.400 olyan gyen ge konstrukció és olyan bonyolult, hogy senki sem tudta még rendesen implementálni. Ha választani lehet egy, az RFC 822-n alapuló, egyszerű, de működő, illetve egy amúgy csodálatos, de nem működő X.400 levelezőrendszer között, a legtöbb szerve zet az előbbit választja. Ez talán tanulságnak sem utolsó. A továbbiakban tehát mi is az Internet e-levél rendszerére fogunk koncentrálni.
AZ ALKALMAZÁSI RÉTEG
7.2.1.
637
Architektúra és szolgáltatások
Ebben a részben átfogó ismertetést adunk az e-levél rendszerek felépítéséről és arról, hogy mire képesek. Általában két alrendszerből állnak, a felhasználói ügynökből (user agent), amely lehetővé teszi a felhasználók számára az üzenetek olvasását és küldését, valamint az üzenettovábbító ügynökből (message transfer agent), ami a leveleket eljuttatja a feladótól a címzettig. A felhasználói ügynökök helyi programok, amelyek parancs alapú, menü alapú vagy grafikus módszereket nyújtanak az e-levél rendszerrel való érintkezésre. Az üzenettovábbító ügynökök általában rendszerdémo nok (daemons), vagyis olyan folyamatok, melyek a háttérben futnak. A feladatuk az, hogy átvigyék az e-leveleket a rendszeren. Az e-levél rendszerek általában öt alapvető funkciót támogatnak. Vegyük sorra ezeket! A szerkesztés (composition) levelek és válaszok létrehozására utal. Ugyan bár mely szövegszerkesztő használható a levél törzsének megírásához, a rendszer azonban segítséget nyújthat a címzésnél, valamint a levélhez csatolt számos, fejlécben található mezővel kapcsolatban. Például egy levél megválaszolásakor az e-levél rendszer kihá mozhatja a kapott levélből a feladó címét, és beillesztheti azt a megfelelő helyre. A továbbítás (transfer) a levelek feladótól címzettig való eljuttatására utal. Ez nagyrészt a címzettel vagy egy közbülső géppel való kapcsolat felépítését, az üzenet elküldését és a kapcsolat bontását igényli. Az e-levél rendszernek ezt a felhasználó bevonása nélkül, magától kell elvégeznie. A visszajelzés (reporting) feladata, hogy megmondja a feladónak, hogy mi történt az üzenettel. Sikeres volt-e a kézbesítés? Visszautasították-e a levelet? Esetleg elve szett? Számos alkalmazás létezik, amelyekben a kézbesítés nyugtázása fontos, esetleg hivatalos jelentőséggel is bírhat („Tisztelt Bíróság, sajnos az én e-levél rendszerem nem valami megbízható, így azt hiszem, elveszhetett valahol az elektronikus idézés."). Az érkező levelek megjelenítése (displaying) azért szükséges, hogy az emberek el tudják azokat olvasni. Néha konverzióra van szükség, vagy egy speciális megjelenítőt kell meghívni, ha pl. az üzenet egy PostScript fájl vagy digitalizált hang. Egyszerű konverzióval és formázással is próbálkoznak néha. Az elrendezés (disposition) az utolsó lépés, és arra vonatkozik, hogy a címzett mit tesz a kapott üzenettel. A lehetőségek közé tartozik például, hogy eldobhatja olvasás nélkül, vagy elolvasás után, esetleg elmentheti és így tovább. Szintén lehetőségnek kell lenni a levelek előhívására, újraolvasására, továbbítására vagy másképp történő feldolgozására. Ezen alapvető szolgáltatások mellett a legtöbb e-levél rendszer számos más, fejlet tebb szolgáltatást is kínál. Említsünk meg néhányat ezek közül. Ha valaki elköltözik, vagy hosszabb ideig távol van, akkor esetleg szeretné átirányítani leveleit, tehát a rendszernek ezt automatikusan el kell tudnia végezni. A iegtöbb rendszer lehetővé teszi a felhasználóknak, hogy postaládákat hozzanak létre a kapott levelek tárolására. Szükség van tehát parancsokra, amelyek segítségével létre lehet hozni vagy megsemmisíteni postaládákat, megnézni tartalmukat, betenni vagy törölni belőlük leveleket és így tovább. Nagy iparvállalatok igazgatóinak gyakran szüksége van rá, hogy egyszerre küldjön minden beosztottjának, ügyfelének vagy ellátójának levelet. Ez adott ötletet a levele-
638
SZÁMÍTÓGÉP HÁLÓZATO K
zési listákhoz (maiiing lists), amelyek e-levél címekből álló listák. Amennyiben egy üzenet érkezik a levelezési listára, akkor minden listán levő kap egy másolatot róla. Szintén fontos a tértivevényes e-levél ötlete, hogy a küldő értesítést kapjon a kéz besítésről. Ugyanakkor a kézbesíthetetlen levelekre figyelmeztető automatikus vissza jelzésre is szükség lehet. Mindenesetre a küldőnek mindenképpen kell valamilyen visszajelzés az elküldött levelek sorsa felől. További fejlett szolgáltatás pl. az indigó másolatok, a magas prioritású e-levél, a titkos (titkosított) e-levél, az arra az esetre alternatív címzettel rendelkező e-levél, mi kor a címzett elérhetetlen, és a titkárnők számára a lehetőség, hogy a főnökük e-levelét kezelhessék.
Tökfej Dániel Úr Willow Lane 18 WhitePlains, NY 10604
Egyesült Gizmo Fő utca 180 Boston, MA 02120
-0)
o CD
N
(/)
•03
Név: Tökfej Dániel Ur Utca: Willow Lane 18 Állam: NY Irányítószám: 10604 Sürgős Titkosítás: nincs
Feladó: Egyesült Gizmo Cím: Fő utca 180 Hely: Boston, MA 02120 Dátum: 1996. szept. 1. Tárgy: 1081-es számla
1996. szept. 1.
Tárgy: 1081-es számla Kedves Tökfej Úr, Számítógépes nyilván tartásunk szerint ön nem fizette be a fenti 0,00 $ értékű számlát. Kérem haladéktalanul küldjön számunkra egy 0,00 $ értékről szóló csekket.
Tisztelettel Egyesült Gizmo
(a)
Kedves Tökfej Úr, Számítógépes nyilván tartásunk szerint ön nem fizette be a fenti 0,00 $ értékű számlát. Kérem haladéktalanul küldjön számunkra egy 0,00 $ értékről szóló csekket.
Tisztelettel Egyesült Gizmo
(b)
7.7. ábra. Borítékok és üzenetek, (a) Postai levél, (b) Elektronikus levél
AZ ALKALMAZÁSI RÉTEG
639
Az e-leveleket manapság már elterjedten használják az iparban a cégen belüli kom munikációban. Lehetővé teszi az akár különböző időzónákban tartózkodó alkalmazot tak részére, hogy összetett projekteken dolgozzanak. Azzal, hogy többnyire eltakarják a beosztást, életkort és a nemet, az e-levél segítségével lebonyolított eszmecserék egy re inkább az ötletekre és nem a hivatali beosztásra koncentrálódnak. Az e-levél segít ségével egy nyári munkára szerződött tanuló briliáns ötletének nagyobb hatása lehet, mint az ügyvezető alelnök egy szegényes ötletének. Egyes cégek úgy tartják, hogy az e-levél 30 százalékkal növelte hatékonyságukat (Perry és Adam, 1992). A kulcsötlet a modern e-levél rendszerekben a boríték (envelope) és a tartalom különválasztása. A boríték magába foglalja az üzenetet. Tartalmazza az üzenet továb bításához szükséges információkat, mint a címet, a prioritást és biztonsági szintet, amelyek mindegyike az üzenettől teljesen elkülönül. Az üzenettovábbító ügynökök, a postához hasonlóan, a borítékot használják az útvonal meghatározására. A borítékon belüli üzenet két részből áll: a fejrészből (header) és a szövegrészből vagy törzsből (body). A fejrész vezérlési információkat tartalmaz a felhasználói ügy nökök részére. A szövegrész teljesen az emberi címzettnek szól. A boríték és a szö vegrész a különféle levelek esetén a 7.7. ábrán látható.
7.2.2.
A felhasználói ügynök
Az e-levél rendszereknek, ahogyan már láttuk is, két alapvető része van: a felhaszná lói és az üzenettovábbító ügynök. Ebben a részben a felhasználói ügynökről lesz szó. A felhasználói ügynök általában egy program (melyet néha üzenetolvasónak ne veznek), ami számtalan, az üzenetek létrehozásával, fogadásával, azok megválaszolá sával és a postaládák kezelésével kapcsolatos parancsot képes értelmezni. Egyes fel használói ügynököknek díszes menü- vagy ikonvezérelt felhasználói felülete van, melynek kezeléséhez egér szükséges, mások viszont csak 1 betűs parancsokat várnak a billentyűzetről. Funkcionálisan ezek megegyeznek. Néhány rendszer menü- vagy ikonvezérelt ugyan, de emellett elfogad billentyűparancsokat is.
E-levél küldése Egy e-levél elküldéséhez a felhasználónak meg kell adnia magát az üzenetet, a cím zettet, és esetleg még egyéb paramétereket. Az üzenet elkészíthető egy külön kis szer kesztővel vagy szövegszerkesztő alkalmazással, esetleg egy erre kialakított, a felhasz nálói ügynökkel egybeépített szerkesztővel. A címzett címének olyan alakúnak kell lennie, hogy azt a felhasználói ügynök kezelni tudja. Sok felhasználói ügynök a fel használó® dns-cím formában várja a címeket. Mivel a DNS-t már megtárgyaltuk eb ben a fejezetben, erre most nem térünk ki még egyszer. Érdemes azonban megjegyezni, hogy más címzési formák is léteznek. A gyakorlat ban az X.400 címek teljesen eltérők a DNS-címektől. Ezek attribútum = érték párok ból tevődnek össze, például:
640
SZÁMÍTÓGÉP-HÁLÓZATOK
/C=US/SP=MASSACHUSETTS/L=CAMBRIDGE/PA=360 MEMORIAL DR./CN=KEN SMITH/
Ez a cím megadja az országot, az államot, a helyet, a személyes címet és egy szok ványos nevet (Ken Smith). Sok más attribútum is szóba jöhet, így annak is lehet leve let küldeni, akinek a neve ugyan nem ismert, de ismert elegendő számú más attribú tuma (pl. cég és betöltött állás). Bár az X.400 címek jóval kényelmetlenebbek, mint a DNS-nevek, a legtöbb e-levél rendszer biztosít ún. fedőneveket (aliases) vagy becene veket is, melyek lehetővé teszik, hogy beírjuk vagy listából válasszuk ki a személy nevét, hogy aztán megkapjuk a megfelelő e-levél címet. Tehát még az X.400 címek esetén sem feltétlenül szükséges ténylegesen beírni ezeket a furcsa karakterláncokat. A legtöbb e-levelező rendszer támogatja a levelezési listákat, tehát levelét a fel használó egyetlen utasítással, egyszerre elküldheti egy lista tagjainak. Araennyiben a levelezési lista helyben van nyilvántartva, akkor a felhasználói ügynök egyszerűen minden címzettnek elküldhet egy különálló üzenetet. Ha azonban a listát valahol más hol tárolják, akkor a levelek csak ott lesznek szétválasztva. Például, ha egy madárbarát csoportnak van egy birders nevű levelezési listája, ami a meadowlark.arizona.edu-n üzemel, akkor minden, a [email protected] címre küldött levél elő ször eljut az Arizonai Egyetemre, és csak ott válik szét a lista tagjainak megfelelő üzenetekre, bárhol éljenek is a világban. A levelezési lista használói a címből nem tudják megállapítani, hogy ez egy levelezési lista. Lehet akár Gábriel O. Birders pro fesszor személyes postaládája.
E-levelek olvasása Általában amikor a felhasználói ügynök elindul, mielőtt még bármit is kiírna a képer nyőre, megnézi, hogy a felhasználó postaládájában van-e új e-levél. Ezután vagy közli a postaládában levő üzenetek számát, vagy megmutat minden levélből egy rövid, egy soros összefoglalót, miközben parancsra várakozik. A felhasználói ügynök működésének bemutatására példaképpen vegyünk egy tipi kus levélkezelő forgatókönyvet. Miután a felhasználói ügynök elindult, a felhasználó egy összefoglalást kér az e-leveleiről. Ekkor egy, a 7.8. ábrán láthatóhoz hasonló kép jelenik meg a képernyőn. Minden sor egy levélre vonatkozik. Ebben a példában a pos taládában nyolc levél van. Minden sorban több mező van, amelyek a megfelelő levél borítékjából vagy a fej részéből származnak. Az egyszerűbb e-levél rendszerekben a programba beépített me zők jelennek meg. A kifinomultabb rendszerekben a felhasználó beállíthatja, hogy mely mezők jelenjenek meg, egy felhasználói profil (user profilé) megadásával, ami egy, a megjelenítési formát tartalmazó fájl. Példánkban az első mező az üzenet száma. A második mező, a Jelzők, tartalmazhat A'-t, ami azt jelenti, hogy a levél nem új, ha nem már elolvasták, és későbbre eltették; A-t, ami azt jelenti, hogy a levelet már meg válaszolták; és/vagy F-et, ami azt jelenti, hogy feladták a levél egy másolatát valaki nek. Más jelzők is elképzelhetők. A harmadik mező megadja a levél méretét, a negyedik pedig, hogy ki küldte azt. Mivel ez a mező egyszerűen a levélből lett kihámozva, ezért tartalmazhat keresztneve-
641
AZ ALKALMAZÁSI RÉTEG
Hossz bájtokban
Tárgy
Küldő
#
Jelzők
1
K
1030
asw
A MINIX-szel kapcsolatos változások
2
KA
6348
trudy
Nem minden Trudy goromba
3
KF
4519
Amy N. Wong
Információkérés
4
1236
bal
Bioinformatika
5
104110
kaashoek
Anyag mellérendelt hálózaton
6
1223
Frank
Re: Elbírálná a pályázati anyagomat
7
3110
guido
Cikkünket elfogadták
8
1204
dmr
Re: A hallgatóm látogatása
7.8. ábra. Példa egy postaláda tartalmára ket, teljes neveket, névkezdőbetűket, loginneveket vagy amit a küldő megad. Végül a Tárgy mező rövid leírást ad a levél tartalmáról. Azok, akik elfelejtenek tárgyat adni leveleiknek, gyakran tapasztalják, hogy a válaszokat nem sietik el. Miután a fejrészek megjelentek a képernyőn, a felhasználó számos műveletet hajthat végre, például megjeleníthet vagy törölhet egy üzenetet stb. A régebbi rendszerek szö veges alapúak voltak, és jellemzően egybetűs parancsokat használtak ezekhez a műve letekhez, mint például T (type message - üzenet kiíratása), A (answer message - válasz küldés), D (delete message - üzenet törlése) és F (forward message - üzenet továbbítá sa). A szóban forgó üzenetet egy paraméter segítségével lehetett megadni. Az újabb rendszerek grafikus felületet használnak. A felhasználónak itt rendszerint egy ikonra kell kattintania, hogy megjelenítsen, megválaszoljon, töröljön vagy továbbítson egy üzenetet. Az e-levél hosszú utat tett meg azóta, amikor még pusztán fájlátvitelt jelentett. Ma a komolyabb felhasználói ügynökök igen nagy mennyiségű e-levél kezelését is lehe tővé teszik. Az ilyen eszközök felbecsülhetetlen értékkel bírnak azok számára, akik évente több ezer üzenetet küldenek el.
7.2.3.
Üzenetformátumok
Térjünk most át a felhasználói ügynököktől magukhoz a levélformátumokhoz. Először az alap ASCII e-leveleket vizsgáljuk meg az RFC 822 használatával, majd pedig a 822-es RFC egy multimédia kiterjesztését. RFC 822 A levelek egy egyszerű borítékból (ami az RFC 821-ben van leírva), néhány fejrész mezőből, egy üres sorból és az üzenetrészből állnak. Minden fejrészmező (logikailag) egyetlen ASCII-szövegű sorból áll, amely tartalmazza a mező nevét, egy kettőspontot és a legtöbb mezőnél egy értéket. Az RFC 822 egy régi szabvány, és nem különbözteti tisztán meg a borítékot és a fejrészmezőket, ahogyan azt egy új szabvány tenné. A
642
SZÁMÍTÓGÉP-HÁLÓZATOK
Fejrészmező
Jelentés
To:
Az elsődleges címzett(ek) e-levél címe(i)
Cc:
A másodlagos címzett(ek) e-levél címe(i)
Bcc:
A vak indigó másolat címzettjének/címzettjeinek e-levél címe(i)
From:
A levél szerzőjének neve
Sender:
A tényleges feladó e-levél címe
Received:
A úton minden üzenettovábbító ügynök hozzáad egy ilyen sort a levélhez
Retum-Path:
Arra használható, hogy megadjon egy visszafele vezető utat a feladóhoz
7.9. ábra. Az RFC 822-es üzenettovábbítással kapcsolatos fejrészmezői szabványt kicsit átdolgozták ugyan az RFC 2822-ben, teljesen átalakítani azonban nem lehetett a kiterjedt használata miatt. Normális esetben a felhasználói ügynök öszszerakja a levelet, majd átadja azt az üzenettovábbító ügynöknek, amely aztán a fej rész egyes mezőiből összeállítja a tényleges borítékot, ami némileg régimódi keveréke a borítéknak és üzenetnek. Az üzenettovábbítással kapcsolatos legfontosabb mezőket a 7.9. ábrán soroltuk fel. A To: mező a DNS címét tartalmazza az elsődleges címzettnek. Egy üzenetnek több címzettje is lehet. A Cc: mező az esetleges másodlagos címzettek címét adja meg. A továbbításnál nincs különbség az elsődleges és másodlagos címzettek között. Ez telje sen pszichológiai természetű megkülönböztetés, amely pusztán a levelezőknek lehet fontos, azonban a levelező rendszernek nem. A Cc: (Indigó másolat - Carbon copy) elnevezés bevett szokás, azonban kissé elavult, hiszen a számítógépek nem hasz nálnak indigót. A Bcc: (Vak Indigó másolat - Blind carbon copy) hasonló a Cc: me zőhöz, ez a sor azonban kitörlődik minden elsődleges és másodlagos címzettnek kül dött másolatból. Ez a sajátosság lehetővé teszi, hogy kívülállóknak is lehessen máso latot küldeni anélkül, hogy azt az elsődleges és másodlagos címzett megtudná. A következő két mező a From: és Sender: rendre az üzenet szerzőjét, valamint elküldőjét adja meg. Ezek nem feltétlenül egyeznek meg. Például egy ügyintéző megír egy levelet, de a titkárnője küldi el azt. Ebben az esetben az ügyintéző szerepel a From: mezőben, míg a Sender: mezőben a titkárnő jelenik meg. A From: mező köte lező, a Sender: mező elhagyható, ha értékük megegyezik. Ezek a mezők abban az esetben kellenek, ha a levél nem továbbítható és vissza kell küldeni a feladónak. A levél útja mentén minden üzenettovábbító ügynök hozzáad egy Received: mezőt tartalmazó sort a levélhez. Ez a sor tartalmazza az ügynök azonosítóját, a dátumot, az időt és más információkat, amelyek a forgalomirányító rendszerben levő hibák felde rítéséhez használhatók. A Return-Path: mezőt az utolsó üzenettovábbító ügynök ragasztja a levélhez, és ar ra szolgál, hogy megadja a feladóhoz visszavezető utat. Elvileg ez az információ a Received: mezőkből is összeállítható (kivéve a feladó postafiókjának nevét), de ezt ritkán teszik, és ez a mező többnyire különben is csak a feladó címét tartalmazza.
643
AZ ALKALMAZÁSI RÉTEG
Fejrészmező
Jelentés
Date:
Az üzenet küldésének dátuma és ideje
Reply-To:
A választ erre az e-levél címre kell küldeni
Message-ld:
Egyedi üzenetazonosításra használható szám
In-Reply-To:
Annak a levélnek a Message-ld-je, amire ez a válasz
References:
Más kapcsolódó levelek Message-ld-je
Keywords:
A felhasználó által választott kulcsszavak
Subject:
A levél tartalmának rövid összefoglalása az egysoros megjelenítéshez
7.10. ábra. Néhány, az RFC 822 üzenetek fejrészében előforduló mező A 7.9. ábrán látható mezőkön kívül az RFC 822 levelei tartalmazhatnak még né hány, a felhasználói ügynökök vagy az emberek által használt mezőt. A legáltaláno sabbak ezek közül a 7.10. ábrán láthatók. Legtöbbjük jelentése könnyen megérthető, ezért nem ismertetjük mindegyiket részletesen. A Reply-To: mezőt akkor használják, ha sem a szerző, sem a feladó nem szeretné látni a választ. Tegyük fel például, hogy egy marketingmenedzser ír egy e-levelet, amely egy új termékről számol be az üzletfeleknek. A levelet a titkárnő küldi el, de a Reply-To: mezőben az eladási osztály vezetőjének címe szerepel, aki képes a kérdése ket megválaszolni, és a rendeléseket felvenni. Ez a mező akkor is hasznos, ha a fel adónak két e-mail címe van, és a másikra kéri a választ. Az RFC 822 határozottan kijelenti, hogy a felhasználók kitalálhatnak saját haszná latra új fejrészmezőket, feltéve, hogy azok X-szel kezdődnek. A saját használatú és hi vatalos mezők közti konfliktus elkerülése végett garantált, hogy semelyik hivatalos fejrészmező nem fog a jövőben sem X-szel kezdődni. Néhány okostojás egyetemista az X-Fruit-of-the-Day: vagy X-Disease-of-the-Week:-hez hasonló mezőket ragaszt a levelekhez, amelyek legálisak ugyan, de nem mindig az értelemről tanúskodnak. A fejrészmezők után következik az üzenetrész. A felhasználók azt írnak ide, amit akarnak. Sokan ASCII-rajzokat tartalmazó aláírással, kisebb-nagyobb költőktől szár mazó idézetekkel, politikai megjegyzésekkel, felelősségelhárító nyilatkozatokkal zár ják leveleiket (például: Az XYZ cég nem felelős azért, amit mondok; valójában nem is érti meg).
MIMÉ - többcélú hálózati levelezéskiterjesztés Az ARPANET korai szakaszában az e-levelek kizárólag ASCII-karakterekből álló an gol nyelven írt szöveges üzenetekből álltak. Ehhez tökéletesen megfelelt az RFC 822: megadta a fejrészmezőket, de a tartalmat teljesen a felhasználó tetszésére bízta. Ma napság a világméretű Internethez ez a megközelítés már nem elég. Problémák merül nek fel, többek között, a következő üzenetek küldésével:
644
SZÁMÍTÓGÉP-HÁLÓZATOK
1. Amelyek ékezetes betűket tartalmazó nyelven íródtak (pl. francia és német). 2. Amelyek nem latin betűkkel íródtak (pl. héber és orosz). 3. Amelyek ábécé nélküli nyelven íródtak (pl. kínai és japán). 4. Amelyek egyáltalán nem is tartalmaznak szöveget (pl. hang vagy kép). Az RFC 1341-ben javasoltak egy megoldást, amit a 2045-2049-es RFC-kben korsze rűsítettek. A megoldás a MIMÉ (Multipurpose Internet Mail Extensions - több célú hálózati levelezéskiterjesztés), mely mára igen elterjedt. A következőkben erről lesz szó. A MIMÉ-vei kapcsolatos további információk az RFC-kben találhatók. A MDVIE alapötlete az, hogy tovább használja az RFC 822 által leírt formát, de a szö vegrésznek is struktúrát ad, és kódolási szabályokat definiál a nem ASCI-üzenetek szá mára. Azzal, hogy a MEvIE-üzenetek nem térnek el az RFC 822-tól, tovább lehet használni a meglevő levelező programokat, valamint protokollokat. Csupán a küldésre és fogadásra való programokat kell lecserélni, ezt pedig a felhasználók maguk is meg tudják tenni. A MIMÉ öt új üzenet-fejrészmezőt definiál, amelyek a 7.11. ábrán láthatók. Az el ső ezek közül egyszerűen megadja az üzenetet fogadó felhasználói ügynöknek, hogy ez egy MIME-üzenet, és azt, hogy a MIMÉ melyik verzióját használja. Minden olyan üzenet, amelyben nem szerepel a MIME-version: fejrészmező egyszerű angol szöve ges üzenetnek számít, és ennek megfelelően kerül feldolgozásra. A Content-Description: fejrészmező egy ASCII-karakterlánc, amely megadja az üzenet típusát. Ez a fejrészmező azért kell, hogy a címzett eldönthesse, hogy érdemes-e visszakódolni az üzenetet. Ha a mező azt tartalmazza, hogy: „Fénykép Barbara ver senyegeréről", és az illető, aki kapja, nem kedveli a versenyegereket, akkor valószínű leg eldobja azt, és nem kódolja vissza nagy felbontású színes képpé. A Content-ld: fejrészmező azonosítja a tartalmat. Ugyanazt a formátumot használ ja, mint a standard Message-ld: fejrészmező. A Content-Transfer-Encoding: azt adja meg, hogy a szövegrészt milyen módszer rel csomagolták a hálózati átvitelre, melynek a legtöbb nem betű, szám vagy írásjel karakter áldozatul eshet. Öt séma áll rendelkezésre (plusz egy lehetőség az új sémák számára). A legegyszerűbb séma a sima ASCII-szöveg. Az ASCII-karakterek 7 biten kódolhatók, és az e-levélprotokoll közvetlenül szállítani tudja őket, feltéve, hogy egy sor nem haladja meg az 1000 karaktert. Jelentés
Fejrészmező MIME-Version:
Azonosítja a MIME-verziót
Content-Description:
Ember által olvasható leírás az üzenet tartalmáról
Content-ld:
Egyedi azonosító
Content-Transfer-Encoding:
Megadja, hogy a szövegrész milyen módon lett csomagolva az átvitelre
Content-Type:
Megadja az üzenet típusát és formátumát
7.11. ábra. A MIME-féle RFC 822 fejrészmezők
AZ ALKALMAZÁSI RÉTEG
645
A következő" legegyszerűbb séma ugyanez, csak 8 bites karaktereket használ, azaz minden érték O-tól 255-ig terjed. Ez a kódolási séma megszegi az (eredeti) internetprotokoll szabályait, azonban használják a^ Internet olyan részein, ahol az eredeti protokoll kibővített változata működik. Azzal, hogy deklarálják ezt a kódolást, még nem lesz legális, de ha külön feltüntetik létezését, az legalább segít megmagyarázni, ha valami gond adódik. A 8 bites üzeneteknek azonban még mindig tartaniuk kell ma gukat a maximum sorhossz szabályhoz. Azok az üzenetek, amelyek bináris kódolást használnak, még rosszabbak. Ezek tet szőleges bináris fájlok, amelyek nemcsak 8 bitesek, hanem az 1000 karakteres sor hossz határt sem veszik figyelembe. Nincs garancia rá, hogy a bináris üzenetek kor rektül érkeznek meg, ennek ellenére sokan küldenek ilyet. A bináris üzenetek korrekt csomagolási módja a base64 kódolás (base64 encoding), vagy ahogyan néha nevezik az ASCII-vértezet (ASCII armor). Ebben a sémá ban 24 bites csoportokat 6 bites egységekre tördelnek úgy, hogy minden egység értéke szerint egy legális ASCII-karakter formájában kerül átvitelre. A kód a következő: az „A" 0-nak, a „B" az l-nek, a „C" a 2-nek stb. felel meg, majd a nagybetűket a 26 kisöeía követi, ezütánjön a tíz -szám, végül a •+ jel és a /jer, a 62-nek és a 63-nak megfe lelően. Az == és = szekvenciák arra szolgálnak, hogy jelezzék, ha az utolsó csoport csak 16 vagy 8 bitet tartalmaz. A soremelés és kocsi-vissza jelek a kódban nem számí tanak, így ezeket tetszés szerint lehet használni a rövid sorok elérése érdekében. Ezzel a sémával biztonságosan lehet tetszőleges bináris szöveget küldeni. Azoknál az üzeneteknél, amelyek majdnem ASCII formátumúak, és csak néhány nem ASCII-karaktert tartalmaznak, a base64 kódolás nem kifejezetten hatékony. Ilyenkor inkább az idézett nyomtatható karakteres kódolás (quoted-printable encoding) használható. Ez csak 7 bites, és a 127 feletti értékű karaktereket egy egyenlő ségjelet követő, két hexadecimális szám kódolja. Összefoglalva, a bináris adatot a base64 vagy az idézett nyomtatható karakteres kó dolással kell küldeni. Ahol jogos érvek szólnak ezek ellen a kódolások ellen, ott lehe tőség van egy felhasználó által definiált kódolás megadására a Content-Trasfer-Encoding: fejrészmező segítségével. A 7.11. ábrán utolsóként feltüntetett fejrés^mező tulajdonképpen a legérdekesebb. Ez az üzenet tartalmának természetét határozz^ meg. Az RFC 2045 hét típust definiál, és mindegyiknek van egy vagy több altípusa. A típust és az altípust perjellel választják el, valahogy így: Content-Type: video/mpeg
Az altípust is explicit módon meg kell adni a fejrészmezőben; nem léteznek alapér telmezettek. A kezdeti típusokat és altípusokat a 7.12. ábra mutatja. Azóta sok új tí pussal bővült a lista, és folyamatosan tovább b§vül, ahogyan az igények diktálják. Nézzük most végig a típusokat. A text típus a rendes szöveget jelenti. A text/plain kombináció az általános üzeneteket jelenti, amelyeket további kódolás és alakítás nél kül lehet fogadni és megjeleníteni. Ez teszi lehetővé az általános üzenetek MIME-formában való küldését mindössze néhány extra ffcjrészmező hozzáadásával.
646
SZÁMÍTÓGÉP-HÁLÓZATOK
Image
Leírás
Altípus
Típus Text
Plain
Formázatlan szöveg
Enriched
Szöveg egyszerű formázási parancsokkal
Gif
Állókép GIF formátumban
Jpeg
Állókép JPEG formátumban
Audio
Basic
Hallható hang
Videó
Mpeg
Film MPEG formátumban
Application
Octet-stream
Értelmezhetetlen bájtsorozat
Message
Multipart
Postscript
Nyomtatható dokumentum PostScript formátumban
Rfc822
MIMÉ RFC 822-es üzenet
Partial
Az átvitelhez több részre bontott üzenet
Extemal-body
Magát az üzenetet a hálózaton keresztül kell elhozni
Mixed
Független üzenetdarabok megadott sorrendben
Alternative
Ugyanaz az üzenet különböző formátumokban
Parallel
Az üzenetdarabokat egyszerre kell nézni
Digest
Minden rész egy teljes RFC 822-es üzenet
7.12. ábra. A 2045-ös RFC-ben definiált MIME-típusok és altípusok A text/'enriched altípus lehetővé teszi, hogy a levelet egy egyszerű jelölő nyelvvel lehessen tarkítani. A nyelv egy rendszerfüggetlen módot nyújt a félkövér, a dőlt, a ki sebb és nagyobb betűk, a betűtípus, a sorkizárás, az alsó és felső indexelés, valamint az egyszerű elrendezés jelzésére. A jelzési nyelv az SGML-en (Standard Generalized Markup Language - szabványos általános jelzési nyelv) alapul, ami a Világháló HTML-formátumának is alapja. Például a Az idő elérkezett, mondta a rozmár... üzenet a következőképpen nézne ki Az idő elérkezett, mondta a rozmár... A fogadó rendszer feladata, hogy kiválassza a megfelelő megjelenítési módot. Ha a félkövér és dőlt betűk rendelkezésre állnak, akkor használhatók; egyébként valami szín, villogtatás, aláhúzás, inverz kiemelés használható a hatás elérésére. A különböző rendszerek választhatnak a lehetőségek közül, és ezt meg is teszik. Amikor a Világháló (Web) népszerűvé vált, bevezették a text/html altípust (az RFC 2854-ben), hogy weboldalakat is lehessen RFC 822-es e-levélben küldeni. Az RFC 3023 a kiterjeszthető jelölőnyelv (XML) számára létrehozta a text/xml altípust. A HTML-t és az XML-t a fejezet későbbi részében tárgyaljuk. A következő MIME-típus az image, ami az állóképek átvitelére alkalmazható. Szá-
AZ ALKALMAZÁSI RÉTEG
647
mos elterjedt, tömörítéssel ellátott vagy anélküli formátum létezik manapság a képek tárolására és átvitelére. Ezek közül kettő, a GIF és a JPEG szinte minden böngészőbe be van építve, de létezik sok másik is, és ezeket is hozzáadták az eredeti listához. Az audio és videó a hang, illetve a mozgókép átvitelére szolgál. Felhívjuk a fi gyelmet arra, hogy a videó csak a képi információt tartalmazza, a hangot nem. Ha hangosfilmet szeretnénk átvinni, akkor lehet, hogy külön kell átvinnünk a hangot és a képet attól függően, hogy éppen milyen kódolási rendszert használunk. Az első moz góképformátumot a szerény elnevezésű Moving Picture Experts Group (Mozgókép Szakértői Csoport, MPEG) javasolta, de azóta más formátumok is megjelentek. Az RFC 3003-ban pedig az audio/basic mellett bevezettek egy új hanghordozó-típust, az audio/mpeg-et is, hogy az emberek MP3 hangfájlokat is küldhessenek az e-levelekben. Az application egy gyűjtőtípus azon formátumok számára, amelyek a többi típus hoz nem hasonlítható feldolgozást igényelnek. Az octet-stream egy értelmezhetetlen bájtsorozat. Az ilyen folyamok fogadásakor a felhasználói ügynök valószínűleg azt ja vasolja a felhasználónak, hogy fájlban tárolja azt, és kér egy fájlnevet. A további fel dolgozás ezután a felhasználóra vár. A másik definiált altípus a postscript, ami a PostScript nyelvre utal, amelyet az Adobe Systems cég készített, és amely széles körben elterjedt a nyomtatható doku mentumok leírására. Számos nyomtató rendelkezik PostScript értelmezővel. A fel használói ügynökök ugyan egyszerűen meghívhatnának egy programot a beérkező PostScript fájlok megmutatására, azonban ez nem veszélytelen. A PostScript egy kész programozási nyelv. Elegendő idő rááldozásával egy kellőképpen mazochista egyén akár C fordító vagy adatbázis-kezelő rendszert is írhat PostScript nyelven. A PostScript üzenetek megjelenítése a bennük levő PostScript program futtatásával tör ténik. Amellett, hogy ez a program megjelenít némi szöveget, elolvashatja, módosít hatja vagy letörölheti a felhasználó fájljait, és más mellékhatásai is lehetnek. A message típus lehetővé teszi egy üzenet teljes beágyazását egy másikba. Ez a sé ma például a levelek továbbítására használható. Ha egy teljes 822-es RFC formájú le vél beágyazódik egy másikba, akkor az rfc822 altípus használandó. A partial altípus lehetővé teszi egy beágyazott üzenet több darabra tördelését és külön-külön történő átvitelét (például, ha a beágyazott üzenet túl hosszú). A paraméte rek lehetővé teszik a célállomáson a darabok sorrendhelyes összeállítását. Végül az external-body altípus a nagyon hosszú üzenetek küldésénél lehet hasznos (pl. mozgóképek). Az MPEG helyett egy FTP-cím kerül elküldésre, és a felhasználói ügynök akkor hozhatja el a hálózatról, amikor szükséges. Ez a képesség különösen hasznos, ha egy levelezési listára kell filmet küldeni, ahol kevesen fogják azt tényle gesen megnézni (gondoljunk például az elektronikus kacatlevelekre, amelyek hirdeté si filmeket tartalmaznak). Az utolsó típus a multipart, amely lehetővé teszi, hogy egy üzenet több részből álljon, és minden rész eleje és vége tisztán elhatárolható legyen. A mixed altípus le hetővé teszi, hogy minden rész különböző legyen anélkül, hogy a struktúrával szem ben bármilyen további követelményt támasztana. Sok levelezőprogramban egy vagy több csatolt állományt is meg lehet adni a szöveges rész mellett. Ezeket a melléklete ket a multipart típus használatával küldik el. A multipart ellentettje az alternative altípus, melynek segítségével ugyanazt az
648
SZÁMÍTÓGÉP-HÁLÓZATOK
üzenetet küldhetjük el egyszerre több példányban, de különböző formátumokban. Egy üzenet például elküldhető egyszerre sima ASCII, Rich Text és PostScript formátum ban. Egy jól tervezett felhasználói ügynök egy ilyen üzenetet PostScript formátumban jelenít meg, ha ez lehetséges. A második választás a Rich Text lenne. Ha ezek közül egyik sem lehetséges, akkor marad a sima ASCII-szöveg. Először a legegyszerűbb résznek kell szerepelnie a levélben, majd ezt követhetik az egyre bonyolultabbak, hogy a nem MIME-képes felhasználói ügynökkel rendelkező felhasználók is értel mezhessék az üzenetet (pl. még egy ilyen régi felhasználói ügynökkel is el lehet ol vasni a sima ASCII-szöveget). Az alternative altípus használható továbbá több nyelv esetén is. Ilyen környezetben a Rosetta Kő egy mutipart/alternative üzenetnek képzelhető. A 7.13. ábrán egy multimédiás példa látható, ahol egy születésnapi köszöntés kerül mind szöveg, mind hang formában átvitelre. Ha a fogadó le tud játszani hangokat, ak kor a felhasználói ügynök elhozza a hálózatról a birthday.snd hangfájlt és lejátssza azt. Ha nem, akkor csak a dalszöveg látszik majd síri csendben. A részeket két kötőjel, és az azt követő a boundary mezőben megadott (felhasználó által definiált) karakter lánc különíti el. Vegyük észre, hogy a Content-Type fejrészmező háromszor fordul elő ebben a pél dában. Legfelül arra szolgál, hogy jelezze, az üzenet több részből áll, a részekben peFrom: [email protected] To: [email protected] MIME-Version: 1.0 Message-ld:<[email protected]> Content-Type: multipart/altemative: boundary=qwertyuiopasdfghjklzxcvbnm Subject: Earth orbits sun integrál number of times Ez a bevezető. A felhasználói ügynök figyelmen kívül hagyja. Minden jót. -qwertyuiopasdfghjklzxcvbnm Content.Type: text/enriched Boldog Boldog Boldog Boldog
-qwertyuiopasdfghjklzxcvbnm Content.Type: message/extemal-body; access-type="anon-ftp"; site="bicycle.-abcd.com"; directory="pub"; name="birthday.snd" content-type: audio/basic content-transfer-encoding: base64 -qwertyuiopasdfghjklzxcvbnm7.13. ábra. Egy enriched és audio alternatívákat tartalmazó többrészes üzenet
AZ ALKALMAZÁSI RÉTEG
649
dig azok típusát és altípusát adja meg. Végül a második rész szövegrészében meg kell adni az elhozandó fájl nevét. Hogy érzékeltessük ezt a kis különbséget, itt kisbetűket használtunk a fejrészmezőkben, egyébként minden fejrészmező érzéketlen a kis-nagybetűk használatára. A content-transfer-encoding fejrészmező ugyanúgy szükséges azon külső szövegtörzs esetén, amely nem 7 bites ASCII kódolású. Visszatérve a többrészű üzenetek altípusaihoz, még két lehetőség van. A parallel altípus azt jelzi, hogy a részeket egyszerre kell „megjeleníteni". Például a filmek gyakran két részből, a mozgóképből és a hangból állnak. A filmek sokkal hatásosab bak, ha ezen részeiket egyszerre, nem pedig egymás után játsszák le. Végül a digest altípust akkor használják, ha egy összetett üzenet számos üzenetből álló csomagot tartalmaz. Például az Interneten néhány vitafórum összegyűjti előfizetői leveleit, és egyetlen multipart/digest üzenetként küldi őket szét.
7.2.4.
Üzenettovábbítás
Az üzenettovábbító rendszer az üzenetek feladótól címzettig való eljuttatásával foglal kozik. Ennek legegyszerűbb módja egy átviteli kapcsolat létrehozása a forrásgép és a célgép között, amelyen egyszerűen átvándorolhat az üzenet. Miután megvizsgáltuk, hogy ez általában hogyan történik, megvizsgálunk és megoldunk majd olyan helyzete ket, amelyekben ez nem kivitelezhető.
SMTP - Egyszerű levéltovábbító protokoll Az Interneten belül, az e-levelek kézbesítése úgy történik, hogy a forrásgép kapcsola tot teremt a célgép 25-ös portjával. Ezt a portot egy e-levél démon figyeli, aki az SMTP (Simple Mail Transfer Protocol - egyszerű levéltovábbító protokoll) nyel vet beszéli. Ez a démon fogadja a beérkező kapcsolatokat, és átmásolja belőlük az üzeneteket a megfelelő postafiókokba. Ha egy üzenetet nem lehet kézbesíteni, akkor a feladó visszakapja a kézbesíthetetlen üzenet első részét. Az SMTP egy egyszerű ASCII-protokoll. A 25-ös porttal való TCP-kapcsolatteremtés után a kliens küldőgép megvárja, amíg a szerver fogadógép meg nem szólal. A szerver azzal kezdi, hogy küld egy sornyi szöveget, amelyben azonosítja magát, és megadja, hogy fel van-e készülve levelek fogadására. Ha nem, a kliens bontja a kap csolatot, és később újra próbálkozik. Ha a szerver felkészült a levelek fogadására, akkor a kliens megadja, hogy kitől és kinek megy az e-levél. Ha a megadott címzett létezik a célgépen, akkor a szerver sza bad utat ad a kliens számára az üzenetküldéshez. Ezután a kliens elküldi a levelet, és a szerver nyugtázza azt. Semmi ellenőrző összeget nem generál, mivel a TCP-kapcsolat megbízható bitfolyamot biztosít. Ha van még e-levél, akkor azt is elküldi. Miután mindkét irányban megtörtént az e-levélcsere, a kapcsolat lebomlik. A 7.14. ábrán lát ható egy, az SMTP által használt számkódokat is feltüntető mintadialógus a 7.13. áb rán levő levél elküldéséhez. A kliens által küldött sorokat C:, a szerver által küldött sorokat pedig S: jelöli.
650
SZÁMÍTÓGÉP-HÁLÓZATOK
Néhány megjegyzés segíthet a 7.14. ábra megértéséhez. A kliens részéről az első parancs valójában a HELO. A HELLO két, négybetűs rövidítése közül ez számos előnnyel rendelkezik versenytársához képest. Azt már senki sem tudja, hogy miért kellett minden parancsnak négybetűsnek lennie. A 7.14. ábrán levő üzenetnek csak egy címzettje van, tehát csak egy RCPT parancs látható. Több ilyen parancsot is ki lehet adni, ha ugyanazon levélnek több címzettje is
S: 220 xyz.com SMPT service ready C: HELO abc.com S: 250 xyz.com says hello to abcd. com C: MAIL FROM: <[email protected]> S: 250 sender ok C: RCPTTO: S: 250 recipient ok C: DATA S: 354 Send mail; end with "." on a line by itself C: From: [email protected] C: To: [email protected] C: MIME-Version: 1.0 C: Message-ld: <[email protected]> C: Content-Type: multipart/altemative; boundary=qwertyuiopasdfghjklzxcvbnm C: Subject: Earth orbits sun integrál number of times C: C: Ez a bevezető. A felhasználói ügynök figyelmen kívül hagyja. Jó napot kívánok. C: C: -qwertyuiopasdfghjklzxcvbnm C: Content-Type: text/enriched C: C: Boldog szülinapot, C: Boldog szülinapot, C: Boldog szülinapot, kedves Carolyn C: Boldog szülinapot C: --qwertyuiopasdfghjklzxcvbnm C: Content-Type: message/external-body; C: access-type="anon-ftp"; C: site="bicycle.abcd.com"; C: directory="pub"; C: name="birthday.snd" C: C: content-type: audio/basic C: content-transfer-encoding: base64 C: -qwertyuiopasdfghjklzxcvbnm C:. S: 250 message accepted C: QUIT S: 221 xyz.com closing connection 7.14. ábra. Egy üzenet küldése az [email protected]ól a carolyn@xyz com-ra
AZ ALKALMAZÁSI RÉTEG
651
van. Mindegyikre egyedileg jön nyugta vagy visszautasítás. Még ha néhány címzettől visszautasítás jön is (mert nem léteznek a célgépen), a többieknek akkor is el lehet küldeni az üzenetet. Végül, a négybetűs parancsok szintaxisa ugyan szigorúan definiált, a válaszoké azonban kevésbé az. Egyedül a számkód számít igazán. Megvalósítástól függően bár milyen karaktersorozat állhat a kód után. Jobban ráérezhetünk arra, hogy hogyan működik az SMTP- és más, a fejezetben ismertetett protokoll, ha ki is próbáljuk azokat. Mint minden esetben, először most is kerítenünk kell egy internetkapcsolattal rendelkező gépet. UNIX rendszer esetén írjuk be a parancssorba, hogy telnet mail.isp.com 25
és a mail.isp.com helyébe a saját szolgáltatónk levelezőszerverének DNS-nevét he lyettesítsük! Windowsos rendszeren kattintsunk a Start, majd a Futtatás menüpontra, és írjuk be a fenti parancsot a párbeszédablakba. Ez a parancs kiépít egy telnet- (azaz TCP-) összeköttetést az adott gép 25-ös portjára. A 25-ös port az SMTP-hez tartozik (lásd a szokványos portokat a 6.27. ábrán). Bizonyára valami ehhez hasonló választ kapunk: Trying 192.30.200.66... Connected to mail.isp.com Escape character is ']'• 220 mail.isp.com Smail #74 ready at Thu, 25 Sept 2002 13:26 +0200
Az első három sort a telnet írja ki, hogy elmondja, éppen mit csinál. Az utolsó sor a távoli gép SMTP-kiszolgálójától származik: ebben jelenti be, hogy hajlandó beszélni velünk és fogadni az e-leveleket. Azt is megtudhatjuk, hogy milyen parancsokat fogad el, ha beírjuk, hogy HELP
Innentől kezdve egy olyan parancssorozatot használhatunk, mint amilyet a 7.14. ábrán láthattunk, az ügyfél HELO parancsától kezdődően. Érdemes megjegyezni, hogy a parancsokhoz nem véletlenül használnak ASCIsorokat: az internetprotokollok többsége így működik. ASCI-szövegek használatával a protokoll könnyen tesztelhető és javítható. Ahogy fent láthattuk, a tesztelés történhet manuálisan elküldött parancsokkal, és a visszakapott üzenethalmaz is könnyen olvas ható. Annak ellenére, hogy az SMTP-protokoll jól definiált, néhány probléma azért elő fordulhat. Az egyik probléma az üzenethosszal kapcsolatos. Néhány régebbi program nem tud 64 KB-ot meghaladó üzeneteket kezelni. Egy másik probléma a várakozási időkből (timeout) fakad. Ha a kiszolgálónak és az ügyfélnek más a várakozási ideje, akkor valamelyikük feladhatja a várakozást, miközben a másik még dolgozik, váratla nul megszakítva ezzel a kapcsolatot. Végül, néhány ritka különleges esetben vég nél-
652
SZÁMÍTÓGÉP-HÁLÓZATOK
küli levélesőt is elő lehet idézni. Például ha az 1. hoszt kezeli az A levelezési listát, a 2. hoszt pedig a B-t, és mindkét lista tartalmaz a másikra vonatkozóan egy bejegyzést, akkor bármelyikre érkezik is levél, az véget nem érő e-levél forgalmat fog gerjeszteni, amíg valaki be nem avatkozik. Néhány probléma elkerülésére az 2821-es RFC-ben definiálták a kiterjesztett SMTP-t (extended SMTP - ESMTP). Azok a kliensek, amelyek ezt szeretnék hasz nálni, elsőnek az EHLO parancsot kell kiadják a HELO helyett. Ha ezt visszautasítja, akkor a szerver egy általános szerver, és a kliensnek a szokásos módon kell működnie. Amennyiben az EHLO-t elfogadja a szerver, akkor az új parancsok és paraméterek is életbe lépnek.
7.2.5.
Végső kézbesítés
Eddig azzal a feltételezéssel éltünk, hogy a felhasználók olyan gépeken dolgoznak, melyek képesek e-levelek küldésére és fogadására. Mint említettük, az e-levelet úgy kézbesítik, hogy a feladó kiépít egy TCP-összeköttetést a címzettel, és azon viszik át az e-levelet. Ez a modell évtizedekig jól működött, mert az ARPANET (és később az Internet) összes hoszt gép vonalra kapcsolt (on-line) állapotban gyakorlatilag állandó an vonalra kapcsolt (on-line) állapotban volt, és fogadta a TCP-összeköttetéseket. Csakhogy a modemes internetkapcsolattal rendelkező felhasználók megjelenésével ez megváltozott. A probléma a következő: mi történik akkor, amikor Edina szeretne elküldeni Katalinnak egy e-levelet, de Katalin éppen nincs a vonalra kapcsolódva? Edina ekkor nem tudja kiépíteni a TCP-összeköttetést, és így az SMTP-protokollt sem tudja futtatni. Az egyik megoldás az, hogy elhelyezünk a szolgáltató egyik gépén egy üzenetto vábbító ügynököt, ami fogadja az előfizetőktől érkező e-leveleket, és a szolgáltató gé pén lévő postaládájukban tárolja őket. Mivel az ügynök folyamatosan vonalra kap csolódva lehet, a nap bármely órájában lehet neki e-levelet küldeni.
POP3 Ez a megoldás sajnos egy újabb problémát vet fel. Hogyan kapja meg a felhasználó az e-levelet a szolgáltató üzenettovábbító ügynökétől? A megoldást egy újabb protokoll bevezetése jelenti, mely lehetővé teszi, hogy a felhasználói ügynök (a felhasználó PCjén) kapcsolatba lépjen az üzenettovábbító ügynökkel (a szolgáltató gépén) és átmá solhassa az e-leveleket a szolgáltatótól a felhasználóhoz. Egy ilyen protokoll a POP3 (Post Office Protocol Version 3 - postahivatal protokoll, 3. verzió), melyet az RFC 1939 ír le. A régi felállást (ahol a feladónak és a címzettnek is állandó kapcsolata van az Internettel), a 7.15.(a) ábra szemlélteti. A 7.15.(b) ábra azt a helyzetet mutatja, ahol a feladó (éppen) vonalra kapcsolódott, de a címzett nem. A POP3 működése azzal kezdődik, hogy a felhasználó elindítja a levelezőprogra mot. A levelezőprogram felhívja a szolgáltatót (ha nincs már amúgy is felépítve a
653
AZ ALKALMAZÁSI RÉTEG
SMTP
(a)
Internet
Üzenettovábbító ügynök
Felhasználói ügynök
CX. Postaláda Állandó kapcsolat
Küldő hoszt
SMTP Internet
Címzett hoszt
Üzenettovábbító ügynök
POP3- POP3 Felhasználói kiszolgáló ügynök
^v
>o Feladó hoszt
Postaláda'
Szolgáltató gépe
\
Modemes kapcsolat
Felhasználó PC-je
7.15. ábra. (a) E-levél küldése és fogadása, amikor a címzettnek állandó internetkapcsolata van, és a felhasználói ügynök ugyanazon a gépen fut, mint az üzenettovábbító ügynök, (b) E-levél fogadása modemes internetkapcsolattal rendelkező címzett esetén kapcsolat), és létrehoz egy TCP-összeköttetést az üzenettovábbító ügynökkel a 110-es porton. Amint az összeköttetés felépült, a POP3 sorban a következő három állapoton megy végig: 1. Engedélyezés. 2. Tranzakciók. 3. Frissítés. Az engedélyezés állapot a felhasználó beléptetésével foglalkozik. A tranzakciók állapotban a felhasználó begyűjti a leveleit, és kijelöli azokat a postaládából való tör lésre. A frissítés állapotban a levelek ténylegesen törlődnek. Ezt a működést meg is figyelhetjük, ha begépelünk valami ehhez hasonlót: telnet mail.isp.com 110
ahol a mail.isp.com az Ön internetszoigáltatójának levelezőszervere, pontosabban an nak körzetneve. A telnet kiépít egy TCP-összeköttetést a 110-es portra, melyen a POP3-kiszolgáló figyel. A kiszolgáló a TCP-összeköttetés elfogadása után egy ASCII-üzenet elküldésével jelzi jelenlétét. Az üzenet általában +OK-val kezdődik, amit egy megjegyzés követ. A 7.16. ábra egy példát mutat, a TCP-összeköttetés ki épülését követően. Akárcsak eddig, a C-vel jelölt sorok az ügyféltől (á felhasználótól),
654
SZÁMÍTÓGÉP-HÁLÓZATOK
S: +OK POP3 server ready C: USER carolyn S: +OK C: PASS vegetables S: +OK login successful C: LIST S: 1 2505
S: 2 14302 S: 3 8122 S: . C: RETR 1 S: (Elküldi az 1 -es üzenetet) C: DELE 1 C: RETR 2 S: (Elküldi a 2-es üzenetet) C: DELE 2 C: RETR 3 S: (Elküldi a 3-as üzenetet) C: DELE 3 C: QUIT S: +OK POP3 server disconnecting
7.16. ábra. Három üzenet letöltése POP3 segítségével az S-sel jelöltek pedig a kiszolgálótól (a szolgáltató gépén levő üzenettovábbító ügy nöktől) származnak. Az engedélyezés állapotban az ügyfél elküldi a felhasználó nevét, majd a jelszavát. A sikeres belépést követően az ügyfél átküldheti a LIST parancsot, melynek hatására a kiszolgáló kilistázza a postaláda tartalmát, soronként egy üzenettel, megadva az üze net hosszát. A listát egy pont zárja. Az ügyfél ezután a RETR paranccsal kérheti le az üzeneteket, és a DELE parancs csal jelölheti ki azokat törlésre. Mikor minden üzenetet lekért (és esetleg törlésre is kijelölt), kiadja a QUIT parancsot, hogy lezárja a tranzakciók állapotot, és belépjen a frissítés állapotba. Amikor a kiszolgáló minden üzenetet letörölt, visszaküld egy vá laszt és lebontja a TCP-összeköttetést. Igaz ugyan, hogy a POP3 lehetővé teszi egy bizonyos üzenet vagy üzenetek letölté sét úgy, hogy azok a kiszolgálón is megmaradjanak, a legtöbb levelezőprogram mégis egyszerűen csak letölt mindent és kiüríti a postaládát. Ez a működés a gyakorlatban azt jelenti, hogy az egyetlen másolat a felhasználó merevlemezén marad. Ha az meg hibásodik, az összes e-levél örökre elveszhet. Foglaljuk össze most röviden, hogyan működik az e-levél az internet-előfizetők szemszögéből! Elinor összeállít egy üzenetet Carolyn számára valamilyen levelező program (azaz felhasználói ügynök) segítségével, és rákattint egy ikonra, hogy el küldje azt. A levelezőprogram erre átadja az üzenetet a szolgáltató hosztján lévő üze nettovábbító ügynöknek. Az ügynök látja, hogy a címzett [email protected], ezért a DNS segítségével kikeresi az xyz.com MX rekordját (ahol az xyz.com Carolyn szol gáltatója). Ez a lekérdezés az xyz.com levelezőszerverének DNS-nevét adja vissza. Az
AZ ALKALMAZÁSI RÉTEG
655
üzenettovábbító ügynök ekkor újból a DNS-hez fordul, hogy kikeresse a kiszolgáló IP-címét, például a gethostbyname használatával. Ezután kiépít egy TCP-összeköttetést a gép 25-ös portján levő" SMTP-kiszolgálóval. Végül egy, a 7.14. ábrához hasonló SMTP-parancssorozattal átviszi az üzenetet Carolyn postaládájába és lebontja a TCPösszeköttetést. Idővel Carolyn is bekapcsolja PC-jét, kapcsolódik a szolgáltatójához, majd elin dítja a levelezó'programját. A levelezó'program kiépít egy TCP-összeköttetést a szol gáltató levelezőszerver gépének 110-es portján lévő POP3-kiszolgálóhoz. A kiszol gáló DNS-nevét vagy IP-címét a levelezőprogram telepítésekor, vagy az internet előfizetés megkötésekor állítják be. Miután kiépült a TCP-összeköttetés, Carolyn le velezőprogramja a POP3-protokollt futtatja, hogy letöltse postaládájának tartalmát merevlemezére, a 7.16. ábrán látottakhoz hasonló parancsok segítségével. Amint az összes e-levelet átvitték, a TCP-összeköttetést lebontják. Ekkor valójában az internetkapcsolatot is le lehet bontani, hiszen minden e-levél Carolyn gépének me revlemezén van. A válaszküldéshez persze ismét szükség lesz a kapcsolatra, ezért azt általában nem bontják le rögtön az e-levelek letöltése után.
EMAP A POP3 jól működik az olyan felhasználók esetében, akiknek egy e-levél címük van egy szolgáltatónál, és azt mindig ugyanarról a PC-ről érik el. Egyszerűsége és ro busztussága miatt a protokollt széles körben használják. Csakhogy a számítógépipar ban ismert az a közhely, hogy amint valami jól működik, valaki rögtön újabb funkció kat követel ettől a valamitől (és ezzel csak még több hibát kap). Ez történt az elektro nikus levelezéssel is. Sokaknak például a munkahelyükön vagy az iskolában van az egyetlen e-levél címük, és azt szeretnék elérni a munkahelyükről, az otthoni PCjükről, üzleti utakon a laptopjukról, vagy egy internetkávézóból. A POP3-ugyan le hetővé teszi ezt, hiszen minden kapcsolatfelvételkor rendesen letölt minden tárolt üzenetet, az eredmény azonban az lesz, hogy a felhasználó e-levelei hamarosan többékevésbé véletlenszerűen szét lesznek szórva több gép között, melyek közül némelyik még csak nem is a felhasználó saját gépe. Ez a hátrány keltett életre egy alternatív kézbesítési protokollt, az IMAP-et (Internet Message Access Protocol - internetes levélelérési protokoll), melyet az RFC 2060 ír le. Míg a POP3 azt feltételezi, hogy a felhasználó minden kapcsolódás kor kiüríti a postaládáját és azután vonalról lekapcsolt (off-line) módon fog dolgozni, az IMAP abból indul ki, hogy az e-levelek mindvégig a kiszolgálón maradnak, több postaládába szétosztva. Az IMAP a levelek olvasásának számos módját támogatja, akár részletekben is. Ez a funkció akkor hasznos, amikor lassú, modemes kapcsola tunk van, és egy több részből álló, terjedelmes hang- vagy videomellékletet is tartal mazó üzenet szöveges részét kívánjuk elolvasni. Mivel a kiindulópont az, hogy az üzeneteket nem viszik át a felhasználó számítógépére tartós tárolás céljából, az IMAP több különböző levelesláda létrehozására, törlésére és kezelésére is módot ad. A fel használó ezáltal minden partnere számára külön postaládát tarthat fenn, hogy a beér kező üzenetek közül ide helyezze át a megfelelő leveleket, miután elolvasta azokat.
656
SZÁMÍTÓGÉP-HÁLÓZATOK
Funkció Hol definiálják a protokollt
IMAP
POP3
RFC 2060
TCP-port
RFC 1939 110
Hol tárolja az e-leveleket
A felhasználó PC-jén
143 A kiszolgálón
E-levelek olvasása
Off-line
On-line
Szükséges kapcsolat időtartama
Rövid
Hosszú
Kiszolgáló erőforrásainak használata
Minimális
Nagymértékű
Több postaláda
Nem
Ki tárolja a postaládákat
Felhasználó
Igen Szolgáltató
Alkalmas mozgó hosztok számára
Nem
A felhasználó befolyásolhatja-e a letöltést
Kicsit
Igen Nagyon
Üzenetek részleges letöltése
Nem
Igen
Jelentenek-e gondot a lemezkvóták
Nem
Idővel esetleg
Egyszerű implementálni
Igen
Nem
Széles körű elfogadottság
Igen
Növekvő
7.17. ábra. A POP3 és az IMAP összehasonlítása Az IMAP-nak sok funkciója van. A leveleket például nem csak beérkezésük sor rendjében képes kezelni, mint az a 7.8. ábrán látható, hanem attribútumaik alapján is (például „Kérem az első üzenetet Robitól"). A protokoll a POP3-mal ellentétben a szállításra váró, kimenő' e-leveleket is elfogadja, valamint a beérkező e-leveleket is le tudja szállítani. Az IMAP általában véve hasonlít a POP3-hoz, amint azt a 7.16. ábra mutatja, de több tucatnyi új parancsot is támogat. Az IMAP kiszolgáló a 143-as porton figyel. A 7.17. ábra a POP3 és az IMAP összehasonlítását adja meg. Meg kell azonban jegyez nünk, hogy nem minden szolgáltató és nem minden levelezőprogram támogatja mind két protokollt. Ezért amikor levelezőprogramot választunk, fontos tudnunk, hogy az melyik protokoll(oka)t támogatja, és arról is meg kell győződnünk, hogy a szolgálta tónk is támogatja legalább az egyiket.
Kézbesítési funkciók Sok rendszer kínál különböző kiegészítőket a bejövő e-levelek további feldolgozásá hoz, függetlenül attól, hogy POP3-at vagy IMAP-ot használunk. Sok e-levél felhasz náló számára különösen értékes funkció a szűrők (filters) felállításának lehetősége. Ezek olyan szabályok, melyeket akkor alkalmaznak, amikor beérkezik egy e-levél vagy elindul a felhasználói ügynök. Minden szabály egy feltételt és egy tevékenységet határoz meg. Egy szabály kimondhatja például, hogy a főnöktől érkező összes levél az l-es postaládába kerül, egy adott baráti körtől érkező levelek a 2-es postaládába, és minden levél, melynek tárgysora valamilyen nemkívánatos szót tartalmaz, szó nélkül eldobandó.
AZ ALKALMAZÁSI RÉTEG
657
Egyes szolgáltatók olyan szűrőket kínálnak, melyek automatikusan szétválogatják a fontos és a kéretlen leveleket (kacatlevelek), és minden üzenetet a megfelelő posta ládában tárolnak. Az ilyen szűrők jellemzően úgy működnek, hogy először megnézik, hogy a feladó ismert kacatküldő-e. Ezután általában a tárgysort vizsgálják. Ha fel használók százai kaptak ugyanolyan üzenetet ugyanazzal a tárgysorral, akkor az való színűleg kacatlevél (spam). Ezek mellett más módszereket is használnak a kacatok ki szűrésére. Egy másik gyakori funkció a levelek (átmenetileg) másik címre való továbbításá nak lehetősége. Ez a cím akár egy kereskedelmi személyhívó szolgáltatás által üze meltetett számítógép is lehet, amely aztán a személyhívón a tárgysor megjelenítésével rádión vagy műhold segítségével jelez a felhasználónak. A végső kézbesítés ugyancsak gyakorta használt szolgáltatása a távollétet jelző démon (vacation daemon) telepítésének lehetősége. Ez egy olyan program, amely megvizsgálja a beérkező levelet és a következő unalmas választ küldi a feladónak: Szia! Nyaralni mentem. Augusztus 24-én jövök vissza. Minden jót!
Az ilyen válaszok megadhatják, hogy a közbenső időben felbukkanó sürgős ese tekben hogyan kell eljárni, vagy megadhatják azoknak a személyeknek a nevét, akik hez a különböző problémákkal fordulni kell stb. A legtöbb távollétet jelző démon számon tartja, hogy kinek küldött már ilyen konzervlevelet, és többször nem ismétli meg azt. A jobbak azt is megnézik, hogy a beérkezett levelet nem egy levelezési listá ról küldték-e, mert ha igen, akkor egyáltalán nem küldenek választ. (Azok, akik a nyá ri időszakban nagy levelezési listákra küldenek levelet, valószínűleg nem szeretnének mindenkitől nyaralásra vonatkozó terveket tartalmazó válaszokat kapni.) A szerző nemrégiben a kézbesítést követő feldolgozás egy egészen szélsőséges formájával találkozott, amikor levelet küldött egy olyan személynek, aki állítólag na ponta 600 levelet kap. Személyazonosságát itt nem hozzuk nyilvánosságra, mivel a könyv olvasóinak legalább a fele szintén küldene neki egy levelet. Nevezzük egysze rűen Jánosnak. János telepített egy e-levél robotot, amely minden levelet ellenőriz, hogy új levele zőtől jött-e. Ha igen, akkor visszaküld egy konzervválaszt, amely elmagyarázza, hogy János ezentúl már nem képes személyesen elolvasni minden e-levelet. Ehelyett készí tett egy személyes FAQ (Frequently Asked Questions - gyakran feltett kérdések) dokumentumot, amely megválaszolja a gyakori kérdéseket. Általában csak a hírcso portoknak vannak FAQ-jaik, személyeknek nem. János FAQ-ja megadja János címét, fax- és telefonszámát, valamint azt, hogy ho gyan lehet a cégét elérni. Megmagyarázza, hogyan lehet felkérni előadásra, és hogy hol találhatók a publikációi, valamint egyéb dokumentumok. Ezenkívül hivatkozáso kat ad az általa írt programokra, az általa vezetett konferenciákra, az általa kidolgozott szabványokra és így tovább. Lehetséges, hogy ez a megközelítés szükséges, de az is lehet, hogy egy ilyen személyes FAQ valójában csupán státusszimbólum.
658
SZÁMÍTÓGÉP-HÁLÓZATOK
Webes levelezés Még egy említésre méltó témánk van, ez pedig a webes levelezés. Néhány weboldal, mint például a Hotmail vagy a Yahoo, bárkinek nyújt e-levél szolgáltatást, aki azt ké ri. Működésük a következő. Van egy hagyományos üzenettovábbító ügynökük a 25-ös porton, amelyik fogadja a bejövő SMTP-összeköttetéseket. Ahhoz, hogy felvegyük a kapcsolatot, mondjuk a Hotmaillel, meg kell szereznünk a DNS MX rekordját, például úgy, hogy egy UNIX rendszeren beírjuk a következőt: hőst - a -v hotmail.com Tegyük fel, hogy a levelezőszerver neve mxlO.hotmail.com. Ekkor a telnet mx10.hotmail.com 25
sor beírásával kiépíthetünk egy TCP-összeköttetést, melyen a szokásos módon átküldhetjük SMTP-parancsainkat. Eddig nem történt semmi rendhagyó, leszámítva, hogy ezek a nagy kiszolgálók gyakran túlterheltek, ezért lehet, hogy csak többszöri próbál kozás után fogadják el a TCP-összeköttetésünket. A dolog érdekes része az, ahogyan az e-leveleket kézbesítik. Amikor a felhasználó meglátogatja az e-levél szolgáltató weboldalát, egy űrlappal találkozik, ahol megad hatja az azonosítóját és a jelszavát. A Belépés gombra kattintva az azonosító és a jel szó eljut a kiszolgálóhoz, mely ellenőrzi azokat. Ha a belépés sikeres, a kiszolgáló megkeresi a felhasználó postaládáját, és készít egy - a 7.8. ábrán láthatóhoz hasonló listát egy HTML-formátumú weboldal alakjában. Ezt a weboldalt aztán elküldi meg jelenítésre a böngészőnek. Az oldal több elemére is rá lehet kattintani, így az üzenetek megnyithatók, törölhetők és így tovább.
7.3.
A Világháló (World Wide Web)
A Világháló egy keretszerkezet, amely az Interneten lévő gépeken elszórva elhelyez kedő, összekapcsolt dokumentumok elérését teszi lehetővé. Az elmúlt 10 év alatt a nagy energiájú részecskefizika körébe eső adatok közlésére szolgáló módszerből olyan alkalmazássá vált, amelyre az emberek milliói mint „az Internet"-re gondolnak. Hihetetlen népszerűsége onnan ered, hogy kezdők által is könnyen használható grafi kus interfésze van, és hatalmas információmennyiséget biztosít majdnem minden el képzelhető témáról - az abakusztól a zoológiáig. A Világháló (amelyet WWW-ként vagy röviden Webként is ismernek) története 1989-ben kezdődött a CERN-ben, a nukleáris kutatás európai központjában. A CERNnek sok részecskegyorsítója van, amelyeknél a résztvevő európai országok tudósainak nagy csoportjai végeznek részecskefizikai kutatásokat. Ezen csapatok tagjai gyakran fél tucat vagy még több különböző országból valók. A legtöbb kísérlet nagyon össze tett, és a berendezés megépítését sokévi tervezés előzi meg. A Világháló abból az igényből nőtt ki, hogy a különböző országokban elszórva elhelyezkedő kutatók jelen-
AZ ALKALMAZÁSI RÉTEG
659
tések, tervek, rajzok, fényképek és más dokumentumok folyton változó gyűjteményét használva működhessenek együtt. Az összekapcsolt dokumentumok hálózatának eredeti javaslata egy CERN fizikus tól, Tim Berners-Lee-től eredt 1989 márciusában. Az első (szöveg alapú) prototípus 18 hónappal később kezdte meg működését. 1991 decemberében nyilvános bemutatót tartottak a San Antonió-i Hypertext '91 konferencián, Texasban. A bemutató és az azt övező hírverés felkeltették más kutatók érdeklődését is, ennek hatására fogott bele Marc Andreessen az Illinois Egyetemen az első grafikus böngé sző, a Mosaic kifejlesztésébe, amit 1993-ban adtak ki. A Mosaic egy év alatt annyira népszerűvé vált, hogy Andreessen otthagyta az egyetemet, hogy megalapítsa a Netscape Communications Corp. társaságot, melynek célja ügyfelek, kiszolgálók és más webszoftverek kifejlesztése volt. Amikor a Netscape-et 1995-ben a tőzsdére vit ték, a befektetők 1,5 milliárd dollárt fizettek a részvényekért - nyilván azt gondolták, hogy ez lesz a következő Microsoft. Ez a rekord annál is meglepőbb, mivel a társa ságnak csak egy terméke volt, nagy veszteséggel működött, és az ismertetőjében beje lentette, hogy belátható időn belül nem számít profitra. Az ezt követő három évben a Netscape Navigator és a Microsoft Internet Explorer „böngészöháborúba" keveredtek, miközben fejvesztve próbáltak a másiknál több funkciót (és így még több hibát) a prog ramjukba zsúfolni. 1998-ban az America Online megvette a Netscape Communications Corporationt 4,2 milliárd dollárért, és ezzel véget ért a Netscape rövidke önálló élete. 1994-ben a CERN és az M.I.T. aláírtak egy megegyezést a Világháló Konzorcium (World Wide Web Consortium, W3C) felállításáról. A szervezet célja a Világháló (Web) továbbfejlesztése, a protokollok szabványosítása, és a webhelyek (websites) közti együttműködés elősegítése. Berners-Lee lett az igazgató. Azóta több száz egye tem és társaság csatlakozott a konzorciumhoz. Bár több könyv szól a Webről, mint égen a csillag, naprakész információkat (természetesen) leginkább magán a Weben lehet találni. A konzorcium honlapja a http://www.w3.org címen található. Az érdek lődő olvasók itt a konzorcium összes tevékenységét és dokumentumát lefedő oldalak ra találnak hivatkozásokat.
7.3.1.
A Web felépítésének áttekintése
A felhasználók szemszögéből a Világháló (Web) különféle dokumentumok vagy weboldalak, vagy röviden csak oldalak (pages) hatalmas, világméretű gyűjteményé ből áll. Minden oldal tartalmazhat hivatkozásokat (links) más oldalakra, melyek világ szerte bárhol lehetnek. A felhasználók egy kattintással követhetik a hivatkozásokat, amelyek a hivatkozott oldalra viszik őket. Ez aztán a végtelenségig ismétlődhet. A hipertext (hypertext), vagyis az egymásra mutató oldalak ötletét az M.I.T. egyik látnoki képességű villamosmérnök professzora, Vannevar Bush vetette fel 1945-ben, jó val az Internet feltalálása előtt. Az oldalakat egy böngészőnek (browser) nevezett programmal tekinthetjük meg, mint amilyen például a népszerű Internet Explorer vagy a Netscape Navigator. A bön gésző elhozza a kívánt oldalt, értelmezi a szöveget és az abban előforduló formázóparancsokat, majd megfelelően formázva megjeleníti az oldalt a képernyőn. Erre a
660
SZÁMÍTÓGÉP-HÁLÓZATOK
7.18.(a) ábrán láthatunk példát. Mint sok weboldal, ez is egy címmel kezdődik, némi információt tartalmaz, és az oldal karbantartójának e-levél címével végződik. Az olyan - hiperhivatkozásnak (hyperlink) nevezett - szövegrészeket, amelyek össze köttetést biztosítanak más oldalakhoz, aláhúzással, különleges színnel való megjele nítéssel, vagy mindkettővel emelik ki. Egy hiperhivatkozás követéséhez a felhasználó a kurzort a kiemelt területre viszi (az egeret vagy a kurzormozgató billentyűket hasz nálva), és kiválasztja (az egér gombjának lenyomásával vagy az ENTER leütésével). Bár léteznek nem grafikus böngészők is, mint például a Lynx, ezek nem annyira nép szerűek, mint a grafikus böngészők, így az utóbbiakra fogunk összpontosítani. Hanggal vezérelhető böngészők is fejlesztés alatt állnak.
ÜDVÖZÖLJÜK AZ EAST PODUNK EGYETEM WWW HONLAPJÁN! • Egyetemi információ - Felvételi tudnivalók - Az egyetem térképe - Útbaigazítás az egyetemhez - Az East Podunk Egyetem hallgatói állománya • Tanszékek - Állatpszichológiai Tanszék - Alternatív Tanulmányok Tanszék - Mikrobiotikai Főzés Tanszék - Nem Hagyományos Tanulmányok Tanszék - Hagyományos Tanulmányok Tanszék Webmaster @ eastpodunk.edu (a)
ÁLLATPSZICHOLÓGIAI TANSZÉK • Tudnivalók a leendő fő szakirányosoknak • Személyzet - A Tanszék tagjai - Végzett hallgatóink - Tanszéki dolgozók • Kutatási projektek • Álláslehetőségek • A legnépszerűbb tanfolyamaink - A növényevők kezelése - Lómenedzsment - Hogyan tárgyaljunk a háziállatunkkal? - Felhasználóbarát kutvaházépítés • Az összes tanfolyam listája
[email protected] (b) 7.18. ábra. (a) Egy weboldal, (b) Az Állatpszichológiai Tanszékre kattintva elért oldal
661
AZ ALKALMAZÁSI RÉTEG
Azok a felhasználók, akiket érdekel az Állatpszichológia Tanszék, többet is meg tudhatnak róla, ha rákattintanak annak (aláhúzott) nevére. Ekkor a böngésző elhozza azt az oldalt, amelyre ez a név mutat, és megjeleníti, ahogy a 7.18.(b) ábrán is látszik. Itt az aláhúzott egységekre szintén rá lehet kattintani, hogy más oldalakat hozzunk be és így tovább. Az új oldal lehet ugyanazon a gépen, mint az előző, vagy egy olyan gé pen, amely a földgolyó másik felén helyezkedik el. A felhasználó ezt nem tudja. Az oldalak elhozását a böngésző végzi, a felhasználó bármilyen segítsége nélkül. Ha a felhasználó valaha visszatér a főoldalra, a már egyszer követett hiperhivatkozások esetleg szaggatott aláhúzással (és valószínűleg más színnel) jelennek meg, hogy meg különböztethetők legyenek a még nem követett hiperhivatkozásoktól. Vegyük észre, hogy a főoldalon az Egyetemi Információ sorra kattintva nem történik semmi. Nincs aláhúzva, ami azt jelenti, hogy ez csak szöveg és nem mutat másik oldalra. A Web működésének alapvető modelljét a 7.19. ábra mutatja. A böngésző itt egy weboldalt jelenít meg az ügyfél oldalán. Amikor a felhasználó egy olyan sorra kattint a szövegben, amely egy, az abcd.com kiszolgálón lévő oldalra mutat, akkor a böngé sző követi a hiperhivatkozást, és elküld egy üzenetet az abcd.com kiszolgálónak, melyben elkéri az oldalt. Amikor az oldal megérkezik, a böngésző megjeleníti. Ha ezen az oldalon van egy hiperhivatkozás az xyz.com kiszolgáló egy oldalára, és a fel használó arra rákattint, akkor a böngésző elküld egy kérelmet annak a gépnek, és ez így megy tovább a végtelenségig.
Ügyfél
A böngésző által éppen megjelenített oldal
Az abcd.com kiszolgáló
-TCP összeköttetés
Webszerver
Az Internet
7.19. ábra. A webmodell részei
Azxyz.com kiszolgáló
662
SZÁMÍTÓGÉP-HÁLÓZATOK
Az ügyfél oldala Nézzük meg most részletesebben a 7.19. ábrán az ügyfél oldalát! A böngésző lénye gében egy olyan program, mely képes megjeleníteni egy weboldalt és kezelni a meg jelenített oldalon lévő elemekre történt kattintásokat. Amikor egy elemet kiválaszta nak, a böngésző követi a hiperhivatkozást és letölti a kiválasztott oldalt. Az oldalakat URL-ek (Uniform Resource Locator - egységes erőforrás-meghatározó) segítsé gével nevezik meg. Egy tipikus URL a következőképpen néz ki: http://www.abcd.com/products.html
Az URL-eket a fejezet egy későbbi részében magyarázzuk el. Egyelőre elég annyit tudnunk, hogy az URL-nek három része van: a protokoll neve (http), annak a gépnek a DNS-neve, ahol az oldal megtalálható (www.abcd.com), és (általában) az oldalt tar talmazó állomány neve (products.html). Amikor a felhasználó rákattint egy hiperhivatkozásra, a böngésző lépéseket tesz annak érdekében, hogy elhozza a hiperhivatkozás által mutatott oldalt. Tegyük fel, hogy a felhasználó a Weben böngészve talál egy hivatkozást az Intemet-telefóniára, mely az ITU honlapjára mutat (http://www.itu.org/home/index.html). Kövessük végig a hivatkozás kiválasztását követő lépéseket! 1. A böngésző meghatározza az URL-t (megnézi, hogy mit választottak ki). 2. A böngésző megkérdezi a DNS-től a www.itu.org IP-címét. 3. A DNS válasza: 156.106.192.32 4. A böngésző létrehoz egy TCP-összeköttetést a 156.106.192.32-vei a 80-as porton. 5. Átküld egy kérést, melyben elkéri a/home/index.html állományt. 6. A www.itu.org kiszolgáló elküldi a/home/index.html állományt. 7. A TCP-összeköttetést lebontják. 8. A böngésző megjeleníti a/home/index.html-ben található összes szöveget. 9. A böngésző elhozza és megjeleníti az állományhoz tartozó összes képet. Sok böngésző a képernyő alján egy státussorban jelzi ki, hogy éppen melyik lépést hajtja végre. Ily módon, ha a teljesítmény gyatra, a felhasználó láthatja, hogy ez azért van, mert a DNS nem válaszol, vagy a kiszolgáló nem válaszol, vagy egyszerűen csak torlódás lépett fel a hálózatban az oldal átvitele közben. Ahhoz, hogy meg tudja jeleníteni az új oldalt (vagy bármelyik oldalt), a böngésző nek értenie kell az oldal formátumát. Az oldalakat egy HTML nevű, weboldalakat le író, szabványosított nyelven írják, hogy minden böngésző megértsen minden webol dalt. A HTML-t részletesen később tárgyaljuk. Bár a böngésző alapjában véve csak egy HTML-értelmező, a legtöbb böngésző
AZ ALKALMAZÁSI RÉTEG
663
számos gombbal és funkcióval rendelkezik, hogy megkönnyítsék a Weben való navi gálást. Többnyire van egy gombjuk az előző oldalra való visszalépéshez, egy gombjuk a következő oldalra való előrelépéshez (ez csak akkor működik, ha a felhasználó elő zőleg már visszalépett), és egy olyan gombjuk, amivel a felhasználó egyenesen a saját kezdőoldalára juthat. A legtöbb böngészőnek van egy gombja vagy menüpontja, ami vel könyvjelzőt lehet rakni egy adott oldalra, és egy másik, amivel meg lehet jeleníte ni a könyvjelzők listáját, így pár kattintással bármelyiket újra meglátogathatjuk. Az oldalakat lemezre is lehet menteni, vagy ki is lehet nyomtatni. Általában sokféle le hetőség van a képernyőelrendezés megváltoztatására és a különböző felhasználói be állítások megváltoztatására is. A weboldalak a (nem aláhúzott) sima szöveg és az (aláhúzott) hipertext mellett áb rákat, rajzokat, térképeket és fotókat is tartalmazhatnak. Ezek is mutathatnak (opcio nálisan) egy másik oldalra. Ha rájuk kattintunk, a böngésző elhozza a mutatott oldalt, és megjeleníti a képernyőn ugyanúgy, mintha szövegre kattintottunk volna. A fotók, térképek és egyék képek esetén az elhozott oldal attól is függhet, hogy a képnek me lyik részére kattintottunk. Nem minden oldal tartalmaz HTML-t. Egy oldal lehet PDF formátumú formázott dokumentum, GIF formátumú ábra, JPEG formátumú fénykép, MP3 formátumú zene, MPEG formátumú film, vagy bármi a további több száz állománytípus közül. Mivel a szabványos HTML ezek közül bármelyikre hivatkozhat, a böngészőnek gondjai lesz nek, amikor olyan oldallal találkozik, amit nem tud értelmezni. A különböző állománytípusok száma rohamosan nő. A legtöbb esetben ezért, ahe lyett hogy újabb és újabb értelmezők beépítésével egyre nagyobbá tették volna a bön gészőket, egy sokkal általánosabb megoldást választottak. Amikor a kiszolgáló elküld egy oldalt, egyúttal elküld némi járulékos információt is az oldalra vonatkozóan. Ez az információ tartalmazza az oldal MIME-típusát (lásd 7.12. ábra). A böngésző a text/html típusú oldalakat és még néhány rjeépített típust közvetlenül megjelenít. Ha az adott MIME-típus nincs a beépítettek között, akkor a böngésző megnézi a MIMEtípusokat tartalmazó táblázatát, hogy megtudja, hogyan kell megjelenítenie az oldalt. A táblázat minden MIME-típushoz egy megjelenítőt társít. A böngészők bővítése kétféleképpen, plug-in-ek vagy segédalkalmazások segítsé gével lehetséges. A plug-in (bedolgozó modul) egy olyan szoftvermodul, melyet a böngésző a háttértár egy külön könyvtárából tölt be, majd önmaga bővítményeként telepít, amint azt a 7.20.(a) ábra szemlélteti. A plug-in-ek a böngészőn belül futnak, ezért hozzáférhetnek az aktuális oldalhoz és módosíthatják annak megjelenését is. Ha a plug-in befejezte a munkáját (általában azután, hogy a felhasználó egy másik weboldalra navigált). a böngésző eltávolítja a memóriájából. A böngészőknek van egy eljáráskészletük, melyet a plug-in-eknek implementálni uk kell, hogy meghívhatok legyenek a böngészőből. Például, általában van egy olyan eljárás, amit a böngésző azért hív meg, hogy megadja a plug-in-nek a megjelenítendő adatokat. Ez az eljáráskészlet a plug-in interfésze, ami böngészőnként eltérő lehet. Mindemellett a böngésző is kínál szolgáltatásokat saját eljáráskészletén keresztül a plug-in-eknek. A böngésző interfészében jellemzően olyan eljárások vannak, melyek lehetővé teszik a memória lefoglalását és felszabadítását, egy üzenet megjelenítését a státussorban, vagy paraméterek lekérdezését a böngészőtől.
664
SZÁMÍTÓGÉP-HÁLÓZATOK
Az ügyfél gépe Böngésző A böngésző interfésze (ezt használja a plug-in)
A böngésző egyetlen folyamatként fut Plug-in
A plug-in interfésze (ezt használja a böngésző)
(a) Az ügyfél gépe Segéd alkalmazás
Böngésző
2. folyamat
1. folyamat (b)
7.20. ábra. (a) Egy böngésző plug-in. (b) Egy segédalkalmazás Ahhoz, hogy a phig-in-t használni lehessen, előbb telepíteni kell. A szokásos eljá rás az, hogy a felhasználó ellátogat a plug-in weboldalára, és letölt egy telepítőállo mányt. Windowsban ez általában egy önkicsomagoló zip állomány .exe kiterjesztés sel. Amikor kettőt kattintanak a zip állományra, elindul egy, az állomány elejéhez csatolt kis program. Ez a program kicsomagolja a plug-in-t és bemásolja a böngésző plug-in-könyvtárába. Ezt követően meghívja a szükséges eljárásokat, hogy regisztrálja a plug-in MIME-típusát, és társítsa vele a plug-in-t. UNIX esetében a telepítő gyakran egy parancssori szkript, amely a másolást és a regisztrálást kezeli. A böngészők kiterjesztésének másik módja a segédalkalmazások (helper applications) használata. Ezek önálló programok, melyek külön folyamatként futnak, ahogy azt a 7.20.(b) ábra szemlélteti. Mivel a segédalkalmazás különálló program, nem kínál interfészt a böngészőnek, és a böngésző szolgálatait sem használja. Általában inkább csak megkapja a letöltött ideiglenes állomány nevét, megnyitja az állományt, majd megjeleníti a tartalmát. A segédalkalmazások többnyire nagy programok, melyek a böngészőtől függetlenül léteznek, mint például az Adobe Acrobat Reader a PDFállományok megjelenítésére, vagy a Microsoft Word. Néhány programnak (ilyen az Acrobat is), van egy saját plug-in-je, ami aztán meghívja magát a segédalkalmazást. Sok segédalkalmazás használja az application MIME-típust. Ezen belül meglehe tősen sok altípust definiáltak, például az application/pdf-et a PDF-, az application/msword-öt pedig a Word-állományoknak. Ily módon az URL-ek mutathatnak közvetlenül egy PDF- vagy Word-állományra is. Ha a felhasználó rájuk kattint, auto matikusan elindul az Acrobat vagy a Word, és megkapja a megjelenítendő adatokat
AZ ALKALMAZÁSI RÉTEG
665
tartalmazó ideiglenes állomány nevét. A böngészők tehát gyakorlatilag korlátlan szá mú dokumentumtípus kezelésére is beállíthatók anélkül, hogy bármit is változtatni kellene rajtuk. A korszerű webszerverek gyakran több száz típus/altípus kombinációt kezelnek, és ehhez még minden alkalommal újabbak jönnek, ha egy új programot te lepítenek. A segédalkalmazásoknak nem kell az application MIME-típusra szorítkozniuk. Példának okáért az Adobe Photoshop az image/x-photoshop-ot használja, a RealOne Player pedig képes az audio/mp3 kezelésére. Ha egy programot telepítenek egy Windowsos gépre, az regisztrálja magának azt a MIME-típust, amit kezelni szeretne. Ez a megoldás ütközésekhez vezethet, ha több program is rendelhető' egy altípushoz, mint például a video/mpg. Ilyenkor az történik, hogy az utolsóként regisztráló program felülírja a meglevő (MIME-típus, segédalkal mazás) hozzárendeléseket, és kisajátítja magának az adott típust. Következésképp, egy új program telepítése után a böngésző lehet, hogy másképp fogja kezelni a meglevő típusokat. UNIX esetében ez a regisztrációs folyamat általában nem automatikus. A felhasz nálónak itt kézzel kell átírnia bizonyos konfigurációs állományokat. Ez a megközelí tés több munkával, de kevesebb meglepetéssel jár. A böngészők nem csak a távoli webszerverekről tölthetnek le állományokat, hanem megnyithatják azokat helyileg is. Mivel ezeknek a helyi állományoknak nincs MIMEtípusuk, a böngészőnek valami más módon kell kitalálnia, hogy melyik plug-in-t vagy segédalkalmazást kell használni, feltéve, hogy nem olyan beépített típusokról van szó, mint a text/html vagy az image/jpeg. Annak érdekében, hogy a helyi állományokat kezelni tudják, a segédalkalmazásokat a MIME-típuson kívül az állományok kiter jesztéseivel is társítani lehet. Szabványos konfiguráció esetén &foo.pdfa.z Acrobatban, a bar.doc pedig a Wordben fog megnyílni. Néhány böngésző a MIME-típust, az állo mány kiterjesztését, és még magából az állományból vett információkat is felhasználja a MIME-típus kiderítésére. Konkrétan az Internet Explorer is inkább az állomány ki terjesztésére hagyatkozik, mint a MIME-típusra, ha teheti. Itt is adódhatnak ütközések, hiszen egyszerre több program is tudja, sőt, szeretné is kezelni, mondjuk, az .mpg állományokat. A profiknak szánt programok a telepítés so rán gyakran jelölőnégyzeteket (checkbox) adnak meg minden MIME-típushoz és ki terjesztéshez, amit kezelni képesek. A felhasználó így kiválaszthatja a számára szük ségeseket, és nem fogja akaratlanul felülírni a meglevő társításokat. A nagyközönség nek szánt programok azonban azt feltételezik, hogy a felhasználónak fogalma sincs róla, hogy mi az a MIME-típus, úgyhogy magukhoz ragadnak mindent, amit csak tud nak, tekintet nélkül arra, hogy mit tettek az addig telepített programok. A böngészők sokféle új típussal való kibővítésének lehetősége kényelmes dolog, de bajokhoz is vezethet. Amikor az Internet Explorer letölt egy exe kiterjesztésű állo mányt, látja, hogy ez egy futtatható program, vagyis nincs hozzá segédalkalmazás. Ekkor kézenfekvő lépés lenne a program futtatása. Ez azonban óriási biztonsági rést jelent. Egy rosszindulatú webhelynek nincs is más dolga, mint hogy kiállít egy oldalt, mondjuk, filmsztárok vagy élsportolók képeivel, melyek mind egy vírusra mutatnak. Egy kattintás a képen, és máris letöltődik egy ismeretlen és esetleg ellenséges prog ram, és futni kezd a felhasználó gépén. Az ilyen hívatlan vendégek elkerülésére az
666
SZÁMÍTÓGÉP-HÁLÓZATOK
Internet Explorert úgy is be lehet állítani, hogy ne futtasson minden ismeretlen progra mot automatikusan, de nem minden felhasználó ismeri ennek a beállításnak a módját. UNIX-on hasonló gond lehet a parancssori szkriptekkel, de ehhez az kell, hogy a felhasználó tudatosan segédalkalmazásként telepítse a parancssort. Szerencsére ez a telepítés elég bonyolult ahhoz, hogy senki se tudja véletlenül végrehajtani (só't, szán dékosan se túl sokan képesek rá).
A kiszolgáló (szerver) oldala Ennyit tehát az ügyfél oldaláról, és most vessünk egy pillantást a kiszolgáló oldalára is. Amint azt már láttuk, a böngésző' az URL beírása vagy egy hipertextsorra való kat tintás után feldolgozza az URL-t, és a http:// valamint a következő perjel közötti részt kikeresi a DNS-ból. Ha megvan a kiszolgáló IP-címe, a böngésző' kiépít egy TCPösszeköttetést a kiszolgáló 80-as portjával. Ezután átküld egy parancsot, ami tartal mazza az URL hátralevő részét, mely az adott kiszolgálón levő állomány neve. A ki szolgáló végül átadja az állományt megjelenítésre a böngészőnek. Első közelítésben egy webszerver a 6.6. ábrán látható kiszolgálóhoz hasonlóan néz ki. Az a kiszolgáló, akárcsak egy igazi webszerver, egy állomány nevét kapja meg, amit meg kell keresnie és vissza kell adnia. Bármelyik esetet is nézzük, a kiszolgáló a következő lépéseket hajtja végre a központi ciklusában: 1. Elfogad egy TCP-összeköttetést az ügyféltől (a böngészőtől). 2. Megkapja a kért állomány nevét. 3. Megkeresi az állományt (a háttértáron). 4. Visszaadja az állományt az ügyfélnek. 5. Bontja a TCP-összeköttetést. A modern webszervereknek több funkciójuk van ennél, de alapjában véve ennyi egy webszerver feladata. Ennek a tervezésnek az a problémája, hogy minden állomány kérés miatt egy le mezhozzáférési műveletre van szükség. Ez azt eredményezi, hogy a webszerver leg feljebb annyi kérést tud kiszolgálni egy másodpercben, ahány lemezhozzáférést képes végezni ennyi idő alatt. Egy felsőkategóriás SCSI-meghajtó átlagos hozzáférési ideje 5 ms körül van, ami legfeljebb 200 kérés/s sebességre korlátozza a kiszolgálót, só't még kevesebbre, ha gyakran kell nagy állományokat beolvasni. Egy nagyobb webhely számára ez az érték túl kevés. Az első nyilvánvaló javítási lehetőség (amit minden webszerver alkalmaz is), hogy e gy gyorstárat (cache) tartanak a memóriában, mely az n legutoljára használt állo mányt tárolja. A kiszolgáló mindig megnézi a gyorstárat, mielőtt a merevlemezhez fordulna. Ha ott megvan az állomány, akkor rögtön ki lehet olvasni a memóriából, az-
AZ ALKALMAZÁSI RÉTEG
Feldolgozó modul (szál)
667
Webszervergép
7.21. ábra. Egy többszálú webszerver, egy előtét- és több feldolgozómodullal
az nincs szükség lemezhozzáférésre. A hatékony tárgyorsításhoz sok központi memó ria és valamivel több feldolgozási idő is szükséges (a tárban való keresés, illetve a tár tartalmának kezelése miatt). Az így elérhető' időmegtakarítás által az erőfeszítések és kiadások azonban még így is szinte mindig megtérülnek. A következő lépés a kiszolgálók gyorsításának útján a többszálú (multithreaded) felépítés kialakítása. Az egyik lehetséges megoldás szerint a kiszolgáló egy előtétmo dulból (front-end modulé) és k darab feldolgozómodulból áll, amint azt a 7.21. ábra mutatja. Az előtétmodul fogadja az összes beérkező kérést. Az így létrejött k + 1 szál mind ugyanahhoz a folyamathoz tartozik, tehát a feldolgozómodulok mind hozzáfér hetnek a folyamat címterében lévő gyorstárhoz. Amikor beérkezik egy kérés, az elő tétmodul fogadja azt, és létrehoz egy rövid leíró rekordot, majd átadja a rekordot az egyik feldolgozómodulnak. Egy másik megoldásban nincs előtétmodul, hanem min den feldolgozómodul megpróbál kéréseket szerezni saját magának, de ekkor egy lezá rási (locking) protokoll is szükséges, az ütközések megelőzése végett. A feldolgozómodul először a gyorstárban keresi a kért állományt. Ha ott van, akkor átírja a rekordot, hogy legyen benne egy mutató az adott állományra. Ha nincs ott, ak kor egy lemezműveletet indít, hogy beolvassa az állományt a gyorstárba (és esetleg kidob pár másik állományt a tárból, hogy legyen elég hely). Amikor az állomány be töltődött a lemezről, bekerül a gyorstárba, és visszaküldik az ügyfélnek is. Ennek a sémának az az előnye, hogy amíg egy vagy több feldolgozómodul blokkolódik, mert egy lemezművelet befejezésére vár (és így nem fogyaszt processzoridőt), addig más modulok aktívan dolgozhatnak a többi kérésen. Persze ahhoz, hogy tényleges javulást érjünk el az egyszálú modellel szemben, több lemez is szükséges, hogy egyszerre ne csak egy lemez dolgozhasson, k darab feldolgozómodullal és k le mezzel akár fc-szoros átbocsátóképesség-növekedés is elérhető az egyszálú és egylemezes kiszolgálóhoz képest. Elméletileg egy k lemezes egyszálú kiszolgáló is elérheti afc-szorosszorzót, de eh-
668
SZÁMÍTÓGÉP-HÁLÓZATOK.
hez sokkal bonyolultabb szoftver és adminisztráció szükséges, hiszen ekkor nem lehet hagyományos, blokkoló REÁD rendszerhívásokkal elérni a lemezt. Egy többszálú ki szolgálónál használhatunk ilyen hívásokat, mert ott a REÁD csak azt a szálat blok kolja, amelyik a hívást végezte, nem pedig az egész folyamatot. A korszerű webszerverek nem pusztán állományneveket fogadnak és állományokat adnak vissza. A valóságban a kérések feldolgozása egészen bonyolult is lehet. Ebből kifolyólag sok kiszolgálóban minden feldolgozómodul egy lépéssorozatot hajt végre. Az előtétmodul átad minden beérkező kérést az első rendelkezésre álló feldolgozómo dulnak, amely erre a következő lépések egy részhalmazát hajtja végre attól függően, hogy melyek szükségesek az adott kérés feldolgozásához. 1. A feldolgozómodul feloldja a kért weboldal nevét. 2. Azonosítja az ügyfelet. 3. Ellenőrzi az ügyfélre vonatkozó hozzáférési jogosultságokat. 4. Ellenőrzi a weboldalra vonatkozó hozzáférési jogosultságokat. 5. Megnézi a gyorstárat. 6. Betölti a kért oldalt a háttértárról. 7. Megállapítja a válaszban használandó MIME-típust. 8. Elvégez még egy-két apró-cseprő teendőt. 9. Visszaadja a választ az ügyfélnek. 10. Elhelyez egy bejegyzést a kiszolgáló naplójában. Az első lépésre azért van szükség, mert a bejövő kérés nem biztos, hogy szó szerint tartalmazza az állomány tényleges nevét. Vegyük például a http://www.cs.vu.nl URL-t. Itt az állománynév üres, tehát az URL-t ki kell egészíteni valamilyen alapértelmezett állománynévvel. A modern böngészők az alapértelmezett felhasználói nyelvet is meg tudják állapítani (pl. olasz vagy angol), ez pedig lehetővé teszi, hogy a kiszolgáló az adott nyelvű weboldalt válassza, ha van ilyen. A névkiegészítés általában nem annyira magától értetődő feladat, mint amilyennek első látásra tűnik, köszönhetően az állo mánynevekre vonatkozó különféle konvencióknak. A második lépés az ügyfél kilétének ellenőrzéséből áll. Ez azoknál az oldalaknál szükséges, melyek a teljes nyilvánosság számára nem elérhetők. A megvalósítás egyik lehetséges módját később tárgyaljuk a fejezetben. A harmadik lépés megnézi, hogy vannak-e korlátozások arra nézve, hogy kielégít hető-e az adott helyről jelentkező, adott kilétű ügyfél kérése. A negyedik lépés azt né zi meg, hogy vannak-e hozzáférési korlátozások magára az oldalra vonatkozóan. Ha
669
AZ ALKALMAZÁS! RÉTEG
van egy bizonyos állomány (pl. .htaccess) abban a könyvtárban, ahol a kért oldal is megtalálható, akkor az oldalhoz való hozzáférés bizonyos körzetekre korlátozható, például csak a vállalaton belüli felhasználók érhetik el az oldalt. Az ötödik és hatodik lépés jelentik az oldal megszerzését. A hatodik lépésnek tá mogatnia kell több egyidejű lemezmú'veletet is. A hetedik lépés a MIME-típus meghatározásáról szól. Ez történhet az állomány kiterjesztése alapján, az állomány első néhány szava alapján, egy konfigurációs állo mány útján vagy esetleg más forrásokból. A nyolcadik lépés mindenféle vegyes fel adatból áll, mint például a felhasználói profil felépítése vagy bizonyos statisztikák gyűjtése. A kilencedik lépésben küldik vissza az eredményt, a tizedik lépésben pedig egy bejegyzés kerül a rendszernaplóba, adminisztratív célból. Az ilyen naplókból később értékes információkat lehet kibányászni a felhasználók szokásaira vonatkozóan, pél dául arról, hogy milyen sorrendben látogatják a felhasználók az oldalakat. Ha folyton-folyvást túlságosan sok kérés érkezik, akkor a processzor nem tud megbirkózni a terheléssel, függetlenül attól, hogy hány lemezt használunk párhuza mosan. A megoldás az, hogy több csomópontot (számítógépet) állítunk hadrendbe, esetleg redundáns lemezek alkalmazásával, hogy a lemezek se jelentsenek szűk ke resztmetszetet. Ezzel elérkeztünk a 7.22. ábrán látható szerverfarm (server farm) modellhez. Itt is egy előtétmodul fogadja a bejövő kéréseket, de ezeket nem több szálnak, hanem több processzornak osztja szét, hogy az egyes gépekre kisebb terhelés jusson. Maguk a gépek továbbra is műTcödhetnek többszálú és csővezeték (pipeline) alapon. Feldolgozó csomópont (külön számítógép)
Router
Szál csővezetéke
/ 000000
O0OOO0
000000
00OO00
OODOOfl
000000
0OOOD0
\ Előtétmodul
LAN
7.22. ábra. Szerverfarm A szerverfarmok egyik problémája az, hogy minden feldolgozó csomópontnak sa ját memóriája van, ezért nem lehet osztott gyorstárat használni, hacsak nem alkalma zunk drága, osztott memóriás multiprocesszort. Ezt a teljesítménycsökkenést ellensú lyozhatjuk úgy is, ha az előtétmodul számon tartja, hogy hová küldte az egyes kérése ket, és az ugyanarra az oldalra vonatkozó későbbi kéréseket ugyanahhoz a csomó ponthoz továbbítja. Ezzel minden csomópont bizonyos oldalak specialistájává válik, így nem pazaroljuk a gyorstárterületet azáltal, hogy minden állományt minden tárban benntartunk. A szerverfarmok másik problémája az, hogy az ügyfél TCP-összeköttetése az elő tétmodulnál ér véget, ezért a válasznak is ezen a modulon keresztül kell kimennie. A
670
SZÁMÍTÓGÉP-HÁLÓZATOK
Feldolgozó csomópont 3
2
Előtétmodul 4
1
1
Az ügyféltől
Az ügyfélhez (a)
Feldolgozó csomópont 2
.
Előtétmodul
— - S
3 Az ügyfélhez
1
Az ügyféltől (b)
7.23. ábra. (aj Hagyományos kérés-válasz üzenetsor. (b) Üzenetsor TCP-átadással helyzetet a 7.23.(a) ábra mutatja be, ahol mind a bejövő kérés (1), mind a kimenő vá lasz (4) az előtétmodulon megy keresztül. Ez a probléma megkerülhető egy TCPátadás (TCP handoff) nevű fogással. A trükk lényege, hogy a TCP-végpontot átad ják a feldolgozó csomópontnak, hogy az közvetlenül válaszolhasson az ügyfélnek, amint azt a (3) nyíl mutatja a 7.23.(b) ábrán. Az átadás a felhasználó számára átlátszó módon megy végbe.
Az URL-ek: egységes erőforrás-meghatározók Már többször említettük, hogy a weboldalak tartalmazhatnak mutatókat más webolda lakra. Most ideje, hogy megnézzük, hogyan is valósítják meg ezeket a mutatókat. Amikor a Web először létrejött, rögtön nyilvánvalóvá vált, hogy ha az egyik weboldal a másikra akar mutatni, akkor az oldalak elnevezéséhez és megtalálásához mechaniz musok kellenek. Egészen pontosan, három kérdés volt, amelyekre válaszolni kellett, mielőtt egy kiválasztott oldalt meg lehetett volna jeleníteni: 1. Mi az oldal neve? 2. Hol helyezkedik el az oldal? 3. Hogyan lehet elérni az oldalt? Ha minden oldalhoz valahogyan hozzárendelnénk egy címet, az oldalak azonosítá sánál nem lenne kétértelműség. Ennek ellenére a probléma nem oldódna meg. Az Egyesült Államokban majdnem mindenkinek van társadalombiztosítási száma, amely egy egyedi azonosító, mivel nincs két ember, akinek ugyanaz a száma. Viszont ha csak a társadalombiztosítási számot ismerjük, akkor nem tudjuk megtalálni a tulajdo nosának lakcímét, és nyilván nem fogjuk tudni, hogy az illetőnek angolul, spanyolul vagy kínaiul kellene írnunk. A Világháló alapvetően hasonló gondokkal küzd. A választott megoldás úgy azonosítja az oldalakat, hogy mindhárom gondot egy szerre oldja meg. Minden oldalhoz hozzárendelnek egy URL-t (Uniform Resource
AZ ALKALMAZÁSI RÉTEG
671
Locator - egységes erőforrás-meghatározó), amely tulajdonképpen az adott oldalnak a világon mindenütt használható neveként szolgál. Az URL-ek három részből állnak: a protokollból (amelyet sémának is neveznek), annak a gépnek a DNS-nevéből, amelyen az oldal elhelyezkedik, és egy helyi névből, amely egyértelműen azonosítja a kérdéses oldalt. (Ez rendszerint egy állománynév azon a gépen, ahol az oldal elhelyezkedik.) A szerző tanszékének webhelye például számos videofelvételt tartalmaz az egye temről és Amszterdam városáról. Ennek az oldalnak az URL-je: http://www.cs.vu.nl/video/index-en.html
Ez az URL három részből áll: a protokollból (http), a hoszt DNS-nevéből (www.cs.vu.nl) és az állomány nevéből (video/index-en.html), melyeket bizonyos írásjelek választanak el. Az állomány nevét a cs.vu.nl alapértelmezett webkönyvtárához viszonyítva kell érteni. Sok webhelyen használhatunk beépített rövidítéseket az állománynevek helyett. Az üres állománynév alapértelmezés szerint sok helyen a szervezet honlapjának főoldalá ra mutat. Ha a megnevezett állomány egy könyvtárat takar, akkor rendszerint a könyvtál" index.html nevű állománya fog letöltődni. A -user/pedig leképezhető a user nevű felhasználó WWW könyvtárára, azon belül is az index.html állományra. Ezek szerint a szerző honlapját a következő címen lehet elérni: http://www.cs.vu.nl/~ast/
annak ellenére, hogy a tényleges állománynév az index.html, egy adott alapértelmezett könyvtárban. Most már látható, hogyan is működik a hipertext. Ahhoz, hogy egy szövegrészre rá lehessen kattintani, az oldal írójának két információelemet kell biztosítania: a megjele nítendő szöveget, amire rá lehet kattintani, és az URL-t, ahová menni kell, ha a szöveget kiválasztják. A megadás szintaktikáját a fejezet későbbi részében magyarázzuk el. Amikor a szöveget kiválasztják, a böngésző a DNS segítségével kikeresi a hoszt nevét. A hoszt IP-címének ismeretében a böngésző létrehoz a hoszttal egy TCPösszeköttetést. Ezen az összeköttetésen keresztül elküldi az állomány nevét, a meg adott protokollt használva. Ennyi! Már jön is vissza az oldal. Ez az URL-séma nyitott abban az értelemben, hogy a böngészők a különböző erő források eléréséhez minden további nélkül többféle protokollt is használhatnak. Mi több, más elterjedt protokollokhoz is definiáltak URL-eket. Az elterjedtebb protokol lok némileg egyszerűsített formája látható a 7.24. ábrán. Menjünk végig röviden a listán! A http protokoll a Web anyanyelve, ezt beszélik a HTTP-kiszolgálók is. A HTTP a HyperText Transfer Protocol (hipertext átviteli protokoll) rövidítése. Ezt a későbbiek folyamán részletesebben is tárgyalni fogjuk. Az ftp protokollt használva lehet az FTP-vel, az internetállomány átviteli protokoll jával állományokat elérni. Az FTP már több mint két évtizede létezik, és mostanra be épült a köztudatba. A világon mindenhol vannak olyan FTP-kiszolgálók, amelyre az Interneten keresztül bárki bejelentkezhet, és az FTP-kiszolgálóra felhelyezett állomá nyokat letöltheti. A Web nem változtat ezen, mindössze csak az állományok FTP-vel
7.24. ábra. Néhány szokásos URL történő megszerzését könnyíti meg, mivel az FTP-nek némileg fapados felülete van (bár helyenként többet tud, mint a HTTP, például lehetővé teszi, hogy amikor egy fel használó az A gépen dolgozik, átvigyen egy állományt a B gépről a C gépre). Egy helyi állományt is el lehet érni weboldalként a filé protokoll használatával, vagy egyszerűen csak az állomány megnevezésével. Ez a megközelítés hasonló az FTP-hez, de nem igényel külön kiszolgálót. Természetesen ez csak helyi állományok ra működik, távoliakra nem. Már jóval az Internet ideje előtt is létezett a USENET hírolvasórendszer. Ez körül belül 30 000 hírcsoportot foglal magába, melyekben emberek milliói vitatják meg né zeteiket különféle témákban úgy, hogy cikkeket küldenek be és olvasnak a hírcsoport témájára vonatkozóan. A news protokoll lehetővé teszi, hogy egy cikket úgy töltsünk le, mintha egy weboldal lenne. Ez azt jelenti, hogy a webböngésző egyben hírolvasó is. Sőt, sok böngésző rendelkezik olyan gombokkal vagy menüpontokkal, melyek használatával a USENET hírek olvasása még egyszerűbb is, mint a hagyományos hír olvasók használatával. A news protokollnak két formátumát támogatják. Az első formátum egy hírcsopor tot nevez meg, és arra lehet használni, hogy egy előre beállított hírállomásról megkap juk a cikkek listáját. A másodikhoz szükség van egy bizonyos cikk azonosítójának megadásához, ebben az esetben az [email protected]. A böngésző ez után letölti a cikket az előre beállított hírállomásról az NNTP (Network News Transfer Protocol - hálózati hírcsoport-átviteli protokoll) használatával. Az NNTP-t nem tárgyaljuk ebben a könyvben, de annyit elmondunk, hogy némileg az SMTP-n alapszik, és a stílusa is hasonló. A gopher protokollt a Gopher rendszer használja, amelyet a Minnesotai Egyetemen terveztek, és az iskola atlétikai csapata, a Golden Gophers (Arany Hörcsögök) után neveztek el. (A „gopher" az angol szlengben a „go for" szinonimája is, ami kb. annyit tesz: menj és hozd el.) A Gopher, amely sok évvel megelőzte a Világhálót, egy infor mációbegyűjtő rendszer, amely elvében hasonló a Világhálóhoz, de csak szöveget tá mogat, képek nélkül. Mára lényegében idejétmúlttá vált, és alig-alig használják. Az utolsó két protokoll nem igazán hasonlít a weboldalak letöltésére, de azért így is hasznosak. A mailto protokoll lehetővé teszi, hogy a felhasználók egy webböngé-
AZ ALKALMAZÁS] RÉTEG
673
szóból küldhessenek e-leveleket. Ezt úgy lehet véghezvinni, hogy az OPEN gombra kattintunk, és egy olyan URL-t adunk meg, amely egy mailto: részből és a címzett e-mail címéből áll. A legtöbb böngésző erre úgy reagál, hogy elindít egy levelező programot, miután a fejrészben előre kitöltötte a címmezőt és néhány más mezőt. A telnet protokoll arra használható, hogy egy távoli géppel on-line összeköttetést hozzunk létre. Ugyanúgy működik, mint a Telnet program, ami nem meglepő, mivel a legtöbb böngésző csak meghívja a Telnet programot, mint kisegítő alkalmazást. Röviden, az URL-eket úgy tervezték, hogy az a felhasználóknak ne csak a webes navigációt, de az FTP, a Gopher, a hírek, az e-levél és a telnet használatát is lehetővé tegye. Ezáltal szükségtelenné válnak a többi szolgáltatás speciális felhasználói inter fészű programjai, így majdnem minden internetelérés egyetlen programba, a webböngészőbe integrálódik. Ha nem tudnánk, hogy ezt a sémát egy kutatófizikus tervezte, könnyen úgy vélhetnénk, hogy valamely szoftvercég hirdetési kampányának terméke. Mindezen kellemes tulajdonságok ellenére, a Világháló egyre növekvő használatá val felmerült az URL-séma egy öröklött gyengesége. Egy URL egy bizonyos hosztra mutat. Az olyan oldalakról, amelyekre sokan hivatkoznak, kívánatos sok másolatot létrehozni egymástól távol, hogy a hálózati terhelés csökkenjen. A gond csak az, hogy az URL nem ad semmi módot arra, hogy egy oldalra hivatkozzunk anélkül, hogy megmondanánk, hol is van az. Nem lehet azt mondani: „Az xyz oldalt akarom, de nem érdekel, honnan szerzed meg". A probléma megoldásának érdekében, valamint az oldalak többszörözésének lehetővé tétele céljából az IETF az URN-ek (Universal Resource Names - egységes erőforrásnevek) rendszerén dolgozik. Az URN-t úgy képzelhetjük el, mint egy általánosított URL-t. A téma még mindig kutatási stádium ban van, de az RFC 2141 már tesz egy javaslatot a szintaktikára.
Állapotnélküliség és a sütik Mint azt már többször is láthattuk, a Web alapjában véve állapot nélküli (stateless): hiányzik belőle a bejelentkezési viszony (login session) fogalma. A böngésző elküld egy kérést, a kiszolgáló pedig visszaküld egy állományt, aztán elfelejti, hogy valaha is látta már az adott ügyfelet. Kezdetben, mikor a Web még csak a nyilvánosan hozzáférhető dokumentumok el érésére szolgált, ez a modell tökéletesen kielégítő is volt. Problémák adódtak azonban, amikor új funkciók kezdtek megjelenni a Weben. Az ügyfeleknek például néhány webhelyen regisztrálniuk kell magukat (esetleg fizetniük is kell), hogy használhassák az oldalakat. Ez felveti a kérdést: hogyan tudja a kiszolgáló megkülönböztetni a regiszt rált felhasználóktól érkező kéréseket a többi kéréstől? A második példát az e-kereske delem adja. Ha egy felhasználó egy elektronikus áruházban bóklászik, és időnként be lerak egy-egy árut a bevásárlókocsijába, akkor hogyan tudja a kiszolgáló nyomon kö vetni a kocsi tartalmát? A harmadik példa a személyre szabható portálok esete, mint amilyen a Yahoo. A felhasználók aprólékosan beállíthatják maguknak a kezdőoldaluk részleteit, hogy az csak azokat az információkat tartalmazza, melyekre ők kíváncsiak (pl. a részvényeik árfolyamáról és kedvenc sportcsapataikról). De hogyan tudja a ki szolgáló megjeleníteni a helyes oldalt, ha nem tudja, hogy ki a felhasználó?
674
SZÁMÍTÓGÉP-HÁLÓZATOK
Elsőre azt gondolhatnánk, hogy a kiszolgálók a felhasználókat az IP-címük megfi gyelésével követik nyomon. Csakhogy ez az ötlet nem működik. Először is, sok fel használó dolgozik közös számítógépen, különösen cégeknél, az IP-cím pedig csak egyetlen számítógépet azonosít, nem egyetlen felhasználót. Másodszor, és ez még rosszabb, sok internetszolgáltató használ NAT-ot, aminek eredményeként az összes felhasználó összes kimenő csomagja ugyanazt az IP-címet hordozza. A kiszolgáló szemében a szolgáltató több ezer előfizetőjének mind ugyanaz az IP-címe. A probléma megoldására a Netscape a sokat bírált sütik (cookies) módszert java solta. A név az ősi programozói zsargonból származik, és arra a helyzetre utal, amikor egy program meghív egy eljárást, és visszakap valamit, amit később esetleg fel kell mutatnia, hogy elvégeztessen valamit. Ebben az értelemben egy UNIX-állományleíró vagy egy Windows-objektumazonosító is tekinthető sütinek. A sütiket késó'bb az RFC 2109-ben formalizálták. Amikor egy ügyfél elkér egy weboldalt, a kiszolgáló a kért oldal mellett járulékos információkat is megadhat. Ezek az információk tartalmazhatnak egy sutit is, ami egy kicsi (legfeljebb 4 KB-os) állomány (vagy karakterlánc). A böngészők a felkínált sütiket az ügyfél merevlemezének süti-könyvtárában tárolják, feltéve, hogy a felhasz náló nem tiltotta le a sütik használatát. A sütik nem futtatható programok, csak egy szerű állományok vagy karakterláncok. Elvileg egy süti is tartalmazhatna vírust, de mivel egyszerű adatként kezelik, a vírusnak hivatalosan nincs lehetősége ténylegesen futni és károkat okozni. Néhány számítógépes kalóznak persze mindig sikerül kihasz nálnia egy böngészőhibát, és elérnie az aktiválást. Egy süti legfeljebb öt mezőt tartalmazhat, ahogy azt a 7.25. ábra mutatja. A Körzet megmondja, honnan származik. A böngészők dolga, hogy ellenőrizzék, hogy a kiszol gálók nem hazudnak-e a körzetükről. Az egyes körzetek ügyfelenként 20 sütinél töb bet nem tárolhatnak. Az Útvonal a kiszolgáló könyvtárrendszerének egy útvonalát je lenti, és meghatározza, hogy a kiszolgáló állomány fájának melyik része használhatja a sutit. A mező értéke gyakran /, ami az egész fát jelenti. A Tartalom mező név - érték felépítésű. A kiszolgáló bármit írhat a név és az érték helyére is. Ebben a mezőben tárolják a süti tényleges tartalmát. A Lejárat mező adja meg, hogy mikor jár le a süti érvényessége. Ha ez a mező üres, akkor a böngésző kilépéskor eldobja a sutit. Az ilyen sütiket nem-tartós sütinek (nonpersistent cookie) nevezzük. Ha meg van adva egy időpont és dátum, akkor a süti tartós (persistent), és a lejárat idejéig megőrzik. Az időt a greenwichi idő szerint adják meg. Ha a kiszolgáló el akar távolítani egy sutit a felhasználó merevlemezéről, akkor egyszerűen elküldi még egyszer, csak múltbeli lejárati idővel. Körzet toms-casino.com joes-store.com aportal.com alattomos.com
Út vonal
/ / / /
Lejárat
Bizton ságos
15-10-02 17:00
Igen
Cart=1 -00501; 1 -07031 ;2-13721 11-10-02 14:22
Nem
Prefs=Stk:SUNW+ORCL;Spt:Jets 31-12-10 23:59
Nem
31-12-12 23:59
Nem
Tartalom CustomerlD=497793521
UserlD=3627239101
7.25. ábra. Néhány példa a sütíkre
AZ ALKALMAZÁSI RÉTEG
675
Végül, a Biztonságos mező azt jelzi, hogy a böngésző csak biztonságos kiszolgáló nak küldheti vissza a sutit. Ezt a funkciót az e-kereskedelmi, banki és egyéb biztonsá gi alkalmazásokban használják. Azt már láttuk, hogy hogyan lehet megszerezni a sütiket, de hogyan használják azokat? Nos, mielőtt a böngésző elküldené egy kérést valamely webhelyre, megnézi süti-könyvtárát, hogy a kérés célját képező körzetből helyeztek-e már el ott sutit. Ha igen, az ilyen sütiket mellékelik a kéréshez. A kiszolgáló a visszakapott sütiket úgy értelmezi, ahogyan csak akarja. Nézzünk meg pár lehetséges használati esetet. A 7.25. ábrán az első sutit a tomscasino.com helyezte el, hogy azonosíthassa a látogatót. Amikor az ügyfél a következő héten is belép, hogy még több pénzt szórjon el, a böngésző átküldi a sutit, hogy a kiszol gáló tudja, kiről is van szó. A látogató azonosítójával felvértezve a kiszolgáló megkeres heti a látogató rekordját egy adatbázisban, hogy ezen információ felhasználásával egy megfelelő weboldalát állítson elő. Ez az oldal a látogató ismert szokásainak megfelelően tartalmazhat egy pókerleosztást, az aznapi lóversenyek listáját vagy egy félkarú rablót. A második süti a joes-store.com-tól érkezett. Itt a felállás az, hogy az ügyfél az áruházban mászkálva mindenféle jó dolgot szeretne vásárolni. Amikor egy jó vételt talál és rákattint, a kiszolgáló összeállít egy sutit a termék kódjából és a kívánt darab számból, és visszaküldi ezt az ügyfélnek. Ahogy az ügyfél tovább bóklászik az áru házban, a sutit minden új oldalkérésnél visszaküldik. A kiszolgáló a közben össze gyűlő további megrendeléseket mind hozzáadja a sütihez. Az ábrán a bevásárlókocsi ban három árucikk van, és az utolsóból rögtön kettőt is rendeltek. Végül, mikor a fel használó a TOVÁBB A PÉNZTÁRHOZ gombra kattint, a kéréssel együtt a megrende lések immár teljes listáját tartalmazó sutit is elküldik. Ezáltal a kiszolgáló pontosan tudni fogja, hogy mik a megrendelések. A harmadik sutit egy webportál használja. Amikor a felhasználó rákattint egy, a portálra mutató hivatkozásra, a böngésző átküldi a sutit. A portál ebből tudni fogja, hogy egy olyan oldalt kell összeállítania, mely a Sun Microsystems és az Oracle rész vényárfolyamait, valamint a New York Jets csapat eredményeit tartalmazza. Mivel egy süti akár 4 KB-os is lehet, rengeteg hely van arra, hogy részletesebb beállításokat is megadhassunk a számunkra érdekes újsághírekre, helyi időjárásra, reklámajánlatok ra stb. vonatkozóan. A sütiket a kiszolgáló saját céljaira is felhasználhatja. Tegyük fel például, hogy egy kiszolgáló nyomon kívánja követni, hány látogatója akadt, és hogy ezek hány oldalt néztek meg, mielőtt otthagyták az adott webhelyét. Amikor az első kérés beérkezik, még nem tartozik hozzá süti, tehát a kiszolgáló elküld egyet, Számláló = 1 tartalom mal. Az ezt követő kattintások során a sutit mindig visszaküldik a kiszolgálónak. A kiszolgáló a számlálót mindig megnöveli eggyel, és így küldi vissza az ügyfélnek. A számlálók nyomon követése révén a kiszolgáló láthatja, hogy hányan távoznak az első oldal megtekintése után, hányan a második után és így tovább. A sütikkel történtek már visszaélések is. A sütiknek elméletileg csak az azokat ki adó helyre szabadna visszatérniük, de a hackereknek a böngészők számos hibáját ki aknázva sikerült elkapniuk olyan sütiket, melyeket nem nekik szántak. Miután egyes e-kereskedelemmel foglalkozó webhelyek a hitelkártya számát is egy sütiben tárolják, a visszaélések lehetősége nyilvánvaló.
676
SZÁMÍTÓGÉP-HÁLÓZATOK
A sütik használatának vitatható módja a felhasználó böngészési szokásairól való titkos adatgyűjtés is. Ez a következőképp működik. Egy reklámügynökség, mondjuk, az Alattomos Hirdetések, felkeresi a fontosabb webhelyeket, és az üzleti ügyfeleik termékeit hirdető reklámszalagokat (banners) helyez el az oldalaikon, amiért a webhelyek tulajdonosainak bizonyos díjat fizet. Ahelyett azonban, hogy a webhelyeknek egy GIF- vagy JPEG-állományt adna elhelyezésre, csak egy URL-t ad, hogy azt rakják fel minden oldalra. Minden ilyen URL egy egyedi számot tartalmaz az állományt azonosító részében, mint például http://www.alattomos.com/382674902342.gif
Amikor a felhasználó először látogat meg egy olyan P oldalt, mely egy ilyen hir detést tartalmaz, a böngésző letölti a HTML-állományt. Ezt megvizsgálva észreveszi a www. alattomos, com-on levő képre mutató hivatkozást, elküld tehát egy kérést a képre vonatkozóan. Erre visszakap egy hirdetést tartalmazó GIF-állományt, egy egyedi fel használói azonosítót tartalmazó sütivel együtt, ami a 7.25. ábra esetében 3627239101. Alattomosak feljegyzik maguknak, hogy az ilyen azonosítójú felhasználó megláto gatta a P oldalt. Az adott hirdetés természetesen több ezer oldalon is megjelenhet, de mindig különböző állománynévvel. Az Alattomos cég feltehetően pár pennyt kap a termékek gyártójától minden kiadott hirdetés után. Később a felhasználó meglátogat egy másik, Alattomos hirdetést tartalmazó weboldalt. Miután a böngésző letöltötte a HTML-állományt a kiszolgálóról, látja, hogy az tartalmaz egy hivatkozást, mondjuk, a http://www.alattomos.com/493654919923.gif-rs, így elkéri az adott állományt. Mivel rendelkezik már egy sütivel a www.alattomos.com körzetből, a böngésző a kéréshez mellékeli az Alattomos-féle sutit, ami a felhasználó azonosítóját tartalmazza. Alattomosek így már a második oldalt ismerik meg, amit a felhasználó meglátogatott. Az Alattomos cég idővel egy teljes profilt állíthat össze a felhasználó böngészési szokásairól, még akkor is, ha az soha nem kattintott egyik hirdetésre sem. A felhasz náló nevével ugyan még nem rendelkezik (bár ismeri az IP-címét, ami elég lehet ah hoz, hogy kikövetkeztesse a nevet más adatbázisokból). Ha viszont a felhasználó csak egyszer is megadja a nevét egy olyan webhelynek, mely együttműködik az Alatto mossal, máris meglesz a teljes profilja névvel együtt, és bárki megvásárolhatja azt. Az ilyen adatok eladása elég jövedelmező az Alattomos számára ahhoz, hogy még több helyen még több hirdetést helyezzen el, és így még több adatot gyűjtsön. A egész do log legfondorlatosabb része az, hogy a legtöbb felhasználó egyáltalán nem tud erről az adatgyűjtésről, sőt azt gondolják, hogy biztonságban vannak, mert nem kattintottak egy hirdetésre sem. Ráadásul, ha az Alattomos szuperalattomos akar lenni, a hirdetésnek nem is kell klasszikus reklámszalagnak lennie. Egy olyan „hirdetés", ami a háttérben egyetlen képpontból áll (vagyis gyakorlatilag láthatatlan), pontosan ugyanazt eredményezi, mint egy reklámszalag: hatására a böngésző letölti az 1 x 1 méretű GIF-képet, és be küld minden sutit, ami a kép körzetéből jött. Néhány felhasználó az összes süti visszautasítására állítja be a böngészőjét, hogy magánéletük háborítatlanságnak legalább a látszatát megőrizzék. Ez viszont a sütikkel
AZ ALKALMAZÁSI RÉTEG
677
működő jóindulatú webhelyek használatánál okozhat gondokat. A probléma megoldá sára a felhasználók néha sütievő (cookie-eating) programokat telepítenek. Ezek olyan speciális programok, melyek minden beérkező sutit megvizsgálnak, és a felhasználó által megadott beállítások alapján fogadják vagy dobják el azokat (pl. aszerint, hogy mely webhelyeket tartjuk megbízhatónak). Ily módon a felhasználó részletekbe menő en meghatározhatja, hogy mely siitiket kell elfogadni, és melyeket eldobni. A korszerű böngészőkbe, mint amilyen a Mozilla is (www.mozilla.org), gondosan kidolgozott mechanizmusokat építettek be a sütik kezelésére. 7.3.2.
Statikus dokumentumok a Weben
A Web lényege a weboldalak átvitele a kiszolgálótól az ügyfélhez. A weboldalak a legegyszerűbb formájukban statikusak, azaz puszta állományok, melyek egy kiszol gálón ülnek és várják, hogy letöltsék őket. Ebben az összefüggésben még egy videoállomány is statikus weboldal, mert végeredményben az is csak egy állomány. Ebben a szakaszban a statikus weboldalak részleteit tárgyaljuk, a következőben pedig a dinamikus tartalomgenerálást. HTML - a Hipertext jelölőnyelv A weboldalakat jelenleg a HTML (HyperText Markup Language - hipertext je lölőnyelv) nevű nyelven írják. A HTML lehetővé teszi, hogy a felhasználók webolda lakat állítsanak elő, melyek tartalmazhatnak szöveget, ábrákat és hivatkozásokat más weboldalakra. A HTML jelölőnyelv, azaz olyan nyelv, amely leírja, miként kell a do kumentumot megformázni. A „jelölő" (markup) kifejezés azokból az időkből szárma zik, amikor a szerkesztők a nyomtatók számára - melyek akkoriban emberi lények voltak - ténylegesen megjelölték a dokumentumokban, hogy melyik betűtípust kell használni és így tovább. A jelölőnyelvek ezért explicit formázóparancsokat tartalmaz nak. A HTML-ben például a a félkövér mód kezdetét, a pedig a végét jelzi. A jelölőnyelv használatának előnye a nem jelölőnyelvekkel szemben, hogy egyszerű hozzá böngészőt írni, mert a böngészőnek csak a jelölőparancsokat kell megértenie. A jelölőnyelvek további jól ismert példányai a TeX és a troff. Azzal, hogy a jelölőparancsokat beágyazták minden HTML-állományba és szabvá nyosították őket, bármely webböngésző számára lehetővé vált, hogy tetszőleges weboldalt elolvashasson és újraformázhasson. A weboldalak letöltés utáni újraformázásának lehetősége igen fontos, mert lehet, hogy egy oldalt 1600 x 1200-as felbontás és 24 bites színmélység mellett hoztak létre, de egy 640 x 320-as, 8 bites színmélységű ab lakban kell megjeleníteni. Az alábbiakban egy rövid bevezetőt adunk a HTML-hez, csak hogy némi fogal munk legyen a felépítéséről. Bár HTML-dokumentumokat kétségkívül bármely szab ványos szerkesztő segítségével is írhatunk (és sokan ezt is teszik), lehetőség van azonban speciális HTML-szerkesztők vagy szövegszerkesztő programok használatára is, melyek elvégzik a munka nagy részét (de cserébe kevesebb beavatkozási lehetősé get adnak a felhasználónak a végeredmény részleteire nézve).
SZÁMÍTÓGÉP-HÁLÓZATOK
678
Egyesült Szerkentyű Rt.
Üdvözöljük az ESZ honlapján
Boldogok vagyunk, hogy Ön ellátogatott az Egyesült Szerkentyű honlapjára. Reméljük, hogy Ön minden szükséges tudnivalót megtalál itt.
Alább élő kapcsokat biztosítunk számos kiváló termékünkhöz. Ön rendelhet elektronikusan (WWW-n keresztül), telefonon vagy faxon.
Boldogok vagyunk, hogy Ön ellátogatott az Egyesült Szerkentyű honlapjára. Reméljük, hogy Ön minden szükséges tudnivalót megtalál itt. Alább élőkapcsokat biztosítunk számos kiváló termékünkhöz. Ön rendelhet elektronikusan (WWW-n keresztül), telefonon vagy faxon. Termékismertető • Nagy szerkentyűk • Kis szerkentyűk Telefonszámok •Telefon: 1-800-WIDGETS • Fax: 1-415-765-4321
(°) 7.26. ábra. (a) Egy példa weboldal HTML-je. (b) A formázott oldal Minden weboldal fejrészből és törzsből áll, magát az oldalt pedig és formázási parancsok, ún. címkék (tags) határolják, bár a legtöbb böngésző nem tekinti hibának ezek hiányát. Amint a 7.26.(a) ábra mutatja, a fejrészt a és , a törzset pedig a és címkék fogják közre. A címkék szö-
AZ ALKALMAZÁSI RÉTEG
679
vegét direktívának (directive) nevezik. A legtöbb HTML-címke ilyen formátumú, va gyis a címke jelzi valaminek a kezdetét, és a a végét. A böngészők többségében található egy FORRÁS MEGJELENÍTÉSE (VIEW SOURCE) vagy ha sonló nevű menüpont, melyet kiválasztva az aktuális oldal tényleges, formázott képe helyett annak HTML-forrását tekinthetjük meg. A címkék lehetnek kis- és nagybetú'sek is, azaz és ugyanazt je lentik, de a szabvány újabb verziói a kisbetűs írásmódot követelik meg. A HTMLforrás formázásának nincs jelentősége. A HTML-értelmezők figyelmen, kívül hagyják a fölösleges szóköz és kocsi-vissza karaktereket, hiszen mindig az aktuális megjele nítési területnek megfelelően kell újraformázniuk a szöveget. Ebből következik, hogy az ilyen, ún. white space (puha szóköz) karakterek tetszés szerint használhatók a HTML-forrásokban, hogy azok olvashatóbbak legyenek - legtöbbjük erre bizony rá is szorul. Ugyanezért nem elég egyszerűen üres sorokkal elválasztani a bekezdéseket, mivel azokat az értelmezők nem veszik figyelembe; erre a célra külön címkét defini áltak. Egyes címkék attribútumokkal, azaz (névvel ellátott) paraméterekkel is rendel keznek. Nézzük a következő példát: Itt az címkének két paramétere van: az src paraméter értéke abc, míg az alt ér téke foobar. A HTML-szabvány minden címkéhez definiálja az esetleges paramétereit és azok jelentését. Minden paraméternek saját neve van, így a paraméterek megadásá nak sorrendje tetszőleges. Maguk a HTML-dokumentumok az ISO 8859-Latin-l karakterkészletben íródnak, de escape sorozatok segítségével a csak ASCII-t támogató billentyűzeteken is hasz nálhatók speciális karakterek, mint pl. az é. A szabvány a speciális karakterek listáját is tartalmazza. Ezek escape sorozatainak mindegyike & jellel kezdődik és pontosveszszővel végződik, az például egy szóközt, az è egy é, míg az é egy é karaktert generál. Mivel a <, > és & karaktereknek speciális jelentésük van, eze ket csak az <, > illetve az & sorozatok segítségével lehet kifejezni. A fejrész legfontosabb eleme a cím, melyet a és címkék határolnak, de ezenkívül egyéb járulékos információk is szerepelhetnek itt. Maga a cím nem jele nik meg az oldalon, a böngészők leginkább az oldalt tartalmazó ablakot címkézik meg vele. Tekintsük most a 7.26. ábrán szemléltetett további szolgáltatásokat. Az ábra összes címkéje látható a 7.27. ábrán, kiegészítve további címkékkel. Címsorokat a címkékkel generálhatunk, ahol n egy 1 és 6 közé eső számot jelent. A
a legfon tosabb címsor, a
a legkevésbé fontos. Ezek után a böngészőre van bízva, hogy a címsorokat ténylegesen hogyan jeleníti meg. A kisebb számmal jelzett címsorok tipi kusan nagyobb és vastagabb betűtípussal jelennek meg, de a böngésző akár különböző színeket is rendelhet a különböző szintű címsorokhoz. A
címsorok jellemzően nagy, félkövér betűtípussal szerepelnek, alattuk és felettük legalább egy üres sorral. A
szintű címsorok ugyanakkor kisebb méretű betűtípust használnak, és kisebb he lyet is hagynak a címsor alatt és fölött.
680
SZÁMÍTÓGÉP-HÁLÓZATOK
Címke
Magyarázat
...
Azt deklarálja, hogy a weboldal HTML-ben íródott
...
Az oldal fejrészét határolja
...
A címet határozza meg (ez az oldalon nem jelenik meg)
...
Az oldal törzsét határolja
...
Egy n szintű címsort határol
...
A ...-ot félkövérré teszi
...
A ...-ot dőlt betűssé teszi
...
Az oldal közepére vízszintesen
...
Egy sorszám nélküli (pontozott) listát zárójelez
...
Egy számokból álló listát zárójelez
...
Egy sorszámozott vagy számokból álló lista egy tételét zárójelezi
Egy törés kikényszerítése az adott ponton
Bekezdés kezdete
Vízszintes vonal
Egy kép betöltése az adott ponton
...
Egy hiperhivatkozást definiál
7.27. ábra. Néhány szokásos HTML-címke. Némelyiknek további paraméterei is vannak A és címkék a félkövér (boldface) és dőlt betűs (italics) módba történő váltáshoz használatosak. Ha a böngésző nem képes megjeleníteni a félkövér vagy dőlt betűket, akkor valami más módot kell használnia a visszaadásukra, például mindket tőhöz más-más színt vagy esetleg inverz megjelenítést. A HTML különféle mechanizmusokat biztosít listák, sőt akár egymásba ágyazott listák létrehozására is. A listák kezdetét az
vagy , az egyes listaelemeket pe dig mindkét esetben a
címkék jelzik. Az
egy sorrend nélküli listát indít. Az egyes elemek előtt, melyeket a forrásban az
címke jelöl, pontok (•) jelennek meg. Ennek a mechanizmusnak egy másik változata az , ami sorszámozott listákat ké szít. Amikor ezt a címkét használják, az
elemeket a böngésző sorszámozza meg. Az eltérő kezdő- és végcímkéktől eltekintve az
és szintaxisa azonos, és eredményük is hasonló. A ,
és
címkék mind egy-egy határt jelölnek a szöveg egyes részei közt. A pontos formátumot az oldalhoz rendelt stíluslap (lásd később) határozza meg. A címke egy egyszerű sortörést kényszerít ki. A böngészők rendszerint nem szúrnak be üres sort a után. Ezzel ellentétben a
egy bekezdés kezdetét jelöli, amely például beszúrhat egy üres sort és esetleg némi behúzást is. (Elméletben a
szolgál arra, hogy egy bekezdés végét jelölje ki, de ezt ritkán használják. A legtöbb HTML-szerző nem is tudja, hogy ilyen létezik.) Végül, a egy törést kényszerít ki, és egy vízszintes vonalat húz keresztbe a képernyőn.
AZ ALKALMAZÁSI RÉTEG
681
A HTML lehetővé teszi, hogy a szöveg közé ábrákat is illesszünk egy weboldalon, Az címke mondja meg, hogy az oldalon az adott helyen egy képet kell megjes leníteni. A címkének számos paramétere lehet. Az src paraméter adja meg a kén URL-jét. A HTML-szabvány nem rendelkezik arról, hogy mely grafikus formátumod megengedettek. A gyakorlatban minden böngésző támogatja a GIF- és JPEG-állomás nyokat. A böngészők támogathatnak más formátumokat is, de ez a lehetőség kétélíj fegyver. Ha a felhasználó olyan böngészőhöz szokott, amely támogatja, mondjuk, a. BMP-állományokat, akkor esetleg ilyeneket fog rakni saját weboldalaira, és később meg fog lepődni, amikor a többi böngésző egyszerűen figyelmen kívül hagyja gyö nyörű műveit. Az további paraméterei az align, amely a képnek a szöveg alapvonalához viszonyított elhelyezkedését szabályozza {top - felette, middle - középen, bottom alatta), az alt, amely egy szöveget ad meg arra az esetre, ha a felhasználó letiltotta volna a képeket, és az ismap, ami azt jelzi, hogy az ábra egy aktív térkép (azaz rá lehet kattintani a részeire). Végül elérkeztünk a hiperhivatkozásokhoz, melyek az (anchor, horgony) és címkéket használják. Az -hez hasonlóan az -nak is számos paramétere van, többek közt a href (az URL) és a name (a hiperhivatkozás neve). Az és közötti szöveg megjelenítésre kerül. Ha rákattintunk, akkor egy új oldalra jutunk el. Ide egy ábrát is el lehet helyezni, ebben az esetben az ábrára való kattintás szintén aktiválja a hiperhivatkozást. Példának vegyük az alábbi HTML-részletet: A NASA honlapja
Amikor egy, a fenti részletet tartalmazó oldalt megjelenítenek, a képernyőn a követ kező fog feltűnni: A NASA honlapja Ha a felhasználó ezek után rákattint a szövegre, a böngésző azonnal letölti és megje leníti azt az oldalt, melynek URL-je http://www.nasa.gov. Második példánknak vegyük a következőt:
(b) 7.28. ábra. (a) Egy HTML-táblázat. (b) Ennek a táblázatnak egy lehetséges megjelenítése
AZ ALKALMAZÁSI RÉTEG
683
A HTML folyamatosan fejlődik. A HTML 1.0 és 2.0 verziókban még nem voltak táblázatok, csak a HTML 3.0-ban jelentek meg. Egy HTML-táblázat egy vagy több sorból áll, a sorok pedig egy vagy több cellából (cell). A cellák sok mindent tartal mazhatnak, például szöveget, számokat, ikonokat, fényképeket, sőt akár más tábláza tokat is. A cellákat egybe lehet vonni, így például egy címsor több oszlopot is átfog hat. Az oldal szerzőjének van némi beleszólása az elrendezésbe, beleértve az elhelye zést, a keret stílusát és a cellahatárolókat, de a táblázatok megjelenítésénél az utolsó szót a böngészők mondják ki. Egy HTML-táblázatdefiníció látható a 7.28.(a) ábrán. Ennek egy lehetséges vissza adását mutatja a 7.28.(b) ábra. Ez a táblázat csak párat mutat meg a HTML-táblázatok alapvető jellemzői közül. A táblázatok a
címkével kezdődnek. További in formáció is megadható a táblázat általános tulajdonságainak leírására. A
címke használható képaláírások megadására. A táblázatok sorai a
(Table Row, táblázatsor) címkével kezdődnek. Az egyes cellákat a
(Table Header, táblázat fejrésze) és a
(Table Data, táblázatadat) jelölik. Ez a megkülön böztetés lehetővé teszi, hogy a böngészők másképp jelenítsék meg a címsort, mint a többi sort, ahogyan azt a példánkban is láthattuk. A táblázatokban is használható számos attribútum. Megadható többek között a függőleges és vízszintes cellaigazítás, a cellán belüli igazítás, a szegélyek stílusa, a cellák csoportosítása, mértékegységek és még sok más. A HTML 4.0 további lehetőségeket tartalmaz. Ezek között van olyan, amely a hát rányos helyzetű felhasználók számára biztosít elérési lehetőséget, amely objektumbe ágyazást tesz lehetővé (ez az címke általánosítása úgy, hogy más objektumok is beágyazhatok legyenek az oldalakba), amely támogatja a szkripteket (megengedve a dinamikus tartalmat). További lehetőségek is vannak. Ha egy webhely elég bonyolult, és több oldalból áll, melyeket egyazon cég külön böző szerzői hoztak létre, akkor gyakran kívánatos az oldalak egységes kinézetének biztosítása. Ez a stíluslapok (style sheets) használatával oldható meg. Ebben az eset ben az egyes oldalak nem használnak fizikai stílusokat, mint például a félkövér vagy dőlt betű. Az oldalak szerzői ehelyett logikai stílusokat alkalmaznak, olyanokat, mint a (definíció), <em> (gyenge hangsúlyozás), <strong> (erős hangsúlyozás), és (programváltozók). Ezeket a logikai stílusokat egy stíluslapban határozzák meg, melyre az egyes oldalak elején hivatkoznak. Ezáltal minden oldalnak egységes lesz a stílusa, és ha a webmester úgy dönt, hogy a 14-es méretű, dőlt betűs, kék színű <strong> stílus helyett 18-as méretű, félkövér, rémes rózsaszínű <strong> stílust szeretne, akkor egyetlen definíció megváltoztatásával átalakíthatja az egész webhelyét. A stíluslapokat egy C program #include állományához hasonlíthatjuk: ha ott megváltoztatunk egy makródefiníciót, akkor az megváltozik az erre hivatkozó összes állományban is.
Űrlapok A HTML 1.0 alapvetően egyirányú volt. A felhasználók lehívhattak oldalakat a tarta lomszolgáltatóktól, de bonyolult volt a másik irányba információt visszaküldeni. Ahogy egyre több és több kereskedelmi szervezet kezdte el használni a Világhálót, a
684
SZÁMÍTÓGÉP-HÁLÓZATOK
kétirányú forgalom iránt nagy igény jelentkezett. Sok társaság akarta azt például, hogy képes legyen rendeléseket felvenni a termékeire a Világháló oldalain keresztül. A szoftvercégek szoftvert akartak terjeszteni a Világháló útján, és az ügyfelekkel elekt ronikusan akarták kitöltetni a regisztrációs kártyákat. A Világháló-keresést ajánló tár saságok pedig azt akarták, hogy ügyfeleik begépelhessék a keresési kulcsszavakat. Ezek a követelések vezettek oda, hogy a HTML 2.0-tól kezdve az űrlapokat (forms) is belevették a szabványba. Az űrlapok dobozokat vagy gombokat tartalmaz hatnak, amelyek lehetővé teszik a felhasználók számára, hogy információt írhassanak be, vagy a felkínált lehetó'ségek közül választhassanak, majd az információt visszaküldhessék az oldal tulajdonosának. Erre a célra az (bevitel) címkét használ ják. Ennek sokfajta paramétere van, amelyek meghatározzák a megjelenített doboz méretét, természetét és használatának módját. Ennek legközönségesebb formái a fel használó szövegét befogadó üres mezők, a kipipálható dobozok, az aktív térképek és a submit gombok. A 7.29. ábra példája ezen választékból mutat be párat. Kezdjük az űrlapok tárgyalását azzal, hogy végigmegyünk ezen a példán. Mint minden űrlapot, ezt is a címkék fogják közre. A címkébe nem zárt szöveg egyszerűen megjelenik. Minden szokásos címke (mint pl. a ) megengedett az űrlapon belül. Ezen az űrlapon háromfajta bemeneti dobozt használtunk. Az elsőfajta bemeneti doboz a „Név" szöveg után következik. A doboz 46 karakter hosszú, és a felhasználótól egy szöveget várunk bele, amelyet azután a customer vál tozóban tárolunk el későbbi feldolgozás céljából. A
címke arra utasítja a böngé szőt, hogy a következő szöveget és dobozokat a következő sorban helyezze el, még akkor is, ha lenne még hely az aktuális sorban. A
és más elrendezési címkék használatával az oldal szerzője szabályozhatja az űrlap kinézetét a képernyőn. Az űrlap következő sora a felhasználó utcájának nevét kérdezi, 40 oszlop szélesen, szintén külön sorban. Az ezután következő sor a városra, az államra és az országra kérdez rá. Itt nem használtunk
címkéket a mezők között, így a böngésző mindet egy sorban fogja megjeleníteni, ha elférnek. A böngésző szemében ez a bekezdés csak hat elemet tartalmaz: három karakterláncot és három dobozt váltakozva. Egymás után jeleníti meg ezeket, balról jobbra, mindannyiszor új sort kezdve, valahányszor az ak tuális sorba nem fér ki a következő elem. Elképzelhető tehát, hogy egy 1600 x 1200-as képernyőn mindhárom doboz és a hozzájuk tartozó karakterláncok is egy sorban fog nak megjelenni, míg egy 1024 x 768-as képernyőn esetleg két sorra oszlanak. A leg rosszabb esetben az „Ország" szó az egyik sor végén lesz, a hozzá tartozó doboz pedig a következő sor elején. A következő sor a hitelkártya számát és lejáratának dátumát kérdezi meg. A hitel kártyaszámokat csak megfelelő biztonsági intézkedések megtétele után lenne szabad átvinni az Interneten. Ezek közül néhányat a 8. fejezetben fogunk tárgyalni. A lejárat dátuma után új funkcióval találkozunk: a rádiógombokkal (radio buttons). Ezeket akkor használják, amikor két vagy több lehetőség között kell választani. Az elméleti modell itt egy autórádió volt, melynek fél tucat gombja van az állomások ki választására. A böngésző ezeket a dobozokat olyan formában jeleníti meg, amely le hetővé teszi a felhasználó számára, hogy kattintással (vagy a billentyűzet segítségével) kiválaszthassa azokat, vagy megszüntesse a kiválasztást. Ha az egyikre rákattintanak, az az ugyanabban a csoportban levő összes többit kikapcsolja. A vizuális megjelenítés
685
AZ ALKALMAZÁSI RÉTEG
a böngészőtől függ. A szerkentyű méretének megadására mi is két rádiógombot hasz náltunk. A két csoportot a name mezejükkel különböztetjük meg, nem pedig olyan statikus címkékkel, mint mondjuk a és a .
AWJ ÜGYFÉL MEGRENDELŐLAP
Ügyfél megrendelőlap
(a)
AWI ÜGYFÉL MEGRENDELŐLAP Név Város Utca
Házszám
Hitelkártyaszám Szerkentyű mérete
Lejárat | Nagy
Q Kicsi O
M/C
Lakás [ [ Q VisaO
Expressz küldönce el szállítás \_j
Rendelés elküldése Köszönjük, hogy megrendelt egy AWI szerkentyűt. A legjobb sze rkentyű, amit csak kapni lehet! (b)
7.29. ábra. (a) Egy megrendelőlap HTML-je. (b) A megformázott oldal
J
686
SZÁMÍTÓGÉP-HÁLÓZATOK
A value paramétereket a lenyomott rádiógomb jelzésére használják. Attól függően, hogy a felhasználó melyik hitelkártya-változatot választotta, a cc változó értéke vagy a „visacard", vagy a „mastercard" karakterláncra fog beállni. A két rádiógombkészlet után eljutottunk a szállítási lehetőségekhez, amelyet egy ellenőrző gomb, checkbox típusú négyzet jelképez. Ez lehet ki- vagy bekapcsolva. A rádiógomboktól eltérően, amelyeknél a halmazból pontosan egyet kell kiválasztani, minden checkbox típusú doboz ki- vagy bekapcsolt állapotban lehet, az összes többitől függetlenül. Például, amikor a felhasználó az Elektro-Pizza weboldaláról rendel piz zát, akkor választhat szardíniát és hagymát és ananászt (ha így szereti), de nem vá laszthat kis és közepes és nagy pizzát egyszerre. A pizzafeltéteket három külön check box típusú gomb jelképezné, míg a pizza mérete rádiógombok egy halmaza lenne. A rádiógombok némileg kényelmetlenek olyan, nagyon hosszú listák esetén, ame lyekből egy elemet kell kiválasztani. Ezért hozták létre a <select> és címkéket, amely címkék közötti választási lehetőségek felsorolása található, a rádiógombok sze mantikájával (hacsak nincs megadva a multiple - többszörös - paraméter, amelynél a szemantika megegyezik a kijelölhető dobozok szemantikájával). Néhány böngésző a <select> és a közé eső elemeket egy legördülő menüben ábrázolja. Eddig már az címke kétfajta beépített típusát is láttuk: a radio és checkbox típusokat. Sőt, tulajdonképpen már egy harmadikat is, a text-et (szöveg). Mivel ez a típus az alapértelmezés, nem bajlódtunk azzal, hogy a type - text paramétert is meg adjuk, de megtehettük volna. Két másik típus a password és a textarea. Egy password (jelszó) doboz ugyanolyan, mint egy text doboz, kivéve, hogy a begépelt karakterek nem jelennek meg. A textarea (szöveges terület) doboz megegyezik a text dobozzal, csak több sort is tartalmazhat. Visszatérve a 7.29. ábra példájához, most a submit gombbal kapcsolatos példával találkozunk. Amikor erre rákattintunk, az űrlapban levő felhasználói információ viszszakerül ahhoz a géphez, amely az űrlapot biztosította. Az összes többi típushoz ha sonlóan a submit is egy fenntartott szó, amelyet a böngésző megért. A value (érték) karakterlánc itt a gomb címkéje, és ez jelenik meg. Minden doboznak lehet értéke, de csak itt volt szükségünk erre a szolgáltatásra. A text dobozok esetében a value mező tartalma megjelenik az űrlappal együtt, de a felhasználó azt átszerkesztheti vagy kitö rölheti. A checkbox és radio dobozoknak szintén lehet kezdőértéket adni, ez egy checked nevű mezővel tehető meg (mivel a value csak a szöveget adja meg, de nem jelöl ki semmilyen előnyben részesített választási lehetőséget). Amikor a felhasználó a Rendelés elküldése gombra kattint, a böngésző egyetlen hosszú sorba csomagolja az összegyűlt információkat, és visszaküldi azt feldolgozásra a kiszolgálónak. A mezők elválasztására az & szolgál, a szóközt pedig a + jelképezi. Példánk űrlapjában ez a sor a 7.30. ábrán láthatóhoz hasonló lehet (itt azért törtük há rom részre, mert nem elég széles az oldal). Vasarlo=John+Doe&cim=100+Main+St.&varos==White+Plains& allam=NY&orszag=USA&kartyaszam=1234567890&lejarat=6/98&cc=mastercard& termek=olcso&expressz=be 7.30. ábra. A böngésző egy lehetséges válasza a kiszolgálónak a felhasználó által megadott információkkal
AZ ALKALMAZÁSI RÉTEG
687
Ezt a karakterláncot egyetlen sorként küldenék vissza a kiszolgálónak, és nem há romként. Ha egy jelölőnégyzet nincs kiválasztva, akkor kimarad a karakterláncból. A karakterlánc értelmezése a kiszolgálóra van bízva. Ennek lehetséges módjait a fejezet későbbi részében tárgyaljuk.
XML és XSL A HTML sem az űrlapokkal, sem azok nélkül nem ad semmilyen struktúrát a weboldalaknak, és a tartalmat is vegyíti a formázással. Az e-kereskedelem és egyéb alkalmazások elterjedésével azonban egyre nó' az igény a strukturált weboldalak, va lamint a tartalomnak a formázástól való elválasztása iránt. Egy olyan programnak pél dául, ami végigböngészi a Világhálót, hogy a legjobb áron találjon meg egy könyvet vagy CD-t, sok weboldalon kell megnéznie a keresett címet és az árat. HTML-ben íródott weboldalak esetén ez a program nehezen fogja kitalálni, hogy az oldalon hol van a cím, és hol az ár. A W3C épp ezért elkészítette a HTML továbbfejlesztését, hogy lehetővé tegye a weboldalak strukturálását az automatikus feldolgozhatóság érdekében. Erre a célra két új nyelvet fejlesztettek ki. Az első az XML (eXtensible Markup Language - kiter jeszthető jelölőnyelv), mely a webes tartalmat írja le strukturált formában, a második, az XSL (eXtensible Style Language - kiterjeszthető' stílusnyelv) pedig tartalomtól függetlenül írja le a formázást. Mindkét téma terjedelmes és bonyolult, rövid beveze tésünk tehát csak a felszínt fogja érinteni, de remélhetőleg elég lesz arra, hogy képet alkossunk a dolgok működéséről. Tekintsük példaként a 7.31. ábrán szereplő XML-dokumentumot. Ez egy „könyv lista" nevű szerkezetet határoz meg, ami történetesen könyvek listája. Minden könyv nek három mezője van: a cím, a szerző és a kiadás éve. Rendkívül egyszerű módon, ezen struktúráknak lehetnek ismétlődő mezőik (pl. több szerző), opcionális mezőik (pl. egy CD-ROM-melléklet) és alternatív mezőik (pl. egy könyvesbolt URL-je, ha a könyv kapható, vagy egy aukciós hely URL-je, ha már nem kapható). Példánkban mindhárom mező oszthatatlan entitás, de egyébként a mezők további részekre való osztása is megengedett. Például, a még aprólékosabb keresések és for mázások-érdekében a szerző mezőt a következőképp is megadhattuk volna: <szerzo> Andrew Tanenbaum
Minden mezőt almezőkre, majd al-almezőkre stb. oszthatunk, tetszőleges mélységig. A 7.31. ábrán látható állomány mindössze egy három könyvből álló listát ad meg. Arról semmit sem mond, hogy hogyan kell megjeleníteni a weboldalt a képernyőn. A formázási információ megadásához egy második állomány szükséges, a konyvlista.xsl, mely az XSL-definíciókat tartalmazza. Ez az állomány egy stíluslap, amely meg mondja, hogy hogyan kell megjeleníteni az oldalt. (A stíluslapoknak vannak alternatí-
688
SZÁMÍTÓGÉP-HÁLÓZATOK
Számítógép-hálózatok, 4. kiadás <szerzo> Andrew S. Tanenbaum
<ev> 2003 Korszerű operációs rendszerek, 2. kiadás <szerzo> Andrew S. Tanenbaum <ev> 2001 Strukturált számítógép-szervezés, 4. kiadás <szerzo> Andrew S. Tanenbaum <ev> 1999
7.31. ábra. Példa egy XML-ben íródott weboldalra váik is, mint például az XML HTML-be való átalakítása, de ezek az alternatívák túl mutatnak könyvünk keretein.) A 7.32. ábrán egy példa XSL-állomány található a 7.31. ábrán látható adatok for mázásához. Néhány szükséges deklaráció, többek közt az XSL-szabvány URL-jének megnevezése után az állomány címkéket tartalmaz, kezdve a és cím kékkel. Ezek egy weboldal kezdetét jelzik, mint általában. Ezt követi egy táblázatde finíció, benne a három oszlop fejlécével. Figyeljük meg, hogy a
címkék mellett itt már
címkék is vannak. Mi eddig nem töródtünk az ilyesmivel. Az XML- és az XSL-specifikáció azonban sokkal szigorúbb, mint a HTML-specifikáció. Az előb biek kimondják, hogy a szintaktikailag helytelen állományokat kötelező visszautasíta ni még akkor is, ha a böngésző ki tudja találni, mire gondolt a webtervező. Nem felel meg a szabványnak az olyan böngésző, ami elfogadja a szintaktikailag helytelen XML- vagy XSL-állományokat, és saját maga kijavítja a hibákat. Ennek megfelelően az ilyen böngészők a megfelelőségi teszteken is megbuknak. Az ugyanakkor engedé lyezett, hogy rámutassanak a hibára. Erre a kissé drákói szigorra azért volt szükség, hogy tegyünk valamit a jelenleg kiállított irdatlan mennyiségű hanyag weboldal ellen. Az alábbi utasítás egy C nyelvű for utasítással analóg: <xsl:for-each select="konyvlista/konyv">
7.32. ábra. Egy stíluslap XSL-ben Ennek hatására a böngésző a ciklus törzsét (melyet a zár) ismétel geti minden egyes könyvre. Minden ismétlés öt sort írat ki: a
címkét, a címet, a szerzőt, az évet, és végül a
címkét. A ciklus után kiírásra kerülnek a és a zárócímkék. A stíluslap értelmezésének eredménye ugyanaz lesz, mintha ma ga a weboldal tartalmazta volna ezt a táblázatot. Ebben a formában ugyanakkor a programok is elemezhetik az XML-állományt, és könnyen megtalálhatják például a 2000 után kiadott könyveket. Érdemes hangsúlyozni, hogy bár az XSL-állomány egy fajta ciklust tartalmazott, az XML-ben és XSL-ben íródott weboldalak továbbra is statikusak, hiszen egyszerűen csak az oldal megjelenítésére vonatkozó utasításokat adnak a böngészőnek, akárcsak a HTML-oldalak. Az XML és XSL használatához persze a böngészőnek meg is kell értenie ezeket a formátumokat, de a legtöbb böngé sző már rendelkezik ezzel a képességgel. Azt még nem tudni, hogy az XSL vajon át veszi-e a hagyományos stíluslapok szerepét. Megemlítjük, hogy a weboldalak tervezői az XML segítségével ún. definíciós ál lományokat is létrehozhatnak, melyek előre definiálják az oldalak szerkezetét. Ezen állományok felhasználásával összetett weboldalak is felépíthetők. Az XML és XSL sok más képessége mellett erről is bővebben olvashatunk a kiterjedt szakirodalomban, például (Livingstone, 2002; valamint Williamson, 2001) munkáiban.
690
SZÁMÍTÓGÉP-HÁLÓZATOK
Mielőtt befejeznénk az XML és az XSL tárgyalását, érdemes rámutatnunk a WWW konzorcium és a webtervezők közössége között zajló ideológiai vitára. A HTML eredeti célja a dokumentum szerkezetének, nem pedig a megjelenésének meg határozása volt. Például, a
Deborah fényképei
parancs arra utasítja a böngészőt, hogy emelje ki a címsort, de nem mond semmit a betűtípusról, a betűméretről vagy a színről. Ezek a böngészőre voltak bízva, hiszen az ismerte a képernyő tulajdonságait (pl. hogy hány képpontból áll). Sok webtervező azonban teljesen uralni akarta az oldalaik megjelenítését, ezért új címkéket adtak a HTML-hez, hogy befolyásolni lehessen a megjelenítést, mint például az alábbi cím kével: Deborah fényképei
Emellett lehetővé vált a képernyőterületen való elhelyezkedés pontos megadása is. Ezzel a megközelítéssel az a baj, hogy nem hordozható. Lehet, hogy egy oldal töké letesen jelenik meg abban a böngészőben, amelyikben kifejlesztették, de egy másik böngészőben, esetleg ugyanazon böngésző egy másik verziójában, vagy egy másik képernyőfelbontás mellett már teljesen összekuszálódik. Az XML egyik törekvése pont az volt, hogy visszatérjen az eredeti célhoz, és csak a dokumentum szerkezetét határozza meg, ne a kinézetét. Igen ám, de ott van az XSL is, a megjelenítés kezelésé re. Mindkét formátumot lehet helytelenül használni, és hogy erre lesz is példa, arra mérget vehetünk. Az XML-t nem csak a weboldalak leírására lehet használni. Egyre szélesebb kör ben használják a különböző alkalmazások közti kommunikáció nyelveként is. Konk réten a SOAP (Simple Object Access Protocol - egyszerű objektumelérési proto koll) az, ami lehetőséget ad az alkalmazások közti távoli eljáráshívások nyelv- és rendszerfüggetlen lebonyolítására. Az ügyfél XML-üzenetként állítja össze a kérést, és a HTTP-protokoll segítségével (lásd lejjebb) küldi el a kiszolgálónak. A kiszolgáló a választ szintén XML-üzenetként küldi vissza. Ily módon a különböző platformokon lévő alkalmazások is kommunikálhatnak egymással.
XHTML - a kiterjesztett HTML A HTML folyamatosan fejlődik, hogy eleget tegyen a legújabb elvárásoknak is. Az iparban sokan érzik úgy, hogy a jövőben a webképes eszközök többsége nem PC, ha nem vezeték nélküli, kézi, PDA jellegű eszköz lesz. Ezek az eszközök csak korlátozott memória felett rendelkeznek, így nem futtathatnak nagy böngészőket tele heurisztiká val, hogy valahogy kezelni tudják a szintaktikailag helytelen weboldalakat. Ezért a HTML 4 után a következő lépés egy olyan nyelv lesz, ami Nagyon Válogatós. Ezt nem is HTML 5-nek nevezik, hanem XHTML-nek (eXtended Hypertext Markup Language - kiterjesztett hipertext jelölőnyelv), mert alapjában véve nem más, mint a HTML 4, csak XML-ben újrafogalmazva. Ezalatt azt értjük, hogy az olyan címkék-
AZ ALKALMAZÁSI RÉTEG
691
nek, mint például a
, nincs valódi jelentése. A HTML 4-nek megfelelő hatás el éréséhez szükség van egy XSL-definícióra is. Az XHTML a Web új szabványa, és minden új weboldal létrehozásánál ez használandó, hogy a lehető legjobb hordozható ságot érjük el az egyes platformok és böngészők között. Az XHTML és a HTML 4 között hat nagyobb, és számos kisebb különbség van. Tekintsük át a nagyobbakat! Először is, az XHTML-oldalaknak és -böngészőknek szigorúan meg kell felelniük a szabványnak. Elég a silány weboldalakból! Ezt a tulaj donság az XML-től származik. Másodszor, minden címkének és attribútumnak kisbetűsnek kell lennie. Az olyan címkék, mint a , már nem érvényesek az XHTML-ben. A címkéket ehelyett kötelező így használni: . Hasonlóképp, az se megen gedett, mert nagybetűs attribútumot tartalmaz. Harmadszor, ki kell rakni a záró címkéket is, még a esetén is. Azoknál a cím kéknél, melyeknek nincs természetes záró címkéjük, mint például a , és , egy perjelnek kell megelőznie a záró „>"-t, például így:
Negyedszer, az attribútumokat idézőjelekkel kell körülvenni. Az alábbi címke pél dául többé már nem megengedett:
Az 500-at is idézőjelek közé kell írni, akárcsak a JPEG-állomány nevét, még akkor is, ha az 500 egy puszta szám. Ötödször, a címkéket helyesen kell egymásba ágyazni. Eddig a helyes egymásba ágyazás nem volt követelmény, feltéve, hogy az elért végeredmény megfelelő volt. Megengedett volt például az alábbi:
Képek a nyaralásról
XHTML-ben ez már nem szabályos. A címkéket mindig a megnyitásukhoz képest fordított sorrendben kell lezárni. Hatodszor, minden dokumentumnak meg kell határoznia a maga típusát. Erre töb bek között a 7.32. ábrán láthattunk példát. A www.w3.org az összes különbséget tár gyalja, kicsiket és nagyokat egyaránt.
7.3.3.
Dinamikus vvebdokumentumok
Idáig a 6.6. ábra modelljét használtuk: az ügyfél elküld egy állománynevet a kiszol gálónak, mire az visszaküldi az állományt. A kezdeti időkben a Weben valójában minden tartalom ilyen statikus volt (puszta állományok). Az utóbbi időben azonban egyre több tartalom lett dinamikus, azaz igény szerint előállított, nem pedig lemezen tárolt. A tartalom előállítása történhet a kiszolgáló és az ügyfél okialán is. Nézzük most meg sorban mindkét esetet!
692
SZÁMÍTÓGÉP-HÁLÓZATOK
Weboldalak dinamikus előállítása a kiszolgáló oldalán Annak érdekében, hogy lássuk, miért van szükség tartalom előállítására a kiszolgáló oldalán, tekintsük a korábban leírt űrlapok használatát. Amikor a felhasználó kitölt egy űrlapot, és rákattint az Elküld gombra, akkor a kiszolgáló egy üzenetet kap, mely tartalmazza az űrlapot, és a felhasználó által kitöltött mezőket. Ez az üzenet termé szetesen nem egy visszaadandó állomány neve. Ilyenkor az üzenetet egy programnak vagy egy szkriptnek kell átadni feldolgozásra. Ez a feldolgozás általában azt is jelenti, hogy a felhasználó által megadott információ felhasználásával kikeresnek egy rekor dot a kiszolgáló lemezén lévő adatbázisból, és egy egyéni HTML-oldalt állítanak elő, amit visszaküldenek az ügyfélnek. Egy e-kereskedelmi alkalmazásban például, amikor a felhasználó a TOVÁBB A PÉNZTÁRHOZ gombra kattint, a böngésző elküldi a bevá sárlókocsi tartalmát leíró sutit, de ekkor még a kiszolgáló oldalán is meg kell hívni valamilyen programot vagy szkriptet, hogy feldolgozza a sutit, és előállítson egy HTML-oldalt válaszként. A HTML-oldal megjeleníthet egy űrlapot, ami részletezi a bevásárlókocsi tartalmát, és kiírhatja a felhasználó utoljára megadott postázási címét, hogy a felhasználó ellenőrizze azt, valamint döntsön a fizetés módjáról. A HTMLűrlapok adatainak feldolgozásához szükséges lépéseket a 7.33. ábra szemlélteti. Az űrlapok és más interaktív weboldalak kezelését hagyományosan a CGI (Common Gateway Interface - általános átjáró interfész) nevű rendszer végzi. Ez egy szabványos interfész, mely lehetővé teszi, hogy a webszerverek olyan kiszolgáló ol dali programokkal és szkriptekkel beszéljenek, melyek valamilyen bemenetet fogad nak el (pl. űrlapokból), és válaszul HTML-oldalakat állítanak elő. Ezeket a kiszolgáló oldali szkripteket általában Perl nyelven írják, mert Perl-szkripteket könnyebben és gyorsabban lehet írni, mint programokat (főleg, ha valaki tud Periben programozni). Ezek a szkriptek szokás szerint egy cgi-bin nevű könyvtárban helyezkednek el; ez az URL-ben is látszik. Néha a Perl helyett egy másik szkriptnyelvet, a Pythont használják. A CGI általános működését szemléltető példaként tekintsük azt az esetet, amikor az Igazán Nagyszerű Termékek Vállalat egy termékéhez nem adnak regisztrációs kártyát a garanciához, hanem a vásárlónak kell magát on-line regisztrálnia a www.intv.com címen. Ezen az oldalon van ilyen hiperhivatkozás:
Felhasználó /
1. 2. 3. 4.
Böngésző
Kiszolgáló
CGIszkript
Adatbázis a háttértáron
2
A felhasználó kitölti az űrlapot Az űrlapot visszaküldik Átadják a CG l-nek A CGI lekérdezi az adatbázist
5. 6. 7. 8.
Megvan a rekord A CGI felépíti az oldalt Az oldalt visszaadják Az oldal megjelenik
7.33. ábra. A HTML-űrlapon található adatok feldolgozásának lépései
AZ ALKALMAZÁSI RÉTEG
693
Kattintson ide a terméke regisztrálásához
Ez a hivatkozás mondjuk a következő Perl-szkriptre mutat: www.intv.com/cgibin/reg.perl. Ha ezt a szkriptet paraméterek nélkül hívják meg, akkor a regisztrációs űrlapot tartalmazó HTML-oldalt küldi vissza. Amikor a felhasználó kitölti az űrlapot, és az Elküld gombra kattint, egy üzenetet küldenek vissza ennek a szkriptnek, amely tartalmazza a beírt értékeket a 7.30. ábrán látható stílusban megadva. A Perl-szkript ezután feldolgozza a paramétereket, készít egy bejegyzést az adatbázisban az új fel használó számára, majd visszaküld egy HTML-oldalt, ami megadja a regisztrációs számot és az ügyfélszolgálat telefonszámát is. Ez az űrlapok kezelésének általános módja, noha nem ez az egyetlen lehetőség. Számos könyv is íródott a CGI-szkriptek készítéséről és a Periben való programozásról. Ilyenek például (Hanegan, 2001; Lash, 2002; valamint Meltzer és Michalski, 2001) művei. Nem csak CGI-szkriptek segítségével lehet a kiszolgáló oldalán dinamikus tartal mat előállítani. Egy másik gyakori eljárás az, hogy a HTML-oldalakba ágyaznak ki sebb szkripteket, melyeket maga a kiszolgáló futtat az oldal előállítása során. A PHP (PHP: Hypertext Preprocessor - hipertext előfeldolgozó) egy népszerű nyelv, mely megfelelő az ilyen szkriptek megírásához. Használatához a kiszolgálónak értenie kell a PHP-t (csakúgy, mint ahogy a böngészőnek is értenie kell az XML-t, hogy értel mezni tudja az XML-ben íródott weboldalakat). A kiszolgálók általában elvárják, hogy a PHP-t tartalmazó weboldalak kiterjesztése html vagy htm helyett php legyen. A 7.34. ábra egy apró PHP-szkriptet szemléltet. Ennek minden olyan kiszolgálón működnie kell, ahol a PHP telepítve van. A címkében lévő PHPszkriptet leszámítva az ábra csak hagyományos HTML-t tartalmaz. Ez a címke egy olyan weboldal-részletet állít elő, ami megadja, hogy mit tud a szkript az azt meghívó böngészőről. A böngészők ugyanis a kérésekkel (és az esetleges sütikkel) együtt némi információt is elküldenek magukról, ez az információ pedig a HTTP_USER_AGENT nevű változóba kerül. Ha az ábrán látható forrást berakjuk a test.php nevű állományba az ABCD társaság WWW könyvtárában, akkor a www.abcd.com/test.php URL egy olyan weboldalt fog előállítani, ami megadja, hogy a felhasználó milyen böngészőt, milyen nyelvet és milyen operációs rendszert használ.
Ezt tudom rólad
'
7.34. ábra. Példa HTML-oldalra beágyazott PHP-vel A PHP különösen alkalmas űrlapok kezelésére, és egyszerűbb is használni, mint a CGI-szkripteket. A 7.35. ábra az űrlapok PHP-val történő kezelésére mutat egy példát. Az ábrán egy szokványos HTML-oldal látható, benne egy űrlappal. Az egyetlen szo-
694
SZÁMÍTÓGÉP-HÁLÓZATOK
katlan dolog az első sorban van, ami megadja, hogy az action.php állományt kell meghívni a paraméterek kezeléséhez, miután a felhasználó kitöltötte és beküldte az űrlapot. Az oldal két szövegdobozt jelenít meg: az egyik a nevet, a másik az életkort kéri. Miután ezeket kitöltötték, és az űrlapot beküldték, a kiszolgáló elemzi a 7.30. áb rához hasonló visszaküldött karakterláncot, és a nevet a name, a kort pedig az age változóba teszi. Ezután válaszként megkezdi a 7.35.(b) ábrán látható action.php állo mány feldolgozását. Az állomány feldolgozása során a PHP-parancsok végrehajtásra kerülnek. Ha a felhasználó azt írta a dobozokba, hogy „Barbara" és „24", akkor a visszaküldött HTML-oldal a 7.35.(c) ábrán látható lesz. Az űrlapok kezelése tehát rendkívül egyszerű lesz a PHP használatával. Annak ellenére, hogy a PHP-t könnyű használni, valójában egy hathatós progra mozási nyelv, mely a Web és a kiszolgáló oldali adatbázis közötti kapcsolatot hivatott megteremteni. Vannak benne változók, karakterláncok, tömbök, tartalmazza a C-ben megtalálható vezérlési szerkezetek többségét, és ezenfelül egy, a puszta printf-né\ sokkal hatékonyabb l/O-t. A PHP forráskódja nyílt és szabadon hozzáférhető'. A PHP-t kifejezetten úgy tervezték, hogy jól működjön az Apache-csal, mely a vi
(a)
Válasz:
Hello . Jóslat: jövőre éves leszel.
(b)
Válasz:
Hello Barbara. Jóslat: jövőre 25 éves leszel. (c) 7.35. ábra. (a) Egy űrlapot tartalmazó weboldal, (b) PHP-szkript az űrlap adatainak kezelésére, (c) A PHP-szkript kimenete, ha a bemenet „Barbara", illetve „24" volt
AZ ALKALMAZÁSI RÉTEG
695
lág legelterjedtebb webszervere, és szintén nyílt forráskódú. A PHP-ről többet is meg tudhatunk (Valade, 2002) munkájából. Már két különböző' módot is láttunk dinamikus HTML-oldalak előállítására: a CGI-szkripteket és a beágyazott PHP-t. Van egy harmadik eljárás is, a JSP (Java Server Pages - Java-kiszolgálóoldalak), ami hasonlít a PHP-hez, azzal a különbség gel, hogy a dinamikus rész PHP helyett a Java programozási nyelven íródik. Azoknak az oldalaknak, melyek ezt az eljárást használják, jsp a kiterjesztésük. A negyedik módszer, az ASP (Active Server Pages - aktív kiszolgálóoldalak) nem más, mint a PHP vagy a JSP Microsoft-féle változata. Ez a Microsoft saját szkriptnyelvét, a Visual Basic Scriptet használja a dinamikus tartalom előállítására. Az ilyen módszerrel ké szült oldalak kiterjesztése asp. A PHP, JSP és ASP közti választás általában inkább politikai (nyílt forrás, Sun vagy Microsoft), mint technológiai kérdés, mivel a három nyelv nagyjából egyenértékű. A tartalom menet közbeni előállítására szolgáló technológiák összességére néha dinamikus HTML (dynamic HTML) néven is hivatkoznak.
Weboldalak dinamikus eló'állítása az ügyfél oldalán A CGI-, PHP-, JSP- és ASP-szkriptek megoldják az űrlapok kezelésének problémáját, és lehetővé teszik a kiszolgáló adatbázisainak elérését is. Mindannyian képesek az űrlapokból beérkező információk fogadására, információk kikeresésére egy vagy több adatbázisból, valamint az eredményeket tartalmazó HTML-oldalak előállítására. Egyi kük sem képes azonban egérműveletekre reagálni vagy a felhasználókkal közvetlenül érintkezni. Ezekre a célokra olyan szkripteket kell beágyazni a HTML-oldalakba, melyeket nem a kiszolgáló, hanem az ügyfél oldalán hajtanak végre. A HTML 4.0-tól kezdődően lehetővé vált az ilyen szkriptek használata, a <script> címke segítségével. A legnépszerűbb ügyféloldali szkriptnyelv a JavaScript, melyet most röviden be is mutatunk. A JavaScript olyan szkriptnyelv, melyet nagyon távolról inspirált a Java programo zási nyelv néhány ötlete. Ettől még semmiképpen nem azonos a Javával. A többi szkriptnyelvhez hasonlóan ez is nagyon magas szintű nyelv. Egyetlen JavaScriptsorral megoldható például az, hogy földobjunk egy dialógusablakot, megvárjuk a szö veges bevitelt, majd az eredményül kapott karakterláncot egy változóban tároljuk. Az ilyen magas szintű képességek miatt a JavaScript ideális az interaktív weboldalak lét rehozására. Másrészt viszont a nyelv nem szabványos, és gyorsabban mutálódik, mint a röntgengépbe szorult muslica. Emiatt rendkívül nehéz olyan JavaScript-programokat írni, melyek minden platformon működnek, de egy nap talán ez a helyzet is rendeződik. A 7.36. ábra egy JavaScript-programra mutat példát. A 7.35.(a) ábrához hasonlóan itt is egy űrlap jelenik meg, ami megkérdezi a nevet és az életkort, majd megjósolja, hogy hány éves lesz az adott személy jövőre. Az oldal törzse majdnem ugyanaz, mint a PHP-példában. A legfontosabb különbség itt az Elküld gomb deklarációjában és a benne levő hozzárendelési utasításban van. Ez a hozzárendelési utasítás mondja meg a böngészőnek, hogy gombnyomásra hívja meg a válasz szkriptet, és adja át neki az űr lapot, mint paramétert.
696
SZÁMÍTÓGÉP-HÁLÓZATOK
<script language="javascript" type="text/javascript"> function valasz(test_form) { var személy = tesMorm.nev.value; var evek = eval(test_form.kor.value) + 1; document.open(); document.writeln(" "); document.writeln("Helló" + személy + ". "); document.writeln("Jóslat: jövőre" + evek + "éves leszel."); document.writeln(" "); document.closeQ; }
7.36. ábra. A JavaScript használata egy űrlap feldolgozására Ami teljesen új, az a válasz nevű JavaScript-függvény deklarációja a HTMLállomány fejrészében, ahol rendszerint csak a cím, háttérszín stb. található. Ez a függ vény kiolvassa a nev mező értékét az űrlapból, és karakterláncként tárolja a személy nevű változóban. Kiolvassa még a kor mező értékét is, átalakítja egésszé az eval függ vény használatával, hozzáad egyet, és az eredményt tárolja az evek változóban. Aztán megnyit egy dokumentumot a kimenet számára, elvégez négy kiíratást a writeln eljá rással, majd lezárja a dokumentumot. A dokumentum egy HTML-állomány lesz, amint az a benne lévő különféle HTML-címkékből is látszik. Végül a böngésző meg jeleníti a dokumentumot a képernyőn. Fontos megértenünk, hogy a 7.35. és a 7.36. ábra forrásai hasonlók ugyan, de telje sen máshogy kerülnek feldolgozásra. A 7.35. ábra esetében, miután a felhasználó rá kattintott az Elküld gombra, a böngésző összegyűjti az információt egy hosszú karak terláncba a 7.30. ábra módjára, és elküldi annak a kiszolgálónak, amelyik az oldalt küldte. A kiszolgáló látja a PHP-állomány nevét, és futtatja azt. A PHP-szkript egy új HTML-oldalt állít elő, és ezt az oldalt küldik vissza a böngészőnek megjelenítésre. A 7.36. ábra esetébén az Elküld gomb megnyomása után a böngésző értelmezi az adott oldalon található JavaScript-függvényt. Mindez ott helyben, a böngészőn belül kerül végrehajtásra; a kiszolgálóval nem veszik fel a kapcsolatot. Ennek köszönhetően az eredmény gyakorlatilag azonnal megjelenik, míg a PHP esetében akár több másodperc
697
AZ ALKALMAZÁSI RÉTEG
Böngésző
Kiszolgáló
/
1 L '4
í•VA- / £*
2
>
3
^
Böngésző Felhasználó / 1
Felhasználó
l '2 ^
PHP-modul
(a)
Kiszolgáló
-w^rK AH)
A
JavaScript
(b)
7.37. ábra. (a) Kiszolgálóoldali szkript PHP-vel. (b) Ügyféloldali szkript JavaScripttel is eltelhet, mire a HTML-eredmény megérkezik az ügyfélhez. A kiszolgáló- és az ügyféloldali szkriptek használata közti különbséget a 7.37. ábra szemlélteti, az ezekkel járó lépésekkel együtt. A számozott lépések mindkét esetben azután kezdődnek, hogy az űrlap megjelent. Az első lépés a felhasználói bevitel elfogadásából áll. Ezután jön a bevitel feldolgozása, ami eltérő a két esetben. Ez az eltérés nem azt jelenti, hogy a JavaScript jobb, mint a PHP, hiszen a kettőnek egészen más a felhasználási területe. A PHP (és ebből adódóan a JSP és az ASP is) akkor használatos, amikor egy távoli adatbázissal kell érintkezni. A JavaScriptet ezzel szemben akkor használják, amikor a számítógép előtt ülő felhasználóval kell érintkez ni. Mindazonáltal lehetséges (és szokásos is) az olyan HTML-oldalak készítése, me <script language="javascript" type="text/javascript"> funclion response(test_form) { function factorial(n) {if (n == 0) return 1; else return n * factorial(n - 1);} var r = eval(test_form.number.value); // r = a beírt argumentum document.myform.mytext.value = "Itt vannak az eredményekAn"; for (var i = 1; i <= r; i++) //Egy sor kiírása 1-től Ng document.myform.mytext.value += (i + "! = " + factorial(i) + "\n"; }
7.38. ábra. JavaScript-program faktoriális számítására és kiíratására
698
SZÁMÍTÓGÉP-HÁLÓZATOK
lyek mind a PHP-t, mind a JavaScriptet is használják, de ezek ekkor természetesen nem végezhetik ugyanazt a munkát, vagy nem birtokolhatják ugyanazt a gombot. A JavaScript teljes értékű programozási nyelv, a C vagy Java összes eró'sségével. Vannak benne változók, karakterláncok, tömbök, objektumok, függvények, és meg található az összes szokásos vezérlési szerkezet. Ezenkívül számos olyan szolgáltatást is nyújt, ami kifejezetten a weboldalak készítőinek hasznos, többek közt lehetó'vé teszi az ablakok és keretek kezelését, a sütik elküldését és visszanyerését, az űrlapok és a hiperhivatkozások kezelését. A 7.38. ábra egy olyan JavaScript-programra mutat pél dát, mely egy rekurzív függvényt használ. A JavaScript képes a képernyő objektumai fölött történő egérmozgások követésére is. Sok JavaScriptes weboldalra jellemző, hogy ha az egérmutatót elvisszük valami lyen szöveg vagy kép fölött, akkor valami történik, például megváltozik egy kép vagy hirtelen előbukkan egy menü. Az ilyen működést egyszerű megvalósítani JavaScript segítségével, ez pedig eleven weboldalakhoz vezet. A 7.39. ábra erre mutat példát. Nem csak a JavaScript segítségével kaphatunk erősen interaktív weboldalakat. Egy másik népszerű eljárás a kisalkalmazások (applets) használata. Ezek apró Java programok, melyeket egy virtuális számítógép, a JVM (Java Virtual Machine - Ja va virtuális gép) számára gépi utasításokra fordítottak. A HTML-oldalakba (az címkék közé) ágyazható kisalkalmazasokat a JVM-mel ellátott böngészők értelmezik. Mivel a Java-kisalkalmazásokat nem közvetlenül futtatják, ha nem értelmezik, a Java-értelmező meggátolhatja, hogy Rossz Dolgokat tegyenek. Legalábbis elméletben. A gyakorlatban a kisalkalmazások írói a kihasználható hibák szinte végtelen sorát találták meg a Java I/O könyvtárakban.
<script language="javascripf" type="text/javascript"> if (Idocument.myurl) document.myurl = new Array(); document.myurl[0] = "http://www.cs.vu.nl/~ast/im/kitten.jpg"; document.myurl[1] = "http://www.cs.vu.nl/~ast/im/puppy.jpg"; document.myurl[2] = "http://www.cs.vu.nl/~ast/im/bunny.jpg"; function pop(m) { var urx = "http://www.cs.vu.nl/~ast/im/cat.jpg"; popupwin = window.open(document.myurl[m], "mywind", "width=250, height=250"); }
A Microsoft válaszul a Sun Java kisalkalmazásaira létrehozta az ActiveX vezérlő ket (ActiveX controls) tartalmazó weboldalakat. A vezérlők olyan programok, me lyeket a Pentium gépi nyelvére fordítottak le, és tisztán hardveresen futtatnak. Emiatt sokkal gyorsabbak és rugalmasabbak is, mint az értelmezett Java-kisalkalmazások, mert megtehetnek mindent, amit egy program megtehet. Amikor az Internet Explorer egy ActiveX vezérlőt talál egy weboldalon, akkor letölti, ellenőrzi az azonosságát, és futtatja. Az idegen programok letöltése és futtatása azonban biztonsági kérdéseket vet fel, melyeket a 8. fejezetben válaszolunk meg. Mivel szinte minden böngésző képes mind a Java-programok, mind a JavaScript értelmezésére, az a tervező, aki egy erősen interaktív weboldalt szeretne elkészíteni, legalább két módszer közül választhat, sőt, ha a különböző platformok közti hordoz hatóság nem szempont, akkor ehhez még az ActiveX is hozzájön. Általános szabály ként elmondhatjuk, hogy a JavaScript-programokat egyszerűbb megírni, a Java kisalkalmazások gyorsabban hajtódnak végre, az ActiveX vezérlők pedig a leggyor sabban tudnak. Továbbá minden böngésző pontosan ugyanazt a JVM-et implemen tálja, de nincs két olyan böngésző, mely ugyanazt a JavaScript-verziót implementálná, ezért a Java-kisalkalmazások hordozhatóbbak, mint a JavaScript-programok. A JavaScriptről többet is megtudhatunk a témában íródott számos terjedelmes (olykor 1000 oldalnál is hosszabb) könyvből, mint például (Easttom, 2001; Harris, 2001; va lamint McFedries, 2001) műveiből. Mielőtt elhagynánk a dinamikus webtartalom témakörét, foglaljuk össze röviden, hogy mi mindent érintettünk eddig. Teljes weboldalakat is elő lehet állítani menet közben különféle szkriptekkel a kiszolgáló oldalán. A böngésző megkapja és egysze rűen megjeleníti ezeket, mint a szokványos weboldalakat. A szkripteket meg lehet írni Periben, PHP-ben, JSP-ben vagy ASP-ben, amint azt a 7.40. ábra mutatja. A dinamikus tartalmat az ügyfél oldalán is elő lehet állítani. A weboldalakat XMLben is meg lehet írni, majd ezután HTML-be lehet alakítani egy XSL-állomány alap ján. A JavaScript-programok tetszőleges számításokat elvégezhetnek. Végül, plug-inek és segédalkalmazások segítségével a tartalmat különböző formákban is meg lehet jeleníteni. XSLértelmező-
Az ügyfél gépe Böngésző
A kiszolgáló gépe Kiszolgáló
XMLértelmező" HTMLértelmező JavaScript- Plug-in értelmező 7.40. ábra. A tartalom előállításának és megjelenítésének különböző módjai
700
7.3.4.
SZÁMÍTÓGÉP-HÁLÓZATOK
HTTP - a hipertext átviteli protokoll
A HTTP (HyperText Transfer Protocol - hipertext átviteli protokoll) a Világháló (Web) általános átviteli protokollja. A protokoll meghatározza, hogy az ügyfelek mi lyen üzeneteket küldhetnek a kiszolgálóknak, és hogy ezekre milyen válaszokat kap hatnak. Minden interakció egy ASCII-kérésból és egy ezt követő' RFC 822 MIMEszerű válaszból áll. A protokollt az RFC 2616 definiálja; ezen előírásoknak eleget kell tennie minden ügyfélnek és kiszolgálónak. Ebben a szakaszban szemügyre vesszük a HTTP fontosabb tulajdonságait. Kapcsolatok A böngészők általában úgy veszik fel a kapcsolatot a kiszolgálókkal, hogy egy TCPösszeköttetést építenek ki a kiszolgáló gépének 80-as portjával, bár a szabvány ezt formálisan nem követeli meg. A TCP használatának előnye az, hogy sem a böngésző nek, sem a kiszolgálónak nem kell aggódnia az elveszett, megkettőzött vagy hosszú üzenetek, illetve a nyugták miatt. Az összes ilyen kérdésről a TCP-implementáció gondoskodik. A HTTP 1.0-ban az összeköttetés kiépítése után egyetlen kérést küldtek el, amire egyetlen válasz érkezett. Ezután a TCP-összeköttetést lebontották. Abban a világban, amikor egy tipikus weboldal még kizárólag szövegből állt, ez még helyénvaló is volt. Pár év múlva azonban egy átlagos weboldal már számos ikont, képet és egyéb vizuális nyalánkságot tartalmazott, és nagyon költségessé tette a működést, hogy minden egyes ikon átviteléhez külön TCP-összeköttetést kellett kiépíteni. Ez a megfigyelés vezetett a HTTP 1.l-hez, ami már támogatja a tartós kapcsola tokat (persistent connections). Ezáltal lehetővé vált, hogy kiépítsünk egy TCP összeköttetést, elküldjünk egy kérést, megkapjuk a választ, majd pedig további kéré seket küldjünk és válaszokat kapjunk. Azáltal, hogy több kérés esetén nem kell külön TCP-kiépítés és lebontás, az egyes kérésekre jutó, a TCP által okozott relatív többlet terhelés sokkal kisebb lesz. A kéréseket akár csővezeték (pipeline) módszerrel is lehet küldeni, azaz már azelőtt el lehet küldeni a 2-es kérést, hogy az 1 -es kérésre megérke zett volna a válasz. Eljárások Bár a HTTP-t a Weben való használatra tervezték, szándékosan a szükségesnél általá nosabbra készítették, szem előtt tartva az eljövendő objektumorientált alkalmazásokat. A protokoll ebből kifolyólag olyan műveleteket, más néven eljárásokat (method) is támogat, melyek nem pusztán egy weboldal elkérésére irányulnak. Ez az általánosság tette lehetővé a SOAP létrejöttét is. Minden kérés egy- vagy többsornyi ASCIIszövegből áll, ahol az első sor első szava a kért eljárás neve. A beépített eljárásokat a 7.41. ábra sorolja fel. Amikor általános objektumokhoz kell hozzáférni, az objektumra jellemző eljárások is elérhetők lesznek. A nevek érzékenyek a kisbetű/nagybetű kü lönbségre, így a GET egy legális eljárás, de a get nem az.
AZ ALKALMAZÁSI RÉTEG
701
Leírás
Eljárás GET
Kérés egy weboldal olvasására
HEAD
Kérés egy weboldal fejrészének olvasására
PUT
Kérés egy weboldal tárolására
POST
Egy megnevezett erőforráshoz (pl. weboldalhoz) való hozzáfűzés
DELETE
A weboldal eltávolítása
TRACE
A bejövő kérés visszaküldése
CONNECT
Fenntartva későbbi használatra
OPTIONS
Bizonyos opciók lekérdezése
7.41. ábra. A beépített HTTP-kérés-eljárások A GET eljárás arra kéri a kiszolgálót, hogy küldje el az oldalt (ami alatt a legáltalá nosabb esetben objektumot értünk, de a gyakorlatban ez rendszerint csak egy állo mány). Az oldal megfelelő módon MIME-ben van kódolva. A webszerverekhez inté zett kérések túlnyomó többsége GET. A GET szokásos alakja: GET állománynév HTTP/1.1
ahol az állománynév a letöltendő erőforrás (állomány) neve, és 1.1 a használt proto koll verziója. A HEAD eljárás csak az üzenet fejrészét kéri, a tényleges oldal nélkül. Ez az eljá rás használható arra, hogy megszerezzük egy oldal utolsó módosítási idejét, hogy in formációt gyűjtsünk indexelési célokra, vagy egyszerűen ellenőrizzük egy URL érvé nyességét. A PUT eljárás a GET fordítottja: az oldal olvasása helyett írja azt. Ez az eljárás te szi lehetővé weboldalak gyűjteményének felépítését a távoli kiszolgálókon. A kérés törzse tartalmazza az oldalt. Ez lehet MIMÉ szerint kódolt; ebben az esetben a PUT-ot követő sorok tartalmazhatják a Tartalom típusa és a hitelesítési fejrészeket annak bi zonyítására, hogy a hívónak valóban van engedélye a kívánt feladat végrehajtására. A PUT-hoz némileg hasonló a POST eljárás. Ez is egy URL-t hordoz, de a megle vő adat felülírása helyett az új adatot „hozzáadja" ahhoz valamilyen általános érte lemben. Az ilyen értelmű hozzáadásra lehet példa egy üzenet postázása egy hírcso portba, vagy egy állomány hozzáadása egy hirdetőtábla-rendszerhez. A gyakorlatban sem a PUT-ot, sem a POST-ot nem nagyon használják. A DELETE azt teszi, amit várunk: törli az oldalt. Akárcsak a PUT-nál, itt is nagy szerepet játszik a hitelesítés és az engedélyezés. Arra azonban nincs garancia, hogy a DELETE sikerülni fog, mert még ha a távoli HTTP-kiszolgáló hajlandó is törölni az oldalt, az azt tartalmazó állománynak olyan attribútuma lehet, amely megtiltja a ki szolgáló számára a módosítást vagy eltávolítást. A TRACE eljárás a hibakeresést szolgálja. Arra utasítja a kiszolgálót, hogy küldje vissza a kérést. Ez akkor hasznos, amikor a kéréseket nem megfelelő' módon dolgozzák fel, és az ügyfél tudni akarja, hogy ténylegesen milyen kérést kapott meg a kiszolgáló.
702 Kód
SZÁMÍTÓGÉP-HÁLÓZATOK
Jelentés
Példák
Információ
100 = a kiszolgáló jóváhagyja az ügyfél kérését
2xx
Siker
200 = sikeres kérés; 204 = nincs tartalom
3xx
Átirányítás
301 = az oldal elköltözött;
1xx
304 = a gyorstárban tárolt oldal még érvényes 4xx
Ügyfél hibája
403 = tiltott oldal; 404 = az oldal nem található
5xx
Kiszolgáló hibája
500 = belső hiba a kiszolgálóban; 503 = próbálkozzon újra később
7.42. ábra. A válasz állapotkódjának csoportjai A CONNECT eljárást jelenleg nem használják, jövőbeli használatra van fenntartva. Az OPTIONS eljárás lehetővé teszi, hogy az ügyfél lekérdezze a kiszolgáló vagy egy konkrét állomány tulajdonságait. Minden kérésre érkezik egy válasz, ami egy állapotsorból, és esetleg további in formációkból (pl. egy weboldal része vagy egésze) áll. Az állapotsor tartalmazza a há romjegyű állapotkódot, ami megmondja, hogy a kérést teljesítették-e, és ha nem, miért nem. Az első számjegy öt nagy csoportra osztja a válaszokat, ahogy azt a 7.42. ábra mutatja. Az lxx kódokat ritkán használják a gyakorlatban. A 2xx kódok azt jelentik, hogy a kérést sikeresen kezelték, és érkezik is vissza a tartalom (ha van). A 3xx kódok arra utalnak, hogy az ügyfélnek máshol kell keresgélnie vagy egy másik URL-lel vagy a saját gyorstárjában (ezt később tárgyaljuk). A 4xx kódok azt jelentik, hogy a kérést az ügyfél hibája miatt nem lehet teljesíteni, mert pl. érvénytelen a kérés, vagy nem létezik az oldal. Végül, az 5xx kódok azt jelzik, hogy magának a kiszolgálónak van valamilyen gondja vagy egy szoftverhiba vagy az ideiglenes túlterhelés miatt.
Üzenetfejrészek A kérés sora (pl. a GET eljárást tartalmazó sor) után további információkat tartalmazó sorok következhetnek. Ezeket a kérés fejrészének (requesí headers) nevezzük. Az ilyen információk az eljáráshívások paramétereihez hasonlatosak. A válaszoknak szintén lehetnek válaszfejrészei (response headers). Egyes fejrészeket akár mindkét irányban is lehet használni. A legfontosabb fejrészeket a 7.43. ábra mutatja be. A Felhasználói-ügynök (User-Agent) fejrész lehetővé teszi, hogy az ügyfél közölje a kiszolgálóval böngészőjének és operációs rendszerének tulajdonságait, és egyéb jellemzőket. A 7.34. ábrán már láthattuk, hogy a kiszolgálónak varázslatos módon volt ilyen információja, és kérésre elő tudta azt állítani egy PHP-szkriptben. Ezt a fej részt tehát arra használja az ügyfél, hogy információkat adjon át a kiszolgálónak. A négy Elfogadható (Accept) fejrész azt mondja meg a kiszolgálónak, hogy az ügyfél mit hajlandó elfogadni, amennyiben csak egy korlátozott választék elfogadásá ra van módja. Az első típus azt adja meg, hogy az ügyfél milyen MIME-típusokat lát szívesen (pl. text/html). A második megadja a karakterkészletet (pl. ISO-8859-5 vagy Unicode-1-1). A harmadik a tömörítési eljárásokkal foglalkozik (pl. gzip). A negyedik
703
AZ ALKALMAZÁSI RÉTEG
egy természetes nyelvet jelöl (pl. spanyol). Ha a kiszolgáló több oldal közül is vá laszthat, akkor ezen információk felhasználásával azt adhatja vissza, amit az ügyfél keres. Ha nem képes teljesíteni a kérést, akkor egy hibakóddal tér vissza, és a kérés meghiúsul. A Hoszt (Hőst) fejrész a kiszolgálót nevezi meg; ezt az URL-ból veszik ki. Ez a fejrész kötelező. Azért használják, mert némely IP-címhez több DNS-név is tartozik, és a kiszolgálónak valahogy el kell döntenie, hogy melyik hosztnak adja tovább a kérést. Az, Engedélyezés (Authorization) fejrészre a védett oldalak esetén van szükség. Ek kor az ügyfélnek esetleg bizonyítania kell, hogy jogosult megnézni az oldalt - erre szolgál ez a fejrész. Fejrész
Tartalom
Típus
Felhasználói ügynök
Kérés
Információ a böngészőről és annak platformjáról
Elfogadható
Kérés
Az ügyfél által kezelhető oldalak típusa
Elfogadható karakterkészlet
Kérés
Az ügyfél által elfogadható karakterkészletek
Elfogadható kódolás
Kérés
Az ügyfél által kezelhető oldalkódolási típusok
Elfogadható-nyelv
Kérés
Az ügyfél által kezelhető természetes nyelvek
Hoszt
Kérés
A kiszolgáló DNS-neve
Engedélyezés
Kérés
Az ügyfél igazolásainak listája
Süti
Kérés
Visszaküld egy előzőleg kapott sutit a kiszolgálónak
Dátum
Mindkettő
Az üzenet elküldésének dátuma és ideje
Átállás
Mindkettő
Az a protokoll, amire a kiszolgáló váltani szeretne
Kiszolgáló
Válasz
Információ a kiszolgálóról
Tartalom-kódolás
Válasz
Hogyan van kódolva a tartalom (pl. gzip)
Tartalom-nyelv
Válasz
Az oldalon használt természetes nyelv
Tartalom-hossz
Válasz
Az oldal hossza bájtokban
Tartalom-típus
Válasz
Az oldal MlME-típusa
Utoljára módosítva
Válasz
Az oldal utolsó változtatásának dátuma és ideje
Hely
Válasz
Utasítás az ügyfélnek, hogy küldje a kérését máshova
Elfogadható tartományok
Válasz
A kiszolgáló elfogadja a bájftartományokra vonatkozó kéréseket
Süti-beállítás
Válasz
A kiszolgáló azt akarja, hogy az ügyfél tároljon egy sutit
7.43. ábra. Néhány HTTP-üzenetfejrész
704
SZÁMÍTÓGÉP-HÁLÓZATOK
Bár a sütikkel nem az RFC 2616, hanem az RFC 2109 foglalkozik, ezeknek is ju tott két fejrész. A Süti (Cookie) fejrész segítségével az ügyfelek visszaküldhetnek a kiszolgálónak egy olyan sutit, mely előzőleg a kiszolgáló körzetének valamelyik gé pétől érkezett. A Dátum (Date) fejrész mindkét irányban használható, és az üzenet elküldésének dátumát és idejét tartalmazza. Az Átállás (Upgrade) arra szolgál, hogy egyszerűbbé tegye a HTTP-protokoll egy jö vőbeli (esetlegesen inkompatibilis) verziójára való átállást. Ez lehetővé teszi, hogy az ügyfél bejelentse, mit képes kezelni, és hogy a kiszolgáló is kimondja, mit használ. Ezzel elérkeztünk azokhoz a fejrészekhez, melyeket kizárólag a kiszolgáló használ a kérésekre adott válaszokban. Az első, a Kiszolgáló (Server) lehetővé teszi, hogy a kiszolgáló bemutatkozzon, és elmondja pár tulajdonságát, ha akarja. A következő négy, „Tartalom-" (Content) kezdetű fejrész segítségével a kiszolgáló megadhatja az éppen elküldött oldal jellemzőit. Az Utoljára-módosítva (Last-modified) fejrész megmondja, hogy mikor módosítot ták utoljára az oldalt. Ez a fejrész fontos szerepet játszik a gyorstárak kezelésében. A Hely (Location) fejrészt a kiszolgáló arra használja, hogy közölje az ügyféllel: próbálkozzon egy másik URL-lel. Ez akkor hasznos, ha az oldal elköltözött, vagy ha több URL is mutat ugyanarra az oldalra (esetleg különböző kiszolgálókon). Használ ják még azok a vállalatok is, melyeknek van egy központi weboldaluk a com körzet ben, de onnan az ügyfeleket átirányítják a nemzeti vagy regionális oldalra az IP-címük vagy a preferált nyelvük alapján. Ha egy oldal nagyon nagy méretű, akkor egy kisebb ügyfél esetleg nem akarja megkapni egyszerre az egészet. Egyes kiszolgálók bájttartományokra vonatkozó kéré seket is elfogadnak, így az oldalt több kisebb egységben is le lehet tölteni. Az Elfo gadható-tartományok (Accept-Ranges) fejrész azt jelenti be, hogy a kiszolgáló hajlan dó ilyen jellegű részleges kéréseket kezelni. A kiszolgálók a második sütifejrész, a Süti-beállítás (Set-Cookie) útján küldik el sütijeiket az ügyfeleknek. Az ügyfélnek el kell mentenie a sutit, és az ezt követő kéré sekben vissza kell küldenie a kiszolgálónak. Példa a HTTP használatára A HTTP egy ASCII-protokoll, ezért meglehetősen egyszerűen lehet egy terminálról (nem pedig böngészőből) személyesen és közvetlenül a webszervérrel beszélni. Ehhez nem kell más, csak egy TCP-összeköttetés a kiszolgáló 80-as portjával. Javasoljuk, hogy az Olvasó személyesen is próbálja ki ezt a forgatókönyvet (lehetőleg egy UNIX rendszerről, mert egyes más rendszerek nem adják vissza a kapcsolat állapotát). A kö vetkező parancssorozat elég is lesz: telnet www.ietf.org 80 >log GET/rfc.HTML HTTP/1.1 Hőst: www.ietf.org
close
AZ ALKALMAZÁSI RÉTEG
705
Ez a parancssorozat egy telnet (azaz TCP) összeköttetést kezdeményez az IETF webszerverének 80-as portjával a www.ietf.org címen. A kapcsolat eredményét a log állományba irányítjuk át, későbbi tanulmányozás céljából. Ezután következik a GET parancs, ami megnevezi az állományt és a protokollt. A következő sor a kötelező Hoszt fejrész. Az üres sorra szintén szükség van: ez jelzi a kiszolgálónak, hogy nincs több kérésfejrész. A close parancs arra utasítja a telnet programot, hogy bontsa le az összeköttetést. A log állományt bármely szerkesztővel megtekinthetjük. Az elejének a 7.44. ábra tartalmához hasonlónak kell lennie, hacsak az IETF meg nem változtatta az oldalt mostanában. Az első három sort a telnet program írja ki, nem a távoli hely. A HTTP 1.1 -gyei kez dődő sor az IETF válasza, miszerint hajlandó a HTTP 1.1 nyelven beszélni velünk. Ezt követi egy csomó fejrész, majd a tartalom. Az összes fejrészt ismerjük már, kivéve az ETag-et, ami egy egyedi oldalazonosító a gyorstárak számára, és az X-Pad-et, ami nem szabványos, és valószínűleg valamilyen hibás böngésző számára szükséges praktika.
Trying 4.17.168.6... Connected to www.ietf.org. Escape character is ']'• HTTP/1.1 200 OK Date: Wed, 08 May 2002 22:54:22 GMT ETag: "2a79d-c8b-39bce48d" Accept-Ranges: bytes Content-Length: 3211 Content-Type: text/html X-Pad: avoid browser bug IETF RFC Page <script language="javascript"> function url() { var x = document.forml .number.value if (x.length == 1) {x = "000" + x } if (x.length == 2) {x = "00" + x } if (x.length == 3) {x = "0" + x } document.forml .action = 7rfc/ríc" + x + ".txt" document.forml .submit }
7.44. ábra. A www.ietf.org/rfc.html oldal kimenetének eleje
706 7.3.5.
SZÁMÍTÓGÉP-HÁLÓZATOK
Teljesítménynövelés
A Web népszerűsége kis híján a vesztévé is vált. A kiszolgálók, routerek és vonalak gyakran túlterheltek. A WWW-t sokan már Világméretű Várakozásként (World Wide Wait) kezdik emlegetni. A vég nélküli késedelmek miatt a kutatók különféle módsze reket fejlesztettek ki a teljesítmény növelésére. Most hármat vizsgálunk meg ezek közül: a tárgyorsítást, a kiszolgálók többszörözését és a tartalomszolgáltató hálózatokat.
Tárgyorsítás A teljesítmény fokozásának viszonylag egyszerű módja az, hogy a kért oldalakat eltá roljuk arra az esetre, ha megint szükség lenne rájuk. Ez a módszer különösen haté kony a sokat látogatott oldalak esetében, mint például a www.yahoo.com vagy a www.cnn.com. Az oldalak későbbi felhasználás céljából történő tárolását tárgyorsí tásnak (caching) nevezzük. A szokásos eljárás szerint egy helyettes (proxy) nevű folyamat kezeli a gyorstárat (cache). A tárgyorsítás használatához a böngészőt be le het állítani úgy, hogy minden kérést a helyetteshez intézzen az oldal tényleges kiszol gálója helyett. Ha a helyettes rendelkezik az oldallal, akkor azonnal visszatér vele. Ha nem, akkor letölti az oldalt a kiszolgálóról, berakja a tárba későbbi használatra, és visszaadja annak az ügyfélnek is, akitől a kérés származott. A tárgyorsítás két fontos kérdése a következő: 1. Ki végezze a tárgyorsítást? 2. Mennyi ideig legyenek az oldalak a gyorstárban? Az első kérdésre több válasz is adható. Helyettesek gyakran futnak az egyes PC-ken is; ezek gyorsan meg tudják keresni az előzőkben meglátogatott oldalakat. Egy válla lati LAN-on a helyettes sokszor egy olyan gép, melyen a LAN összes többi gépe osz tozik, így ha egy felhasználó megnéz egy bizonyos oldalt, majd ugyanazon LAN egy másik felhasználója is meg szeretné nézni ugyanazt az oldalt, akkor azt le lehet tölteni a helyettes gyorstárából. Sok internetszolgáltató is futtat helyetteseket, hogy felgyor sítsa az elérést előfizetői számára. Mindezen gyorstárak gyakran egyszerre működnek, azaz a kérés először a helyi helyetteshez kerül. Ha itt nem sikerül teljesíteni, akkor a helyi helyettes megkérdezi a LAN helyettesét. Ha ez sem jár sikerrel, akkor a LAN helyettese a szolgáltató helyettesénél próbálkozik. Ez utóbbinak már mindenképp si kerül teljesíteni a kérést, vagy a helyi gyorstárból, vagy egy magasabb szintű tárból, vagy pedig magától a kiszolgálótól. A több, sorban egymás után következő gyorstárat magában foglaló séma neve hierarchikus tárgyorsítás (hierarchical caching). A 7.45. ábra ennek egy lehetséges megvalósítását szemlélteti. Hogy mennyi ideig legyenek az oldalak a gyorstárban, az már kicsit fogósabb kér dés. Egyes oldalak egyáltalán nem valók a tárba. Egy olyan oldal például, mely az 50 legaktívabb részvény árait tartalmazza, minden másodpercben változik. Ha ezt berak nánk a gyorstárba, akkor az innen másolatot kapó ügyfél elévült (stale) adatokhoz
707
AZ ALKALMAZÁSI RÉTEG
Helyettes
Ügyfél gépe
Internet
Ügyféloldali LAN
Helyettes
Az internetszolgáltató LAN-ja
.7.45. ábra. Hierarchikus tárgyorsítás három helyettessel
jutna. Másfelől viszont, ha a tőzsdei kereskedés már véget ért aznapra, akkor az oldal még órákig vagy napokig érvényes marad, míg a következő kereskedési nap el nem kez dődik. Ennélfogva az oldalak gyorstárban való tárolhatósága idővel erősen változhat. El kell döntenünk tehát, hogy mikor rakjunk ki egy oldalt a tárból. Ennek a döntés nek az a kulcskérdése, hogy a felhasználó milyen fokú évültséget hajlandó elfogadni. (Mivel az oldalak tárolása a háttértáron folyik, az elfoglalt hely kérdése nemigen je lent gondot.) Ha a helyettes hamar kidobja az oldalakat, akkor ritkán fog elévült ol dallal visszatérni, de nem is lesz túl hatékony (vagyis alacsony lesz a találati aránya). Ha viszont túl sokáig tartja meg az oldalakat, akkor magas találati arányt érhet el, de ennek az lesz az ára, hogy gyakran fog elévült oldalakkal visszatérni. Kétfajta megközelítés lehetséges a probléma kezelésére. Az első egy heurisztika segítségével igyekszik kitalálni, hogy mennyi ideig tartsa meg az egyes oldalakat. Ez esetben a benntartási időt az Utoljára-módosítva fejrész alapján szokták megválaszta ni (lásd a 7.43. ábrát). Ha az oldalt egy órája módosították, akkor egy óráig fogják tá rolni a gyorstárban. Ha egy éve módosították, akkor nyilván nagyon stabil oldal (mondjuk, a görög és római mitológia isteneinek listája), következésképp egy évre el lehet tárolni azzal az ésszerű feltételezéssel, hogy ezalatt nem fog változni. Ez a heu risztika többnyire jól működik a gyakorlatban, bár időről időre elévült oldalakat is szolgáltat. A másik megközelítés költségesebb, de kiküszöböli az elévült oldalak lehetőségét azáltal, hogy kihasználja az RFC 2616-nak a gyorstárak kezelésére vonatkozó külön leges funkcióit. Ezen funkciók közül az egyik leghasznosabb a Ha-változott-azóta (IfModified-Since) kérésfejrész, amit a helyettes küldhet a kiszolgálónak. Ez megadja a helyettes által kért oldalt, és azt az időt, amikor a tárolt oldalt utoljára módosították (az Utoljára-módosítva fejrész alapján). Ha az oldal azóta nem változott, a kiszolgáló egy rövid Nem módosult (Not Modified) üzenetet küld vissza (304-es állapotkód a 7.42. ábrában), ami arra utasítja a helyettest, hogy használja tovább a tárolt oldalt. Ha az oldal azóta megváltozott, akkor visszaküldik magát az új oldalt. Ennél az eljárásnál ugyan mindig szükség van egy kérés- és egy válaszüzenetre, de a válaszüzenet nagyon rövid lesz, ha a tárban lévő példány még mindig érvényes. A két megközelítés könnyen ötvözhető is. Ekkor az oldal letöltését követő AT idő ben a helyettes mindig a tárolt példányt adja vissza az ügyfeleknek; bizonyos idő el telte után pedig a Ha-változott-azóta üzenetek segítségével ellenőrzi az oldal frisses ségét. AT értékét állandóra választva a dolognak valamilyen heurisztikát ad attól füg gően, hogy az oldal milyen régen volt utoljára módosítva.
708
SZÁMÍTÓGÉP-HÁLÓZATOK
Dinamikus (pl. PHP-szkript által generált) tartalommal rendelkező weboldalak so ha nem gyorsíthatók így, mivel paramétereik változhatnak. Ezen és más esetek keze lésére létezik egy általános eljárás, amely szerint a kiszolgálónak utasítania kell az út vonal mentén lévő összes helyettest, egészen az ügyfélig visszamenően, hogy ne használják az adott oldalt ismét frissességének ellenőrzése nélkül. Ezt az eljárást egyébként bármely, várhatóan gyorsan változó oldal esetében is lehet használni. Az RFC 2616 még számos egyéb gyorstár-vezérlő algoritmust is definiál ezeken kívül. A teljesítmény növelésének újabb eszköze a proaktív tárgyorsítás. Ha egy helyettes letölt egy oldalt egy kiszolgálóról, akkor egyúttal megvizsgálhatja azt, hogy vannak-e rajta hiperhivatkozások. Ha vannak, akkor máris elküldheti a kéréseket a fontosabb kiszolgálóknak, hogy előre betöltse a tárba a hivatkozott oldalakat, hátha szükség lesz rájuk. Ez a módszer csökkentheti az egymást követő kérések elérési idejét, ugyanak kor el is áraszthatja a kommunikációs vonalakat olyan oldalakkal, melyekre sosem lesz szükség. Nyilvánvaló, hogy a webes tárgyorsítás kérdése messze nem triviális, ezért sokat beszélhetnénk még róla. Valójában egész könyveket is írtak róla, például (Rabinovich és Spatschek, 2002; valamint Wessels, 2001). Számunkra azonban ideje továbblépni a következő témánkra.
Kiszolgálók többszörözése A tárgyorsítás az ügyfél oldalán gondoskodik a teljesítmény növeléséről, de emellett léteznek kiszolgálóoldali módszerek is. A kiszolgálók a leggyakrabban azt a megkö zelítést használják a teljesítmény fokozására, hogy tartalmukat több, egymástól távol elhelyezkedő helyen is megismétlik. Ezt a módszert tükrözésnek (mirroring) is ne vezik. A tükrözés egyik tipikus esete az, amikor egy vállalat központi weboldalán van né hány hivatkozással ellátott kép, mondjuk a vállalat keleti, nyugati, északi és déli regi onális weboldalaira. A felhasználó ekkor a hozzá legközelebb esőre kattint, hogy el jusson az adott kiszolgálóhoz. Ettől kezdve minden kérés ehhez a kiválasztott kiszol gálóhoz érkezik. A tükrözött webhelyek általában teljesen statikusak. A vállalatnak csak azt kell el döntenie, hogy hová akarja elhelyezni a tükörkiszolgálókat, aztán minden régióban felállít egy kiszolgálót, és mindenhová többé-kevésbé ugyanazt a tartalmat viszi fel (esetleg kihagyja a hómarókat a miami webhelyről, a strandlepedőket pedig az anchorage-i helyről). Az oldalválaszték hónapokig vagy akár évekig is változatlan maradhat. Sajnos a Webnek van egy hirtelen tömeg (flash crowds) nevű jelensége, amikor is egy addig ismeretlen, nem látogatott, holtágat képző oldal hirtelen az ismert világegye tem középpontjává válik. A floridai kormányhivatal weboldala, a www.dos.state.fl.us, például egészen 2000. november 6-ig békésen közölte Florida állam kormányülései nek jegyzőkönyveit, valamint az útmutatásokat arra vonatkozóan, hogy hogyan lehet valakiből Floridában közjegyző. 2000. november 7-én azonban, amikor az amerikai elnökválasztás kérdése egy maroknyi floridai megye pár ezer vitatott szavazatán múlt,
AZ ALKALMAZÁSI RÉTEG
709
ez az oldal bekerült a világ öt legfontosabb oldala közé. Mondani sem kell, hogy nem bírta ezt a terhelést, és majd' megszakadt az erőfeszítésektől. Mindebből az következik, hogy ha egy weboldal hirtelen drámai forgalomnöveke dést észlel, akkor valamilyen módon lehetővé kell tenni számára azt, hogy automati kusan klónoztathassa magát több helyen, ahogy az igények megkívánják. Az ilyen helyek aztán addig működnek, amíg a vihar el nem múlik; ezután pedig többségüket vagy akár az összest megszüntetik. Ehhez az adott webhelynek előre meg kell álla podnia egy céggel, melynek sokfelé vannak kiszolgálóhelyei, hogy igény szerint ké szítsen neki másolatokat, cserébe pedig fizetnek neki az aktuálisan igénybe vett kapa citás után. Ennél is rugalmasabb stratégia az, ha a dinamikus másolatokat oldalanként készítik el, attól függően, hogy honnan származik a forgalom. (Pierre és mások, 2001; vala mint Pierre és mások, 2002) számolnak be az ilyen irányú kutatásokról.
Tartalomközvetítő hálózatok A kapitalizmus csodája az, hogy valaki még azt is kitalálta, hogy hogyan lehet pénzt csinálni a Világméretű Várakozásból. Valahogy így: a CDN- (Content Delivery Networks - tartalomszállító hálózatok) vállalatok megkeresik a tartalomszolgáltató kat (zenei oldalakat, újságokat és minden olyan szolgáltatót, aki a tartalmát könnyen és gyorsan szeretné hozzáférhetővé tenni), és felajánlják nekik, hogy tartalmukat - bi zonyos díj ellenében - hatékonyan eljuttatják a végfelhasználóhoz. Miután megkötöt ték a szerződést, a tartalom tulajdonosa átadja a CDN-nek a webhelyének tartalmát előfeldolgozásra (ezt rögtön tárgyaljuk), majd azt követően terjesztésre. A CDN ezután megkeres sok internetszolgáltatót, és megkéri őket, hogy jó pénzért engedélyezzék neki egy értékes tartalommal megtömött, távolról felügyelt kiszolgáló elhelyezését a LAN-jukon. A szolgáltatónak ez nemcsak bevételi forrás, mert ezáltal az előfizetői kitűnő válaszidővel érhetik el a CDN tartalmát, a szolgáltató tehát ver senyelőnyre is szert tesz azokkal szemben, akik nem fogadták el a CDN-től az ingyen pénzt. Ilyen feltételek mellett a CDN-nel való szerződés nem lehet kérdéses egy internetszolgáltató számára. Nem csoda, hogy a legnagyobb CDN-ek máris több mint 10 000 kiszolgálót telepítettek szerte a világon. Ha a tartalmat világszerte több ezer helyen megismétlik, akkor nyilvánvalóan re mek lehetőség nyílik a teljesítmény növelésére. Persze ahhoz, hogy ez működjön, az ügyfél kérését valahogy a legközelebbi CDN-kiszolgálóhoz kell átirányítani, lehetőleg egy olyanhoz, amelyik az ügyfél internetszolgáltatójánál van felállítva. Ennek az át irányításnak ráadásul úgy kell működnie, hogy ne kelljen módosítani sem a DNS-t, sem a megszokott internet-infrastruktúra bármely más részét. Következzék tehát a legnagyobb CDN, az Akamai némileg egyszerűsített leírása. Az egész folyamat ott kezdődik, hogy a tartalomszolgáltató átadja a CDN-nek a webhelyét. A CDN ezután minden oldalt keresztülvisz egy előfeldolgozón, amely módosítja az URL-eket az oldalakon. A stratégia mögött az az elgondolás húzódik meg, hogy a tartalomszolgáltató webhelye sok apró oldalból áll (csak HTML-szöveggel), de ezek az oldalak gyakran hivatkoznak nagy állományokra^ például képekre,
710
SZÁMÍTÓGÉP-HÁLÓZATOK
hangra, mozgóképekre. A módosított HTML-oldalakat ezután is a tartalomszolgáltató kiszolgálóján tárolják, és onnan a megszokott módon lehet letölteni azokat; csak a ké pek, a hang és a mozgóképek kerülnek a CDN kiszolgálóira. A séma tényleges működésének szemléltetésére vegyük a Bundás Videó webolda lát a 7.46.(a) ábrán. Az előfeldolgozás után ez a 7.46.(b) ábra alakját ölti, és felkerül a Bundás Videó kiszolgálójára a www.bundasvideo.com/index.html címen. Amikor a felhasználó begépeli a www.bundasvideo.com URL-t, a DNS megadja a Bundás Videó weboldalának IP-címét, hogy a központi (HTML) oldalt a megszokott módon le lehessen tölteni. Ha valamelyik hiperhivatkozásra rákattintanak, a böngésző' kikeresteti a DNS-sel a cdn-server.com címét. Ezután elküld egy HTTP-kérést erre az IP-címre, és egy MPEG-állományt vár vissza. Az azonban nem jön, mert a cdn-server.com nem szolgáltat semmilyen tartalmat. Ez ugyanis a CDN hamis HTTP-kiszolgálója, és annyit tesz, hogy megvizsgálja az állomány és a kiszolgáló nevét, hogy kitalálja, melyik tartalomszolgáltató melyik ol dalára van szükség. Megnézi még a bejövő kérés IP-címét is, és kikeresi egy adatbá zisból, hogy nagyjából merre lehet a felhasználó. Ezen információk birtokában meg határozza, hogy a CDN melyik kiszolgálója tudja a felhasználónak a legjobb szolgál tatást biztosítani. A döntés nem könnyű, hiszen a földrajzilag legközelebbi kiszolgáló nem biztos, hogy a hálózat topológiájában is a legközelebb van, a hálózati topológiá-
Helyettes CDN-0420.com 1. A www.bundasvideo.com kikeresése 2. Bundásék IP-címe visszaküldve 3. HTML-oldal elkérése a Bundástól 4. Visszakapott HTML-oldal 5. Kattintás után a cdn-server.com kikeresése
cdn-server (hamis HTTP)
-S
6. A cdn-server IP-címe visszaküldve 7. A medvek.mpg állomány elkérése a cdn-server-től 8. Az ügyfelet átirányítják a CDN-0420.com-ra 9. medvek.mpg elkérése 10. A gyorstárból megérkezik a medvek.mpg
7.47. ábra. Egy URL felkeresésének lépései CDN használatával
ban legközelebb levő pedig nagyon elfoglalt is lehet abban a pillanatban. A döntés meghozatala után a cdn-server.com visszaküld egy választ 30l-es állapotkóddal és egy Hely fejrésszel, ami megadja az ügyfélhez legközelebb eső CDN-kiszolgálón lévő állomány URL-jét. Tegyük fel, hogy a példánkban ez az URL a www.CDN0420.com/bundasvideo/medvek.mpg. A böngésző ezt követően a szokásos módon dol gozza fel az URL-t, és megkapja a tényleges MPEG-állományt. Az ehhez szükséges lépéseket a 7.47. ábra szemlélteti. Az első lépésben kikeresik a www.bundasvideo.com IP-címét. Ezután a HTML-oldal letölthető és megjeleníthető a szokásos módon. Az oldalon három hiperhivatkozás található a cdn-server-re [lásd a 7.46.(b) ábrát]. Amikor kiválasztják mondjuk az elsőt, akkor kikeresik ennek a DNScímét (5. lépés), és visszaadják azt (6. lépés). Amikor a medvek.mpeg-ve, vonatkozó kérést elküldik a cdn-server-nek (7. lépés), akkor az ügyfél azt az utasítást kapja, hogy menjen inkább a CDN-0420.com címre (8. lépés). Amikor ezt végül megteszi (9. lé pés), megkapja az állományt a helyettes gyorstárából. Az egész mechanizmust a 8. lé pés működteti, amikor is a hamis HTTP-kiszolgáló átirányítja az ügyfelet a hozzá kö zel lévő CDN-helyetteshez. Az a CDN-kiszolgáló, ahová az ügyfelet átirányítják, rendszerint egy helyettes, melynek nagy gyorstára van, benne a legfontosabb tartalommal. Ha pedig valaki egy olyan állományt kér, ami nincs meg a gyorstárban, akkor azt letöltik az eredeti kiszol gálóról, és későbbi felhasználásra berakják a gyorstárba. A tartalom, kiszolgálója tehát csak egy helyettes, és nem egy teljes másolat, ezáltal a CDN-nek lehetősége nyílik a
712
SZÁMÍTÓGÉP-HÁLÓZATOK
tárterület, az eló'feldolgozási idó' és más különböző' teljesítményparaméterek közötti kompromisszum megtalálására. A tartalomközvetítő hálózatokat bővebben tárgyalják (Hull, 2002; valamint Rabinovich és Spatscheck, 2002) művei.
7.3.6.
A vezeték nélküli Web
Manapság figyelemre méltó érdeklődés övezi a webet vezeték nélküli úton elérni ké pes kicsi, hordozható eszközöket. Valójában már meg is történek az első, bizonytalan lépések ebben az irányban. Nem kétséges, hogy ez a terület sokat fog változni az el következő években, de addig is érdemes megvizsgálni a vezeték nélküli Web jelenlegi elgondolásait, hogy lássuk, hol vagyunk most, és merre tarthatunk a jövőben. Vizsgá latunk középpontjában a piacon megjelent első két vezeték nélküli webes rendszer áll: a WAP és az i-mód.
WAP - a vezeték nélküli alkalmazások protokollja Az Internet és a mobiltelefonok mindennapossá válása után nem telt el sok idő, mire valakinek az az ötlete támadt, hogy ötvözni kellene a kettőt egy olyan mobiltelefon ban, melynek beépített képernyőjén vezeték nélkül is elérhető az e-mail és a Web. Ebben az esetben ez a „valaki" egy konzorcium volt, melyet eredetileg a Nokia, az Ericsson, a Motorola és a phone.com (régebben Unwired Planet) vezetett, mára pedig már több száz taggal büszkélkedhet. A rendszer neve WAP (Wireless Application Protocol - vezeték nélküli alkalmazások protokollja). Egy WAP-készülék lehet egy kibővített mobiltelefon, egy PDA vagy egy hangát viteli képességekkel nem rendelkező hordozható számítógép, sőt a specifikáció még más eszközöket is megenged. Az alapötlet az, hogy a már meglevő digitális vezeték nélküli infrastruktúrát kell használni. A felhasználók szó szerint felhívják a WAPátjárót a vezeték nélküli kapcsolat segítségével, és weboldalakra vonatkozó kéréseket küldenek neki. Az átjáró ekkor a gyorstárában néz utána a kért oldalnak. Ha ott meg van, elküldi, ha nincs, akkor letölti a vezetékes Internetről. A WAP 1.0 lényegében te hát egy vonalkapcsolt rendszer, viszonylag magas percdíjakkal. Nem megyünk bele a részletekbe, a lényeg mindenesetre az, hogy az emberek nem szívesen használták az Internetet parányi képernyővel és percdíjak fizetésével, úgyhogy a WAP tulajdonképpen bukás volt (egyébként voltak más problémái is). Úgy tűnik azonban, hogy a WAP és a versenytársa, az i-mode (lásd később) egy hasonló technológia felé haladnak, szóval a WAP 2.0 még akár nagy siker is lehet. Mindazonáltal a WAP 1.0 volt a vezeték nélküli Internet irányába tett első kísérlet, ezért érdemes legalább röviden szót ejteni róla. A WAP alapjában véve egy, a web elérésére szolgáló protokollkészlet, amit a kis sávszélességű kapcsolatokra és a lassú processzorral, kevés memóriával és kis képer nyővel rendelkező vezeték nélküli eszközökre optimalizáltak. Ezek a követelmények nyilvánvalóan különböznek a megszokott asztali PC-s környezet követelményeitől, és ez a protokollok terén is eltéréseket eredményez. A rétegeket a 7.48. ábra mutatja.
AZ ALKALMAZÁSI RÉTEG
713
Vezeték nélküli alkalmazási környezet (WAE) Vezeték nélküli viszonyprotokoll (WSP) Vezeték nélküli tranzakciós protokoll (WTP) Vezeték nélküli szállítási réteg biztonsági funkciói (WTLS) Vezeték nélküli datagramprotokoll (WDP) Hordozó réteg (GSM, CDMA, D-AMPS, GPRS stb.)
7.48. ábra. A WAP-protokollkészlet A legalsó réteg az összes létező mobiltelefon rendszert támogatja, beleértve a GSM-et, a D-AMPS-t és a CDMA-t. A WAP 1.0 adatsebessége 9600 b/s. Efölött van a datagramprotokoíi, a WDP (Wir eless Datagram Protocol - vezeték nélküli datagramprotokoll), ami lényegében véve az UDP-nek felel meg. Ezt egy biztonsági réteg követi, amire nyilvánvalóan szükség van egy vezeték nélküli rendszerben. A WTLS a Netscape SSL-jének részhalmaza, melyet a 8. fejezetben fogunk megtárgyal ni. Efölött van a tranzakciós réteg, mely a kéréseket és a válaszokat kezeli, vagy meg bízhatóan, vagy sem. Ez a réteg a TCP-t helyettesíti, amit hatékonysági okokból nem használnak rádiós összeköttetéseken. Ezután jön a viszonyréteg, ami hasonlít a HTTP/1.l-hez, de van benne pár korlátozás és optimalizálási célú bővítés is. Legfelül pedig a mikroböngésző (WAE) található. A magas költségek mellett kétségkívül az a tény sem tett jót a WAP elfogadottsá gának, hogy a protokoll nem HTML-t használ. A WAE-réteg ehelyett egy WML (Wireless Markup Language - vezeték nélküli jelölőnyelv) nevű jelölőnyelvet használ, ami az XML-nek egy alkalmazása. Ebből következően egy WAP-eszköz el vileg csak azokat az oldalakat tudja elérni, melyeket átalakítottak WML formátumra. Ez azonban nagyban csökkenti a WAP értékét, így a rendelkezésre álló oldalak szá-
7.49. ábra. A WAP működése
714
SZÁMÍTÓGÉP-HÁLÓZATOK
mának növelésére az architektúra egy szűrővel röptében átalakítja a HTML-oldalakat WML-re. Ezt a működést szemlélteti a 7.49. ábra. Az igazat megvallva a WAP kicsit megelőzte a korát. Amikor elindult, az XML-t még alig ismerték a W3C berkein kívül, ezért a sajtó úgy számolt be a kezdetekről, hogy A WAP nem használja a HTML-t, pedig pontosabbak lettek volna, ha ezt írják a szalagcímbe: A WAP máris az új HTML-szabványt használja. Az így okozott kárt azonban már nemigen lehetett jóvátenni, és a WAP 1.0 sosem kapott életre. A témára később még visszatérünk, de előbb lássuk a WAP legfontosabb versenytársát.
I-mód Miközben a távközlési cégek és a számítógépgyártók konzorciuma egy olyan nyílt szabvány kigondolásán fáradozott, mely a HTML lehető legújabb verzióján alapszik, Japánban más irányú fejlesztések zajlottak. Egy japán hölgy, Mari Matsunaga a veze ték nélküli Web egy új megközelítését dolgozta ki, melyet i-módnak (informationmode - információs mód) nevezett el. Elgondolásával sikerült meggyőznie a volt ja pán telefonmonopólium vezeték nélküli leányvállalatát is, és 1999 februárjában az NTT DoCoMo (szó szerint: Japán Telefon és Telegráf Társaság bárhová is mész) megindította szolgáltatásait Japánban. A társaságnak három év múlva már több mint 35 millió japán előfizetője volt, akik több mint 40 000 speciális i-mód oldalhoz fér hettek hozzá. A világ távközlési cégei csak a nyálukat csorgatták eme üzleti siker lát tán, annál is inkább, mert úgy tűnt, a WAP-ból nem lesz semmi. Vessünk hát most egy pillantást az i-módra és annak működésére! Az i-mód rendszerének három fő összetevője van: egy új átviteli rendszer, egy új kézikészülék és egy új nyelv a weboldalak leírására. Az átviteli rendszer két különálló hálózatból áll: a meglevő vonalkapcsolt mobiltelefon-hálózatból (ez többé-kevésbé a D-AMPS-hez hasonlítható) és egy új csomagkapcsolt hálózatból, melyet külön az imódos szolgáltatásnak építettek ki. A beszédátviteli üzemmód a vonalkapcsolt hálóza tot használja, és percdíjas alapon számlázzák a kapcsolat ideje után. Maga az i-mód a csomagkapcsolt hálózatot használja, és folyamatosan on-line kapcsolatban van (mint az ADSL vagy a kábel), azaz nem a kapcsolat ideje, hanem az elküldött csomagok alap ján számláznak. A két hálózatot egyelőre nem lehet egyszerre használni. A kézikészülékek úgy néznek ki, mint a mobiltelefonok, csak rendelkeznek még egy kis képernyővel is. Az NTT DoCoMo a reklámjaiban egyre csak jobbfajta mobil telefonoknak állítja be az i-módos készülékeket, nem pedig vezeték nélküli webtermináloknak, pedig voltaképpen inkább ez utóbbinak számítanak. Az előfizetők többsége valószínűleg még annak sincs tudatában, hogy valójában az Internetet hasz nálja. Úgy tekintenek i-módos készülékükre, mint valamilyen bővített szolgáltatásokat nyújtó mobiltelefonra. Az i-módot csak egy szolgáltatásnak tekintik, ezzel összhang ban maguk a készülékek sem programozhatók, pedig megfelelnének egy 1995-ös PC színvonalának, és valószínűleg képesek lennének Windowst vagy UNIX-ot futtatni. Egy i-módos készülék bekapcsolásakor a felhasználó a hivatalosan is jóváhagyott szolgáltatások témalistájával találja szembe magát. Jóval több mint 1000 szolgáltatás érhető el, körülbelül 20 kategóriába osztva. A szolgáltatások lényegében kisebb
AZ ALKALMAZÁSI RÉTEG
715
i-módos weboldalak, és mindegyiket egy külön vállalat kínálja. A hivatalos menü főbb kategóriái közt olyanok vannak, mint az e-levél, hírek, időjárás, sport, játékok, vásárlás, térképek, horoszkópok, szórakoztatás, utazás, útikalauzok, csengőhangok, re ceptek, szerencsejátékok, otthoni bankügyletek és részvényárfolyamok. A szolgáltatások többé-kevésbé a tinédzserekre és a huszonévesekre összpontosítanak, akik odavannak az elektronikus kütyükért, főleg, ha azok divatos színekben pompáznak. Önmagáért beszél a tény, hogy több mint 40 cég foglalkozik csengőhangok eladásával. A legnépszerűbb alkalmazás azonban az e-levél, mely legfeljebb 500 bájtos üzenetek küldését teszi lehe tővé, ami nagy előrelépésnek számít a 160 bájtos SMS-sel (Short Message Service - rö vid üzenet szolgáltatás) szemben. A játékok szintén népszerűek. Létezik még körülbelül 40 000 i-módos weboldal, de ezeket nem egy menüből való kiválasztással, hanem az URL-jük beírásával lehet elérni. Ebben az értelemben a hi vatalos oldal egyfajta internetes portál, melyről a kattintgatások mellett egyéb oldala kat is el lehet érni az URL-ek beírásával. Az NTT DoCoMo szigorúan ellenőrzi a hivatalos szolgáltatásokat. Ahhoz, hogy fölkerüljön a listára, egy szolgáltatásnak sokféle kiírásnak kell eleget tennie. Egyik szolgáltatás sem gyakorolhat például káros hatást a társadalomra, a japán-angol szótá raknak kellően sok szót kell tartalmazniuk, a csengőhang-szolgáltatásoknak gyakran kell új hangokat közzétenniük, és egy oldal sem tanúsíthat uszító magatartást, továbbá nem szabad az NTT DoCoMo-t rossz színben feltüntetni (Frengle, 2002). A 40 000 internetoldalon azonban mindenki azt tesz, amit akar. A i-mód üzleti modellje annyira eltér az Internet hagyományos üzleti modelljétől, hogy érdemes bővebben is kifejtenünk. Az i-mód alapvető előfizetési díja pár dollár havonta. Mivel a számlázás a vett csomagok alapján történik, az alap-előfizetés kevés csomagra elég. Az előfizető választhat olyan több, ingyenes csomagot tartalmazó elő fizetést is, ahol a csomagonkénti díj meredeken csökken, ahogyan a havi 1 MB-tól a 10 MB felé haladunk. Ha az ingyenes csomagok elfogynak a hónap közepén, akkor on-line lehet továbbiakat vásárolni. A szolgáltatás használatához elő kell rá fizetni, ami mindössze egy kattintásból és a PIN kód megadásából áll. A legtöbb hivatalos szolgáltatás díja havi 1-2 dollár körül mozog. Az NTT DoCoMo a telefonszámlával együtt számlázza ki ezt az összeget, és abból 91%-ot átad a szolgáltatás nyújtójának, 9%-ot pedig megtart magának. Ha egy nemhivatalos szolgáltatásnak egymillió előfizetője van, akkor ott egymillió számlát kell kiküldeni (kb. 1 dollárról) minden hónapban. Ha a szolgáltatás hivatalossá válik, az NTT DoCoMo veszi át a számlázást, és szépen átutal 910 000 dollárt a szolgáltató bankszámlájára minden hónapban. A szolgáltatók számára óriási ösztönző erő az, hogy nem kell a számlázással foglalkozniuk, ha hivatalossá válnak, ez pedig megint csak az NTT DoCoMo-nak hajt hasznot. A hivatalos oldalak ráadásul a kezdőmenübe is belekerülnek, így sokkal könnyebb megtalálni őket. Az előfizető telefonszámláján pedig a telefonhívások, az i-módos előfizetési díjak, a szolgáltatások előfizetési díjai és az extra csomagok jelennek meg. Az elsöprő japán siker ellenére nem tudni, hogy a rendszer elterjed-e az Egyesült Ál lamokban és Európában is, a japán körülmények ugyanis sok tekintetben eltérnek a nyu gatiaktól. Először is, a legtöbb potenciális nyugati előfizető (pl. tinédzserek, egyetemi hallgatók, üzletemberek) már rendelkezik nagyképernyős PC-vel az otthonában, és
716
SZÁMÍTÓGÉP-HÁLÓZATOK
szinte biztos, hogy van legalább 56 kb/s sebességű vagy sokszor még jobb internetkap csolata. Japánban keveseknek van internetkapcsolattal rendelkező PC-je otthon, részben a helyhiány miatt, de köszönhető ez az NTT csillagászati helyi szolgáltatási díjainak is (körülbelül 700 dollár egy vonal bekötése, és 1,5 dollárba kerül egy óra helyi beszélge tés). A felhasználók többségének itt az i-mód az egyetlen internetkapcsolata. Másrészt a nyugati emberek nincsenek hozzászokva ahhoz, hogy havonta 1 dollárt fizessenek a CNN weboldalának eléréséért, 1 dollárt a Yahoo weboldaláért, egyet a Google-ért és így tovább, nem is beszélve a letöltött megabájtok utáni pár dollárról. Ma a legtöbb nyugati internetszolgáltató rögzített havi díjat számít fel, függetlenül a használattól. Ez nagyrészt a fogyasztói igények miatt alakult így. Harmadrészt sok japán ember leginkább a munkába vagy iskolába járás közben, vonaton vagy metróban használja az i-módot. Európában nem utaznak annyian vona ton, mint Japánban, Amerikában pedig szinte senki sem. Annak pedig nincs sok ér telme, hogy otthonról használja az ember az i-módot, amikor ott van a számítógép a 17 colos monitorral, 1 Mb/s-os ADSL-kapcsolattal és egy csomó ingyenes megabájt tal. Persze a mobiltelefonok átütő sikerét se jósolta volna meg senki, úgyhogy az imód még akár meg is találhatja a helyét a Nyugaton. Ahogy a fentiekben említettük, az i-módos készülékek a meglevő vonalkapcsolt hálózatot használják a beszédátvitelre, és az új csomagkapcsolt hálózatot az adatátvi telre. Az adatátviteli hálózat a CDMA-n alapszik, és 128 bájtos csomagokat visz át 9600 b/s sebességgel. A 7.50. ábra mutatja be a hálózat vázlatos felépítését. A kézikészülékek az LTP (Lightweight Transport Protocol - egyszerű szállítási pro tokoll) segítségével beszélnek a rádiós összeköttetésen keresztül a protokollokat át alakító átjáróval. Az átjárónak szélessávú optikai kapcsolata van az i-módos kiszol gálóval, mely az összes szolgáltatáshoz kapcsolódik. Amikor a felhasználó kiválaszt
A hivatalos menüben levő szolgáltatások ,.
Bázisállomás I-módos kiszolgáló
<
,'''Bérelt Szolgáltató X x / — >=^ \ c=^ \
Jk
•
000
:::
-módos készülék
' A beszédátviteli hálózat felé
1 Protokoll- \ átalakító \ átjáró \
Közvetlen összeköttetés az Internettel
7.50. ábra. Az i-mód adatátviteli hálózatának felépítése a szállítási protokollokkal együtt
717
AZ ALKALMAZÁSI RÉTEG
egy szolgáltatást a hivatalos menüből, a kérést elküldik az i-módos kiszolgálónak, ahol az oldalak többsége megtalálható a gyorstárban a teljesítmény növelése érdeké ben. A hivatalos menüből kimaradt szolgáltatásokra vonatkozó kérések elkerülik a ki szolgálót, és közvetlenül az Interneten keresztül haladnak. A jelenlegi kézikészülékek processzora körülbelül 100 Mhz-en fut, van bennük több megabájtnyi flash ROM, talán 1 MB RAM, és egy kis beépített képernyő. Az i-mód legalább 72 x 94 képpontból álló képernyőt követel meg, de néhány felső kate góriás készülék már 120 x 160 képpontnál tart. A képernyők színmélysége általában 8 bit, ami 256 színt tesz lehetővé. Ez még nem elegendő a fényképek számára, de meg felel a vonalas rajzoknak és az egyszerűbb ábráknak. Egér nincsen, ezért a képernyőn a nyílbillentyűk segítségével lehet navigálni. Felhasználói felület modulja Plug-in-ek
cHTML-értelmező
Java
Egyszerű ablakkezelő Hálózati kommunikáció Valós idejű operációs rendszer
7.51. ábra. Az i-mód szoftverének felépítése A szoftverfelépítést a 7.51. ábra mutatja. Az alsó réteg egy egyszerű valós idejű operációs rendszerből áll, mely a hardvert kezeli. Ezt követi egy olyan modul, mely a hálózati kommunikációt végzi, az NTT DoCoMo saját LTP-protokolljának használa tával. E fölött egy egyszerű ablakkezelő található, mely a szöveget és az egyszerű áb rákat (GIF-állományok) kezeli. Egy - a legjobb esetben is csak - 120 x 160 képpontos képernyőn nem is lehet sok mindent kezelni. A negyedik réteg a weboldalak értelmezőjét (vagyis a böngészőt) tartalmazza. Az i-mód nem a teljes HTML-t, hanem annak egy részhalmazát, az ún. cHTML-t (compact HTML - kompakt HTML) használja, ami némileg a HTML 1.0-n alapszik. Ez a réteg is lehetővé teszi a segédalkalmazások és a plug-in-ek használatát csakúgy, mint a PC-s böngészők. Az egyik szabványos segédalkalmazás a JVM némileg mó dosított verziójának egy értelmezője. Legfelül a felhasználói felület modulja van, mely a felhasználóval való kapcsolat tartásért felelős. Vessünk most egy közelebbi pillantást a cHTML-re! Mint mondtuk, ez nagyjából megegyezik a HTML 1.0-val, pár kihagyással és néhány, a mobil készülékek számára fontos bővítéssel. Szabványosítás céljából benyújtották a W3C-hez is, de a W3C nem mutatott nagy érdeklődést iránta, úgyhogy valószínűleg megmarad saját terméknek. Az alapvető HTML-címkék többsége itt is engedélyezett, beleértve a , , , , ,