Internet: Kaip kuriama namų knyga?

Kas per velnias yra tas informacijos greitkelis apie kurį šaukia visas pasaulis? Jei tai "Internet", - kažko neramu. Jei jame siautėti galės kiekvienas Martynas, Eimis ar Antanas, - "Internet" pasidarys visokiausio plauko grupių pagrindinė susitikimų ir vartotojų terorizavimo vieta. Jehovistai ir satanistai ir kitos nusibodę sektos, neo-komunistai ir neo-fašistai ir nesubrendę seksualiniai maniakai jau dabar plūsta į šiuos kol kas "laisvus plotus".

Pasipylė krūvos straipsnių "Internet" tema. Nežinau, kaip kitiems, tačiau atrodo, kad jie labai paviršutiniški ir dažniausiai poprastės kokybės. Nesiveldami į bergždžias diskusijas, pabandykime pažvelgti, kaip kuriami "namų puslapiai" "Web" serveriams.


Vos ne kiekvienas jau išgirdo magišką žodį "Internet", o ne vienas ir ne du jau nardo po pasaulinių "Web" (WWW) vandenis. Šie žmonės mąsto informacijos paieškos sąvokomis, kurios panašios į madų žurnalų vartymą. Dažniausiai susiduriama su "Web" peržiūros programomis: "Netscape", "Mosaic" ar "Microsoft Internet Explorer", kuri įeina į "Windows 95 Plus!" rinkinį. Bakst čia, bakst ten ir peršokate nuo vieno "Web" puslapio prie kito (o kur pakliuvom kartais ir neatsimenam). Viskas paprasta ir lengva! Bet kas vyksta anapus uždangos? Iš kur ir kaip Jūsų kompiuteris ištraukia tuos puslapius? Pažiūrėkime ne naudotojo, o "Web" puslapio kūrėjo akimis.

"Web" buvo sukurta kaip paprasta vartotojo sąsaja nardymui "Internet" tinkle. Tačiau grožis sukelia papildomų problemų ryšiams - net suspausti piešinukai kartais užima kelis ar keliolika kilobaitų. Tai nebus taip baisu, kai kiekvienas galės turėti nuosavą ISDN liniją. Tačiau dabar daugelis vis dar tebeplauko su 14,4 kilobodų burlente. Kaip perduoti šiuos kilobaitus, kad nuo laukimo nepražiltum?

Taip neatsitinka, nes "Web" puslapis nėra perduodamas visas iš karto. Jis išskaidomas į keletą porcijų - tranzakcijų (tranzakcija yra informacinių technologijų terminas, reiškiantis, kad reikia atlikti keletą veiksmą laikant juos viena nedaloma operacija. Jei nepavyko atlikti kokio nors vieno veiksmo, - neįvyko visa tranzakcija). Pagrindinė idėja kad pirmiausia atkeliauja tekstinė informacija, kuri nurodo, kokio tipo bus piešinys ir kur jis yra serveryje. Peržiūros programa ("browser") gali greitai nupiešti pagrindinius elementus, o piešinius ištraukti po to atskirai. Kol tai vyksta, vartotojas gali skaityti tekstą ar netgi nušokti į kitą puslapį. Šiuo atveju peržiūros programa "užmirš", kad ji negavo kažkokio ten piešinuko.

Kad suprastume, kaip tai vyksta, trumpai pažiūrėkime, kaip vyksta darbas. Kai "užkuriate" savo peržiūros programą ir kviečiate mėgstamiausią "Web" puslapį, Jūsų programa ("klientas") pradeda tranzakciją su kitu PĮ "gabalu" ("serveriu"), veikiančiu kažkokiame kompiuteryje kažkur ten "Internet" tinkle. "Web" serverį nurodote "Internet" URL adresą. Tai keista eilutė, pvz., "http://www.microsoft.com/corpinfo/press/1996/jan96/t120rel.htm" URL vienareikšmiškai aprašo "Internet" resursą. Jis susideda iš dviejų dalių: schemos ir specifinės schemai dalies. Schema nurodo metodą specifinei komponentei paimti. "Web" puslapiams tai HTTP - pranešimų protokolas, kurį naudodami kalbasi "Web" klientas ir serveris. Kitos schemos yra FTP, "Wais" ir "Gopher".

Likusios URL dalies formatas priklauso nuo schemos. HTTP tai "savininko" serverio vardas (pavyzdyje "www.microsoft.com") ir visas (nurodant visus katalogus) HTML failo, aprašančio "Web" puslapį, vardas. Tas pats "Web" serveris gali turėti kelias schemas, kurių kiekviena jungiama per atskirą uostą. Nutylint visi HTTP klientai atplaukia į uostą, kurio numeris 80 (o pvz., "Gopher" - 70).

Kai serveris patvirtina apie ryšio nustatymą, klientas pasiunčia užklausą informacijai (dažniausiai "namų puslapio") ir laukia atsakymo. laikydamas, kad viskas eina tiesiog šauniai, serveris pasiunčia reikalautą informacijos porciją ir užbaigia tranzakciją laukdamas kito seanso.

Pas klientą reikalai dar tik įsivažiuoja. Įprasta, kad "namų puslapis" turi neorodų į piešinius. Analizuojant šį puslapį, klientui gali prireikti papildomų tranzakcijų su serveriu, kad "ištrauktų" papildomus resursus, pvz., piešinius. serverio požiūriu, tai visiškai naujas ir nepriklausomas nuo ankstesnio ryšio seansas. Jis suranda reikalinga piešinio failą ir jį pasiunčia klientui.

"Namų knyga" parašyta HTML kalba

Informacijos visada reikia skubiai ir daug. Sunku ir patikėti, kad pats "Web" buvo sukurtas CERN'e (Europos branduolinių tyrimų organizacijoje). O ar neatrodo, kad didelius daiktus visada padaro tik mažos grupelės. Štai "Unix" sukūrė du žmonės, su "Mosaic" dirbo nuo 2 iki 4-ių, o "Java", kurią minime šiame puslapyje, - ne daugiau penkių. Ir net "Mac" sistemą vystė maždaug tuzinas. O juk prisiminus - DOS taigi sukūrė VIENAS žmogus.

Ir vienas lauke ne tik karys, bet ir ištisa armija!


"Web" puslapis iš tikrųjų yra failas HTML formatu, kuris yra specialus bendresnio SGML variantas. Jis sužavi savo paprastumu ir yra pakankamai lankstus, kad išgaunant vizualius efektus. Štai kaip yra aprašomas paprastas "namų" puslapis.
<html>

<head>
<title>Programuotojo užrašai</title>
</head>

<body>
<body backgraund=debesys.jpg>
<h1><center><Sveiki aplankę mane></center></h1>
<hr>

<h3>
<img src="emblema.gif" alt="Aš dar siunčiamas..." align="bottom">

Ar nenorite prenumeruoti <a href="mailto:j.skendelis@amadeus.omnitel.net">
Programuotojo užrašus?</a><p>

O dabar galite aplankyti
<a href="http://www.whidbey.net/~mdixon/win40001.htm">
Windows 95 klausimų, atsakymų ir informacijos DB</a><br>
</h3>

</body>
</html>
Užteko keliolikos eilučių, kad pilnai aprašytume paprastą "Web" puslapį! "body background" nurodo piešinuką fonui. Perskaičiusi tą eilutę peržiūros programa ("browser") turi paprašyti, kad serveris jį atsiųstų. Tačiau galima įjungti režimą, kad fonas nebus naudojamas - ir šiuo failu linija nebus "apsunkinama".

Eilutė, prasidedanti "img src", nurodo, piešinuką. Klientas turi pradėti naują tranzakciją su serverio jo parsisiuntimui. Kol piešinys "važiuoja", peržiūros programa piešinuko vietoje išveda "Aš dar siunčiamas...".

O toliau yra dvi nuorodos į kitus URL. "a href=mailto" reiškia, kad nurodytu adresu reikia pasiųsti laišką. O antroji nuoroda yra kitas "Web" puslapis kitame serveryje. Peržiūros programa turi užtikrinti, kad bus atlikti reikalingi veiksmai, kai vartotojas pabrauktose vietose spustels pelės mygtuką.

Ir dar daug kitų galimybių slepia ši kalba. Bet ir paprasto pavyzdėlio pakanka, kad suprastume, kad galima sukurti įspūdingus puslapius vien darydami nuorodas į piešinukus ir kitus "Web" serverius. Ir reikia būti labai atsargiam. Prasidėjus "Internet" bumui HTML standartas nepaprastai greitai vystosi (šiuo metu oficialiai yra 2.0 versija) apaugdamas vis naujomis galimybėmis. Tačiau jau dabar daugelis peržiūros programų įtraukė juodraštinius 3.0 versijos išplėtimus.

O tuo tarpu nerkime dar truputį giliau. HTTP serveris turi žinoti du pagrindinius dalykus: kokios informacijos nori klientas (ją aprašo HTML) ir kokius veiksmus atlikti ją pateikiant. Pagrindinis įrankis yra GET komanda, pvz.,

GET debesys.jpg

Tačiau dabartinė HTTP versija leidžia klientui perduoti ir papildomą informaciją tiksliau aprašančią jo galimybes, pvz., kokius grafinius formatus jis sugeba priimti (ir nesiųsti, pvz., JPEG piešinių).

Atsakydamas serveris pasiunčia antraštę, pvz.,

HTTP/1.0 200 OK
Date Sunday Sun, 11 Feb 1996 23:38:46 GMT
Server: JS_Private/1.0
MIME-version: 1.0
Content-type: image/jpeg
Last modified: Sun, 11 Feb 1996 08:17:53 GMT
Content length: 31504
Iškart po šios antraštės eina 31504 baitų JPEG piešinys. O pirmoji eilutė nurodė HTTP versiją ir atsakymo kodą. Štai keli dažnesni kodai:
200 - URL surastas, informacija bus perduodama;
404 - URL nesurastas;
503 - serveris neturi galimybių patenkinti užklausą.

Kitos eilutės patikslina informaciją, pvz., MIME standartas nurodo perduodamų duomenų tipą. Štai dar keli leistini tipai:

Objekto tipas    Potipis    Aprašas

application msword MS Word dokumentas application zip PKZIP archyvas image gif Piešinys GIF formatu audio wav MS WAV audio įrašas
O pabaigoje trumpai prabėgsiu pro svarbesnius HTTP išplėtimus. Juk pats HTTP nurodo tik kaip paimti statinę informaciją. Interaktyvioje terpėje reikia daigiau ir "Web" guru sukūrė daugelį šio metodo išplėtimų.

Paprasčiausias ir seniausias yra CGI ("Common Gateway Interface"). Klientas siunčia parametrus, pvz., "NAME=Jonas Skendelis", "CreditCard=123456789" ir t.t. Serveris panaudodamas šius kintamuosius vykdo nuosavas programytes, - dažniausiai "Unix" komandų failus ("scripts"), kurios naudoja šių kintamųjų reikšmes ir atlieka reikiamus veiksmus.

"Sun Microsystems" sukūrė "Java" kalbą, kurios pagrindinė galimybė yra iš serverio paimti programą ir ją vykdyti pas klientą. Programos įrašomos p-kodu, kuris leidžia vykdyti programą bet kokioje platformoje - tereikia turėti p-kodo interpretatorių. (žr. Java" sukūrimo istoriją). Į ją labai panaši yra ir garsiosios "Netscape" firmos "LiveScript", tačiau neturi griežtos tipų kontrolės.

Unix komandinės eilutė
Anotacijos Java kalboje
Įvadas į Perl kalbą: Kas naudoja Perl?
Tcl kalba