World Wide Web (ili samo Web) je kolekcija ogromnog broja elektronskih dokumenata sainjenih od povezanih Web stranica napisanih u HTML-u (Sl. 6-1). Stranice su raspoloive korisnicima Web-a u vidu datoteka smetenih na milionima raunara distribuiranih po Internetu. Svaka stranica moe sadrati pokazivae (tzv. linkove ili hiperveze) na druge stranice koje mogu biti smetene na istom ili na nekom drugom raunaru (ili, u terminologiji Web-a, Web sajtu). Klikom na link, korisnik prelazi na sledeu stranicu, a ovaj proces se moe nastaviti u nedogled. Koncept stranica koja sadri pokazivae na druge srodne stranice naziva se hipertekstom. Stranica moe sadrati i delove koji nisu tekstualni (npr. slike).
Da bi se Web implementirao na Internetu koriste se dve glavne komponente: Web pretraiva i Web server. Web pretraiva (browser) je aplikacioni program koji korisnik poziva da bi pristupio stranici i prikazao je. Najpoznatiji Web pretraivai su Internet Explorer i Natscape Navigator. Web pretraiva ima ulogu klijenta koji stupa u vezu sa odgovarajuim Web serverom da bi dobio primerak navedene stranice. Pretraiva pribavlja traenu stranicu, interpretira tekst zajedno sa sadranim komandama za formatiranje, i prikazuje ga na ekranu monitora. Primer stranice prikazan je na Sl. 6-2. Kao i mnoge sline Web stranice, stranica sa Sl. 6-2 sadri naslov i izvesne informacije. Konkretno stranica sadri spisak predmeta i predavaa iz grupe za Embedded sisteme Elektronskog fakulteta u Niu. Delovi teksta koji sadre linkove na druge stranice su obino naglaeni (podvueni ili prikazani u odgovarajuoj bolji). Klikom na tekst Internet and Web technologies korisnik moe da dobije dodatne informacije o istoimenom predmetu. Pretraiva pribavlja i prikazuje stranicu na koju ukazuje izabrani link. Pretraiva pribavlja stranicu bez ikakve pomoi korisnika, a nova stanica moe biti uzeta sa istog raunaru sa kojeg je pribavljena i prva ili sa nekog drugog raunaru.
(a)
(b)
Sl. 6-2 (a) Primer Web stranice; (b) Stranica koja se uitava u pretraiva klikom na link Internet and Web Technologies.
147
Osnovni model rada Web-a prikazan je na Sl. 6-3. Na Sl. 6-3 vidimo pretraiva koji na klijentskom raunaru prikazuje Web stranicu. Kada korisnik klikne na liniju teksta koja je povezana sa stranicom sa servera abcd.com, pretraiva sledi link tako to serveru abcd.com alje poruku kojom od njega trai zahtevanu stranicu. Kada dobije traenu stranicu, pretraiva je prikazuje. Ako ova nova stranica sadri link na stranicu sa servera xyzw.com, klikom na ovaj link, pretraiva e poslati zahtev ovom raunaru, i tako do u nedogled.
Hiperlink na abcd.com
Hiperlink na xyzw.com
TCP konekcija
Web pretraiva
Web server
Web server
INTERNET
Da bi bio u mogunosti da prikae stranicu, pretraiva mora da razume njen format. Kako bi se obezbedilo da svi pretraivai razumeju sve Web stranice, Web stranice se piu u standardnom jeziku koji se zove HTML. Iako su pretraivai u osnovi HTML interpretatori, veina pretraivaa poseduje brojne dodatne funkcije koji olakavaju navigaciju na Web-u. Tipino, pretraivai imaju dugme za povratak na prethodnu stranicu, dugme za prelazak na sledeu stranicu i dugme za direktno uitavanje stranice koju je korisnik oznaio kao svoju poetnu stranicu. Po pravilu, pretraivai poseduju podrku za bookmark-e, tj. kreiranje liste esto poseivanih stranica. Takoe, uitane stranice se mogu tampati ili snimiti na hard disk. Pored toga, obino su dostupne brojne opcije za podeavanje izgleda stranice.
148
Pomone aplikacije i plug-in-ovi Ne sadre sve stranice samo HTML. Stranica se moe sastojati od dokumenta formatiranog u PDF formatu, ikone u GIF formatu, fotografije u JPEG formatu, muzike u MP3 formatu, videa u MPEG formatu, odnosno bilo kojeg sadraja u jednom od stotina razliitih tipova fajlova i formata. Pretraiva mora biti u stanju da prepozna i pravilno interpretira sve ove formate. Meutim, umesto neprekidnog proirivanja i prilagoenja interpretatora sve obimnijem skupu razliitih tipova fajlova, kod veine pretraivaa koristi se jedno optije reenje. Kada server vrati stranici, on zajedno sa stranicom alje i dodatne informacije o stranici, kao to je MIME tip stranice. Stranice tipa text/html se prikazuju direktno, a to vai i za jo nekoliko drugih ugraenih tipova. Meutim, ako MIME tip stranice nije jedan od ugraenih, pretraiva konsultuje svoju tabelu MIME tipova u kojoj pronalazi informaciju o tome kako prikazati stranicu datog tipa. Ova tabela pridruuje MIME tip odgovarajuem programu za prikazivanje. Postoje dve mogunosti: plug-in-ovi (dodaci programu) i pomone (halper) aplikacije. Plug-in je programski modul kojeg pretraiva dobavlja iz jednog posebnog direktorijuma na hard disku i instalira kao svoje sopstveno, privremeno proirenje (kao to je ilustrovano na Sl. 6-4(a)). Plug-in nije program za sebe, ve se izvrava kao deo pretraivaa i na taj nain ima pravo pristupa tekuoj stranici i moe je procesirati. Nakon to je plug-in obavio svoj zadatak, on se odstranjuje iz memorije pretraivaa.
(a) (b) Sl. 6-4 Koncept proirenja pretraivaa: (a) plug-in; (b) pomona aplikacija
Da bi pretraiva i plug-in mogli da se poveu, svi plug-in-ovi predvieni za odreeni pretraiva moraju posedovati identian interfejs. Interfejs plug-in-a ini skup procedura koje pretraiva moe da poziva. Na primer, svaki plug-in poseduje proceduru putem koje je pretraiva u mogunosti da plug-in-u prenese podatke za procesiranje. Slino, i pretraiva poseduje interfejs koji je dostupan plug-in-ovima, a putem kojeg oni mogu da zahtevaju izvesne usluge od pretraivaa. Na primer, tipina procedura ovog interfejsa je ona putem koje je plug-in-u omogueno da ispie poruku u statusnoj liniji pretraivaa ili da zatrai od pretraivaa vrednosti izvesnih parametara. Postojanje unapred definisanih interfejsa omoguava da pretraiva koristi sve plug-in-ove na identian nain. To praktino znai da pojava novog tipa fajla (tj. formata) zahteva kreiranje odgovarajueg plug-in-a, ali ne zahteva bilo kakvu izmenu u pretraivau. Meutim, pre nego to moe da se koristi, plug-in mora biti instaliran u sistem. Uobiajeni scenario je taj da korisnik download-uje instalacioni fajl plug-in-a sa Web sajta plug-in-a. Kod Wnidnows sistema, instalacioni fajl je tipino samo-ekstrahujui zip fajl sa nastavkom .exe. Duplim klikom na zip fajl, pokree se program sadran u zip fajlu. Ovaj program ekstrahuje plug-in iz fajla i kopira ga u direktorijum predvien za plug-in-ove. Takoe, program registruje plug-in-ov MIME tip i pridruuje plug-in ovom novom MIME tipu. Drugi nain za proirenje pretraivaa je zasnovan na pomonim aplikacijama. Pomone aplikacije su kompletni programi koji se izvravaju nezavisno od pretraivaa (Sl. 6-4(b)). Poto se radi o zasebnom programu, komunikacija izmeu pretraivaa i pomone aplikacije se ne ostvaruje putem interfejsa. Obino, pomonoj aplikaciji se prilikom pokretanja prosleuje ime fajla u koji je smeten sadraj koji treba obraditi. Pomona aplikacija otvara naznaeni fajl i prikazuje njegov sadraj. Tipino, pomone aplikacije su obimni programi koji egzistiraju nezavisno od pretraivaa, kao to je Adobe Acrobat Reader, program za prikazivanje PDF fajlova, ili Microsoft Word. Veina pomonih aplikacija koristi MIME tip application. Definisan je veliki broj podtipova. Na primer, application/pdf za PDF fajlove ili application/msword za Word fajlove. Na ovaj nain URL moe direktno da ukazuje na PDF ili Word fajl (npr. http://es.elfak.ni.ac.yu/iw/Materijal/lab1.pdf), a kada korisnik klinke na URL, Acrobat ili Word se automatski startuje i preuzima na sebe obradu preuzetog fajla. Na ovaj nain, pretraiva moe biti konfigurisan za praktino neogranieni broj tipova dokumenata, a da to, slino kao kod plug-in-ova, ne zahteva bilo kakve promene u samom pretraivau. Web pretraiva na raunaru tipinog korisnika konfigurisan je sa tipino vie desetina kombinacija tip/podtip, a novi tipovi i podtipovi se obino dodaju uvek kada se instalira neki novi program. Naime, u Windows sistemu, program koji se instalira na raunar ujedno i
149
registruje MIME tipove koje eli da obrauje. Meutim, ovakav mehanizam vodi do koflikta kada u sistemu postoji vie prikazivaa za isti MIME podtip (npr. video/mpg). U takvim situacijama, poslednji program koji je registrovan prepisuje postojeu asocijaciju MIME tip - pomona aplikacija i dati MIME tip/podtip vezuje za sebe. Zbog toga, instalacija novog programa moe kao posledicu imati promenu naina na koji pretraiva obrauje postojee tipove dokumenata. Pretraivai mogu otvarati i lokalne fajlove (sa hard diska), a ne samo one preuzete sa udaljenih Web servera. Poto lokalnim fajlovima nisu pridrueni MIME tipovi, neophodan je nain kako e pretraiva odrediti koji plug-in ili pomonu aplikaciju upotrebiti za obradu konkretnog lokalnog fajla. Ovaj problem se prevazilazi na sledei nain. Pomone aplikacije, pored toga to su u sistemu registrovane za obradu MIME tipa, mogu takoe biti registrovane i za obradu fajlova sa nekim specifinim nastavkom (ekstenzijom). U tipinoj konfiguraciji, dupli klik na fajl nesto.pdf, pokrenue Acrobat u kome e sadraj fajla biti prikazan. Slino, dupli klik na fajl neto.doc dovee do otvaranja ovog fajla u programu Word. Pojedini pretraivai koriste MIME tipove, ekstenzije fajlova, pa ak i informacije uzete iz samog fajla kako bi odredili o kom tipu fajla se radi i pozvali odgovarajuu pomonu aplikaciju ili uitali odgovarajui plug-in. Slino kao kod asocijacija za MIME tipove, i kod asocijacija za ekstenzije fajlova moe doi do konflikta izmeu programa koji su voljni da obrauju fajlove sa istim nastavkom. Na primer, u sistemu moe postojati vie programa koji su u mogunosti da procesiraju .mpg fajlove. Tipino, u toku instalacije novog programa, korisniku se postavlja pitanje da li eli da program kojeg instalira registruje za ponuene ekstenzije. Ukoliko je odgovor potvrdan, postojee asocijacije e biti prepisani novim. Mogunost proirenja pretraivaa velikim brojem novih tipova znaajno olakava korienje Web-a, ali s druge strane, moe da dovede i do problema koji se tiu sigurnosti. Na primer, kada Internet Explorer pribavlja fajl sa nastavkom .exe, on zakljuuje da se radi o izvrnom programa kome zbog toga nije potreba pomona aplikacija. Normalna akcija u ovakvoj situaciji je pokretanje preuzetog programa. Meutim, to moe biti ozbiljna pretnja sigurnosti sistema jer preuzeti program moe sadrati virus. Da bi se predupredile ovakve situacije, Internet Explorer moe biti podeen da ne startuje automatski nepoznate programe ili da konsultuje korisnika pre nego to pokrene preuzeti program.
Savremeni Web serveri poseduju brojne dodatne mogunosti, ali u osnovi, rad Web servera se svodi na prethodnu proceduru. Uoimo da svaki zahtev upuen od strane klijenta, podrazumeva pristup hard disku radi uzimanja traenog fajla. Kao posledica toga, broj zahteva koje Web server moe da opslui u sekundi direktno je odreen vremenom pristupa hard disku. Proseno vreme pristupa hard diskova velike brzine rada iznosi oko 5 ms, to postavlja ogranienje na najvie 200 zahteva/s (i manje ako se esto itaju veliki fajlovi). Za Web sajtove sa velikom brojem istovremenih posetioca 200 zahteva/s je isuvie malo. Jedno poboljanje koje se koristi kod svih Web servera podrazumeva da se u operativnoj memoriji raunara kreira ke sa n najskorije korienim fajlovima. Pre nego to fajl potrai na disku, server proverava ke. Ako je fajl u keu, tada nije potrebno pristupati hard disku jer se fajl moe uzet direktno iz memorije. Iako je za efikasno keiranje potrebno rezervisati relativno veliku koliinu operativne memorije kao i dodatno CPU vreme radi provere da li se fajl nalazi u keu, uteda u vremenu obrade jednog zahteva je obino dovoljno velika da kompenzuje dodatni troak.
150
Sledei nain za ubrzanje rada Web servera predvia uvoenje multithreading1. Kod takvog reenja, server se sastoji iz jednog front-end (isturenog) pristupna modula koji prihvata sve dolazne zahteve i k pozadinskih modula koji obrauju zahteve (Sl. 6-5). Svih k+1 thread-ova pripada istom procesu i imaju pristup keu. Kada zahtev stigne, pristupni modul ga prihvata i kreira jedan kratak zapis sa podacima o zahtevu kojeg predaje jednom od trenutno raspoloivih pozadinskih procesa. Pozadinski modul najpre proverava da je fajl koji trai prisutan u keu i ako jeste, u zapis upisuje pokaziva na fajl. Ako fajl nije u keu, pozadinski modul zapoinje operaciju prenosa fajla sa diska u ke (uz eventualno izbacivanje nekih keiranih fajlova, ako u keu nema dovoljno prostora). Nakon to je fajl prebaen u ke, zapis sa upisanim pokazivaem se vraa pristupnom moduli koji preuzima fajl iz kea i prosleuje ga klijentu koji je uputio zahtev.
Prednost opisanog mehanizma je u tome to za vreme dok su jedan ili vie pozadinskih modula blokirani ekajui na zavretak operacije itanja fajla sa diska (i zbog toga ne troe CPU vreme), ostali moduli mogu biti aktivno upoljeni na obradi novih zahteva. Naravno, da bi se ostvarilo bilo kakvo poboljanje performansi u odnosu na single-thread (jednonitni) model, neophodno je da sistem poseduje vie od jednog hard diska (kako bi vie diskova bili istovremeno upoljeni). U idealnom sluaju, propusna mo multithread Web severa sa k pozadinskih modula u sistemu sa k diskova, moe biti k puta vea u odnosu na single-thread server i jedan disk. Savremeni Web serveri, osim vraanja klijentu traenog fajla, obavljaju i niz dodatnih operacija. Konkretno, u zavisnosti od tipa pristiglog zahteva, pozadinski modul obavlja neki podskup sledeeg niza aktivnosti: 1. 2. 3. 4. 5. 6. 7. 8. 9. Odreivanje imena zahtevane Web stranice iz URL-a. Provera autentinosti klijenta Provera prava pristupa klijenta. Provera prava pristupa Web stranici. Provera kea. Pribavljanje zahtevane stranice sa diska. Odreivanje MIME tipa koji e biti sadran u odgovoru koji se vraa klijentu. Slanje odgovora klijentu. Kreiranje zapisa u log fajlu.
Korak 1 je neophodan zato to primljeni zahtev ne mora sadrati stvarno ime fajla. Na primer, razmotrimo URL http://www.elfak.ni.ac.yu, kod kojeg ne postoji ime fajla. U takvim sluajevima, zahtev se odnosi na podrazumevani fajl (ije je ime obino default.html ili index.html). Takoe, pretraiva moe u zahtevu da navede podrazumevani jezik korisnika (npr. Srpski ili Engleski), a da server izabere verziju stranice na tom jeziku. Korak 2 podrazumeva proveru identiteta klijenta. Ovaj korak je neophodan za stranice koje nisu dostupne svim korisnicima. U koraku 3 proverava se da li je datom klijentu dozvoljen pristup traenoj stranici. U koraku 4 proverava se da li je postoji neko ogranienje koje se odnosi na pristup samoj stranica. Na primer, pristup stranici moe biti dozvoljen samo ako zahtev potie iz odreenih domena (npr. stranici moe biti dostupna samo lokalnim korisnicima). U koracima 5 i 6 vri se uzimanje stranice. Korak 7 podrazumeva odreivanje MIME tipa stranice (na osnovu ekstenzije fajla, prvih nekoliko rei samog fajla ili na neki drugi
Engleska re thread se prevodi kao nit, a pojam multithreading kao vienitni rad ili rad sa vie niti u isto vreme. Procesi i niti su dva osnovna mehanizma za paralelno (konkurentno) izvravanje programa. Programi koji imaju potrebu da istovremeno obavljaju vie poslova u isto vreme mogu za svaki takav zadatak da kreiraju jedan proces koji e se izvravti uporedo sa drugim procesima. Svaki proces poseduje svoju memoriju za uvanje svojih podataka. Nit je u osnovi slian procesu, s tom razlikom da ne poseduje svoju spostvenu memoriju ve je deli sa svim ostalim nitima kreiranim u istom programu.
1
151
nain). U koraku 9, formira se odgovor koji se vraa klijentu. U koraku 9, formira se zapis o obraenom zahtevu i upisuje u jednom posebnu datoteku za voenje evidencije o pristupima Web severu (tzv. log fajl). Zapis sadri informaciju o identitetu klijenta, domenu iz kojeg zahtev poslat, vreme prijema zahteva, ime zahtevane stranice itd. U sluajevima kada je broj zahteva koji se upuuje Web serveru u jednoj sekundi veoma veliki, jedan CPU nee biti u stanju da obradi sve zahteve, bez obzira na broj hard diskova koji se koriste u paraleli. U takvim situacijama koristi se model farme servera. Kod ovog modela, umesto jednog koristi se vie vorova (raunara), od kojih svaki eventualno poseduje vie diskova (Sl. 6-6). Pretpostavka je da svi raunari ukljueni u farmu servera poseduju sve Web stranice. Pristupni modul i dalje prihvata zahteve, ali ih sad distribuira razliitim raunarima, a ne nitima u okviru jednog raunara. Na ovaj nain, smanjuje se optereenje pojedinanih raunara.
Jedan problem koji se javlja kod farme servera posledica je nepostojanja zajednikog kea, jer svaki vor poseduje svoju sopstvenu memoriju. Naime, moe se desiti da je traeni fajl prisutan u keu nekog vora, a da je zahtev prosleen voru kod kojeg se fajl mora proitati sa diska. U takvoj situaciji, vreme obrade zahteva je due nego to je to neophodno. Takoe, nakon obraenog zahteva isti fajl e se nai u dva kea. Jedan nain za ublaavanje gubitka u performansama zbog nepostojanja zajednikog kea sastoji se u tome da pristupni modul vodi evidenciju o tome kome je poslao svaki zahtev, a da naredne zahteve koji odnose na istu stranicu alje istom voru. Na taj nain, pojedinani vorovi se specijalizuju za pojedine stranice tako da se ukupni raspoloivi prostor u keu ne troi neracionalno za uvanje svakog fajla u svakom keu.
6.3 URL
Web se sastoji od ogromne kolekcije dokumenata/stranica povezanih hipervezama, a zapamenih u fajlovima koji su locirani na hiljadama servera distribuiranim po globalnom Internetu. Imajui to u vidu, kljuna pretpostavka Web-a je postojanje mehanizma za imenovanje i lako lociranje stranica. Konkretno, pre nego to izabrana stranica moe biti pribavljena i prikazana u pretraivau, neophodno je odgovoriti na sledea tri pitanja: 1. 2. 3. Koje je ime stranice? Gde se stranica nalazi? Kako se stranici moe pristupiti?
Odgovor na ova tri pitanja sadran je u URL-u (Uniform Resource Locator - uniformni lokator resursa) stranice. Naime, svakoj stranici na Web-u dodeljen je URL koji se koristi kao njeno svetski jedinstveno ime. URL se sastoji iz tri dela: (a) protokol (ili ema); (b) DNS ime raunara na kome je stranica locirana i (a) lokalno ime koje na jedinstveni nain ukazuje na konkretnu stranicu (najee ime fajla na hard disku u kome je stranica zapamena). Na primer, URL Web stanica kursa Internet i Web tehnologije na Elektronskom fakultetu u Niu je http://es.elfak.ni.ac.yu/iw/iw.htm i sastoji se iz tri dela razdvojenih kosim crtama: protokol (http), DNS ime hosta (se.elfak.ni.ac.yu) i ime fajla (iw/iw.htm). Deo za ime fajla se sastoji od relativna putanja u odnosu na podrazumevani Web direktorijum na serveru es.elfak.ni.ac.yu (iw/) i imena samog fajla (iw.htm). Deo za ime fajla moe biti izostavljen iz URL-a (npr. samo http://es.elfak.ni.ac.yu). U tom sluaju, Web server zahtev se preusmerava na glavnu (podrazumevanu) stranicu Web sajta. Takoe, deo za ime fajla moe da sadri putanju do direktorijuma, ali ne i samo ime fajla (npr. http://es.elfak.ni.ac.yu/iw/). U takvim sluajevima, Web server preusmerava zahtev na podrazumevani fajl u tom direktorijumu (npr. http://es.elfak.ni.ac.yu/iw/index.htm). Kod mnogih Web sajtova uvedene su skraenice za imena fajlova, koje poinju znakom ~. Na primer, ime oblika ~ana/ zamenjuje kompletnu putanju do direktorijuma korisnika ana na lokalnom raunaru.
152
Kao to je ve reeno, za komunikaciju izmeu Web klijenta (pretraivaa) i Web servera koristi se TCP protokol. Pretraiva otvara TCP konekciju sa Web serverom, koja se potom koristi za prenos zahteva od pretraivaa ka serveru, a onda i za prenos odgovora (koji sadri traenu stranicu) od servera do pretraivaa. Meutim, TCP protoko se koristi samo za transport zahteva i odgovora, dok su pravila konverzacije i formati poruka koje se razmenjuju izmeu pretraivaa i Web servera regulisana posebnim aplikacionim protokolom. ta vie, ne postoji samo jedan, ve se za ovu namenu mogu koristi razliitih aplikacionih protokola koji su specijalizovani za prenos specifinih tipova resursa. Ime protokola koji se koristi za pristup stranici navedeno u poetnom delu URL-a. Delimian spisak protokola koji se mogu koristiti kao deo URL-a, naveden je u tabeli sa Sl. 6-7. Protokol HTTP je osnovni protokola Web-a i koristi se za komunikaciju Web klijenta i Web servera. Vie detalja o ovom protokolu bie dato u sledeoj sekciji. Protokol FTP, koji se koristi za pristup fajlovima, bio je u irokoj upotrebi i pre nastanka Web-a. I danas na Internetu postoj veliki broj FTP servera sa kojih zainteresovani korisnici mogu preuzimati najrazliitije fajlove. ta vie Web je olakao korienje FTP-a, s obzirom na to da je pristup FTP serveru preko Web pretraivaa laki, od pristupa putem osnovnog FTP korisnikog interfejsa. Takoe, FTP, za razliku od HTTP, omoguava prenos fajlova u oba smera, kako od servera do klijenta, tako i od klijenta do servera.
Ime http ftp file news gopher mailto telnet Koristi se za Hipertekst (HTML) FTP Lokalni fajl Newsgroup Gopher slanje elektronske pote Udaljeni login Primer http://es.elfak.ni.ac.yu ftp://ftp.elfak.ni.ac.yu file:// C:\Documents and Settings\Goran\My Documents\Courses\IWT\iwt.doc news:comp.os.minix gopher://gopher.tc.umn.edu/11/Libraries mailto:ppetrovic@elfak.ni.ac.yu telnet://www.w3.org:80 Sl. 6-7 Protokoli koji se mogu korisiti u URL-u.
Protokol file omoguava pristup lokalnim fajlovima i prikazivanje njihovog sadraja u pretraivau, na isto nain kao Web stranica. Ovaj pristup je slian FTP-u, ali ne zahteva FTP server. Naravno, primenljiv je samo na fajlove koji se nalaze na lokalnom hard disku raunara. Sistem vesti USENET, postojao je mnogo pre nastanka Interneta. Danas ga ini oko 30.000 grupa za razmenu vesti u kojima milioni ljudi diskutuju na najrazliitije teme tako to postavljaju i itaju lanke koji se odnose na temu konkretne grupe. Protokol news omoguava da se lanku iz grupe za razmenu vesti pristupa na isti nain kao i Web stranici. Gopher je protokol koji se nekada koristio u istoimenom sistemu za pronalaenje informacija na Internetu, koji se smatra preteom Web-a. Konceptualno, Gopher je slian Web-u, ali podrava samo tekst, a ne i slike. Danas se smatra zastarelim i nije vie u upotrebi. Protokol mailto omoguava korisnicima da putem Web pretraivaa alju elektronsku potu. Dovoljno je u polje za unos hiperlinka upisati mailto: i e-mail adresu primaoca. Veina Web pretraivaa, u ovakvoj situaciji, otvara program za slanje elektronske pote sa popunjenim poljima za e-mail adresu. Protokol telnet, kao to znamo, koristi se za uspostavljanje konekcije sa udaljenim hostom. Slino kao u sluaju mailto protokola, upisivanjem telnet: zajedno sa IP adresom udaljenog hosta u polje za unos hipelinka, otvara program za rad TELNET protokolom. U zakljuku, URL je osmiljen ne samo da omogui korisnicima navigaciju na Web-u, ve i korienje drugih mrenih servisa (FTP, news, Gopher, e-mai i telent) na uniforman nain, posredstvom Web pretraivaa.
6.4 Cookie
Kod Web-a ne postoji sesija. Pretraiva alje zahtev, a server vraa nazad traeni fajl. Nakon obavljene transakcije, server zaboravlja da je ikada komunicirao sa tim konkretnim klijentom. (Kae se da je Web stateless (bez stanja) ili bez memorije). U prvom periodu razvoja Web-a, kada se Web gotovo iskljuivo koristio za pribavljanje javno dostupnih dokumenata, ovakav (stateless) nain rada bio je u potpunosti zadovoljavajui. Meutim, sa naglim irenjem Web i porastom njegove popularnosti, model zasnovan na nezavisnim transakcijama vie nije mogao da zadovolji sve potrebe novih primena. Na primer, neki Web sajtovi zahtevaju od korisnika da se registruju pre nego to im se dozvoli korienje dostupnih usluga sajta. Postavlja se pitanje, kako e Web server znati da li
153
zahtev potie od registrovanog ili neregistrovanog korisnika, pa da na osnovu toga dozvoli ili zabrani pristup nekim svojim stranicama. Drugi primer su Web portali (npr. Yahoo) kod kojih svaki registrovani korisnik moe da konfigurie sadraj poetne stranice birajui informacije koje e biti prikazane uvek kada uita stranicu (npr. vremenska prognoza, kurs, sportski rezultati...). Meutim, kako e Web server znati kako da prilagodi stranicu korisniku, ako ne zna koji korisnik je uputio zahtev. Slian problem se javlja kod Web sajtova elektronskih prodavnica koje omoguavaju korisniku da pregleda ponuene artikle, izabere one koje eli da kupi i stavi ih u elektronsku korpu i na kraju kupovine plati raun kreditnom karticom. Na prvi pogled, ini se da je dovoljno da server vodi evidenciju o IP adresama sa kojih se upuuju zahtevi za stranicama. Meutim, ova ideja nije dobra. Pre svega, mnogi korisnici koriste raunare koje dele sa drugim korisnicima. IP adrese moe da identifikuje raunara, ali ne i korisnika koji trenutno radi na raunaru. Drugo, mnogi korisnici (pre svega kuni) Internetu pristupaju putem provajdera Internet usluga (npr. pomou modema) od kojih, nakon konektovanja, dobijaju IP adresu na privremeno korienje, koja ne mora biti ista kao IP adresa koju su koristili prilikom prethodnog konektovanja. Da bi se opisani problem reio, razvijena je tehnika pod nazivom cookies (kolaii). U nastavku e biti objanjen nain kreiranja, uvanja i korienja cookie-a. Kreiranje i uvanje Cookie-a. Iako kreiranje i uvanje cookie-a zavisi od konkretne realizacije, osnovni princip je uvek isti. Cookie je mali fajl (ne vei od 4KB) ili string koji se pridodaje svakom zahtevu ili odzivu koji se razmenjuju izmeu klijenta i servera. Cookie pravi server i, zajedno sa traenom Web stranicom, alje ga klijentu. Cookie sadri ime domena servera zajedno sa podacima koje je server prikupio od klijenta (korisniko ime, registracioni broj) kao i dodatne podatke koje imaju znaaj u konkretnoj situaciji. Na strani klijenta, pretraiva automatski izdvaja cookie iz primljenog odziva i smeta ga na hard disk u direktorijum predvien za uvanje cookie-a. Kada klijent alje zahtev serveru, pretraiva proverava da li u direktorijum za cookie, postoji cookie kojeg je poslao dati server. Ako takav cookie postoji, pretraiva ga pridodaje zahevu i ale serveru. Server, kada primi zahtev, zna da se radi o starom, prepoznatljivom korisniku, a ne o nekom novom. Dakle, cookie pravi i koristi (konzumira) server. Pretraiva uva cookie do sledeeg obraanja serveru, ali nikada ne ita sadraj cookie-a, niti njegov sadraj otkriva korisniku. Korienje cookie-a Jedan mogui scenario korienja cookie-ja je sledei. Prilikom prve posete sajtu za on-line prodaju knjiga, od korisnika se zahteva da izabere jednu ili vie oblasti za koje je zainteresovan (tehnika, beletristika, ).. Nakon obavljene registracije server kreira cookie sa sadrajem oblast1=tehnika, oblast2=naucna_fantastika, ..., i alje ga klijentu. Pretraiva izdvaja cookie iz odgovora i smeta ga u odgovarajui direktorijum. Kad god kasnije korisnik pristupi ovom sajtu, pretraiva zajedno sa zahtevom alje serveru i odgovarajui cookie. Na osnovu sadraja cookie-a, server saznaje ime korisnika i koristi ga kao klju za pretragu baze podataka iz koje ita i ostale podatke tog korisnika. Na osnovu ovih podataka, Web server kreira, i vraa nazad stranicu koja sadri spisak novih knjiga iz oblasti za koje je korisnik zainteresovan. Jo jedan tipian scenari okorienja cookie-a sreemo kod elektronskih prodavnica. Kada klijent (kupac) izabere artikal i stavi ga u korpu, kreira se cookie koji sadri informacije o artiklu (npr. cena i koliina) i alje pretraivau. Ako klijent izabere drugi artikl, cookie se aurira novim podacima. Kada klijent zavri kupovinu i eli da se odjavi, server preuzima poslednji cookie i izraunava ukpunu cenu. Format cookie-a Cookie moe sadrati do pet polja: (Domain, Path, Content, Expires, Secure) Domain (Domen). Ovo polje sadri ime domena iz koga cookie potie (domen servera). Path (putanja). Ovo polje sadri putanju u strukturi direktorijuma servera koja ukazuje na deo njegovog stabla direktorijuma unutar kojeg sve stranice mogu koristiti cookie. Kosa crta / u ovom polju znai celokupno stablo. Content (sadraj). Sadraj ovog polja je oblika ime = vrednost. Ime i vrednost mogu biti bilo koja informacija koju server eli da uvrsti u cookie. Expires (rok vaenja). Ovo polje sadri datum i vreme kada prestaje vanost cookie-ja. Ako ovo polje ne postoji, pretraiva unitava cookie prilikom svog zatvaranja. Ovakav cookie se zove neperzistentni cookie. Ukoliko su
154
datum i vreme sadrani u cookie-ju, za cookie se kae da je perzistentan i da e ostati na klijentu sve do isteka navedenog roka. Secure (Sigurnost). Ako je postavljeno na Yes, nalae pretraivau da cookie moe da se vrati serveru samo u ifrovanom obliku. Ova mogunost se koristi kod aplikacija za elektronsko poslovanje u bankovnim transakcijama i drugim aplikacijama koje zahtevaju zatitu informacija.
155
Tag <html> ... </html> <head> ... </head> <title> ... </title> <body> ... </body> <h n> ... </h n> <b> ... </b> <i> ... </i> <center> ... </center> <ul> ... </ul> <ol> ... </ol> <il> ... </il> <br> <p> <hr> <img src = ...> <a href=...> ... </a>
Opis Deklarie da je Web stranica pisana u HTML-u Omeuje zaglavlje stranice Definie naslov stranice (ne prikazuje se na stranici) Omeuje telo stranice Omeuje naslov nivoa n Postavlja ... u bold Postavlja ... u italik Horizontalno centrira ... na stranici Omeuje neureenu listu Omeuje ureenu listu Omeuje jednu stavku ureene liste Umee novi red (prelom linije) Zapoinje novi paragraf Umee horizonalnu liniju po celoj duini stranice Prikazuje sliku Definie hipervezu
HTML prua vie razliitih naina za kreiranje listi, ukljuujui i ugnjedene liste. Liste se zapoinju tagom <ul> ili <ol>, a tag <il> se, u oba sluaja, koristi za oznaavanje poetka stavki u listi. Tag <ul> oznaava poetak nenumerisane liste. Pojedinane stavke ovakve liste (omeene tagovima <il> i </il>) prikazuju se sa znakom na poetku. Za numerisane liste (omeene tagom <ol>), umesto simbolom , stavke se prilikom ispisivanja u pretraivau oznaavaju rednim brojevima. Tagovi <br>, <p> i <hr> se koriste za ragranienje delova teksta. Tag <br> lomi liniju teksta (prelazak u novi red). Tag <p> oznaava poetak novog paragrafa, to moe znaiti umetanje jedne prazne linije ili uvlaenje prve linije novog paragrafa. Konano, tag <hr> prekida tekuu liniju teksta i u novoj liniji crta horizontalnu liniju celom duinom stranice. Osim teksta, Web stranice pisane u HTML-u mogu sadrati i slike. Za umetanje slika na tekuu poziciju ne stranici koristi se tag <img>. Ovaj tag moe imati vie parametara. Parametar src sadri URL slike. HTML ne propisuje dozvoljene grafike formate slika. U praksi, svi pretraivai podravaju grafike formate GIF i JPEG. Stranica moe sadrati i sliku u nekom drugom formatu (npr. BMP), da li e takva slika biti i prikazana u pretraivau zavisi od sposobnosti pretraivaa da barata konkretnim formatom. Parametar taga <img>, align, definie poravnanje slike u odnosu na tekst (top, middle, bottom). Parametar alt omoguava da se umesto slike moe prikazati tekst, ukoliko korisnik zabrani pretraivau da prikazuje slike. Konano, parametar ismap, ukazuje da se radi o aktivnoj slici, tj. slici mapi. Za oznaavanje hiperveza koristi se tagovi <a> i </a>. Slino tagu <img>, tag <a> moe sadrati vie parametara, kao to su href (za URL) i name (za ime hiperveze). Tekst uokviren tagovima <a> i </a> se prikazuje, a klikom na tekst pretraiva prelazi na novu stranicu iji je URL naveden u parametru href. Takoe, dozvoljeno je umesto teksta navesti sliku (tag <img>). U tom sluaju, hiperveza se aktivira klikom na sliku. Na primer, razmotrimo sledei fragment HTML teksta: <a href="http://www.nasa.gov"> NASA's home page </a> koji se u pretraivau prikazuje kao: NASA's home page Ako korisnik klikne na ovaj tekst, pretraiva e pribaviti i prikazati stranicu iji je URL http://www.nasa.gov. U sledeem primeru: <a href="http://www.nasa.gov"> <img src="shuttle.gif" alt="NASA"> </a> na stranici e biti prikazana slika (npr. slika spejs atla). Klik na ovu sliku imae isti efekat kao klik na podvueni tekst iz prethodnog primera. Ukoliko korisnik zabrani prikazivanje slika u pretraivau, na mestu na stranici, gde bi inae bila prikazana slika, bie ispisan tekst NASA. Parametar name tag <a> se koristi za hiperveze koje ukazuju na pojedine sekcije same stranice. Na primer, na poetku mnogih Web stranica nalazi se sadraj stranice (slino sadraju knjige). Klikom na stavku iz sadraja, korisnik ima mogunost da se brzo pozicionira na odgovarajuu sekciju stranice.
156
HTML je jezik koji evoluira. Starije verzije HTML-a, 1.0 i 2.0, nisu predviale tabele. Podrka za tabele uvedena je u veziji HTML 3.0. HTML tabela se sastoji iz jedne ili vie vrsta od kojih svaka sadri jednu ili vie elija. elije mogu sadrati tekst, slike, ikone, fotografije, pa ak i cele tabele. elije se mogu spajati u vee elije koje zauzimaju vie kolona i/ili vrsta. Iako autor stranice ima mogunost izvesne kontrole nad izgledom tabele (definie poravnanje sadraja elija, stil okvira tabele, margine teksta u eliji), konani izgled tabele zavisi od naina na koji pretraiva interpretira HTML opis tabele. Na Sl. 6-9(a) je dat primer HTML-a koji ilustruje osnovne karakteristike HTML tabela, a na Sl. 6-9(b) odgovarajui prikaz u pretraivau. Kao to se moe videti celokupna tabela je omeena tagovima <table> i </table>. Tag <caption> sadri tekst naslova tabele. Svaka vrsta poinje tagom <tr>, dok su pojedinane elije oznaene tagom <th> ili <td>. elije oznaene tagom <th> (Table Header) odgovaraju nslovnim elijama kolona, dok one oznane tagom <td> (TableData) predstavljaju unutranje elije tabele, tj. one koje sadre podatke. Prilikom kreiranja tabela dozvoljeno je koristiti brojne atribute, kako bi se definisalo horizonalno i vertikalno poravnanje elija, poravnanje unutar elije, nain crtanja okvira, grupisanje elija itd.
<html> <head><title> Primer stranice sa tabelom </title></head> <body> <table border=1 rules=all> <caption> Razlike izmedju verzija HTML-a </caption> <col align = left> <col align = center> <col align = center> <col align = center> <col align = center> <tr><th>Stavka<th>HTML 1.0<th>HTML 2.0<th>HTML 3.0 <th>HTML 4.0</tr> <tr><th>Hiperveze <td> x <td> x <td> x <td> x </tr> <tr><th>Slike <td> x <td> x <td> x <td> x </tr> <tr><th>Liste <td> x <td> x <td> x <td> x </tr> <tr><th>Aktivne mape i slike<td> <td>x<td>x<td>x</tr> <tr><th>Forme<td>   <td> x <td> x <td> x </tr> <tr><th>Formule<td>   <td>   <td> x <td> x </tr> <tr><th>Tulbarovi<td>   <td> <td> x <td> x </tr> <tr><th>Tabele<td> <td> <td>x<td>x</tr> <tr><th>Ugradnja objekata<td> <td> <td> <td>x </tr> <tr><th>Skripte<td> <td> <td> <td>x</tr> </table> </body> </html>
(b)
U verziji HTML 4.0 uvedene u dodatne mogunosti, kao to su podrka za olakano korienje Web stranica osobama sa hendikepom, ugradnja objekata (optenje taga <img> tako da i druge vrste objekata mogu biti sadrani na stranici), podrka za skript jezike (koja omoguava kreiranje dinamikog sadraja stranice) i druge. U sluajevima kada je Web sajt sloen i sadri veliki broj stranica koje kreiraju razliiti autori koji rade za istu kompaniju, poeljno je da postoji nain za unifikaciju izgleda (stila) razliitih stranica. Ovaj problem se moe reiti korienjem style sheet-ova. Stranice koje se oslanjaju na pridrueni style sheet ne moraju vie da sadre iskljuivo tzv. fizike stilove (kao to su npr. <b> za bold ili <i> za italic). Umesto toga, autori koriste logike stilove definisane u style sheet-u; npr. <nr> (za normalan tekst), <em> (za naglaen tekst), <strong> (za jako naglaen tekst). Nain prevoenja logikih stilova definisan je u style sheet-u koji se referencira na poetku svake stranice. Na ovaj nain, sve stranice imae identian stil, a da bi se promenio stil svih stranica dovoljno je promeniti definiciju stila u style sheet-u. Na primer, u style sheet-u moe biti definisano da se logiki stil <strong> prikazuje u plavoj boji u italic fontu veliine 14-point-a. Ako je potrebo promeniti stil tako da se tekst oznaen sa <strong> prikazuje u ruiastoj boji, bold fontom veliine 18, dovoljno je izmeniti samo jednu definiciju u style sheet-u i automatski, promena e biti vidljiva na svim stranicama, svuda tamo gde se koristi ovaj stil.
157
Forme HTML 1.0 je omoguavo samo jednosmernu komunikaciju. Korisnik je mogao da dobije traenu stranicu od servera, ali je teko mogao da vrati nazad povratnu informaciju. Kako je sve vei broj komercijalnih organizacija poinjalo da korisni Web, tako su rasli zahtevi za dvosmernim saobraajem. Na primer, javila se potreba za popunjavanjem narudbenica preko Web-a, registracijom korisnika, postavljanjem upita za predraivanje baze podataka itd. Ovi i slini zahtevi doveli su do uvoenja formi, ve u verziji HTML 2.0. Forme sadre box polja (ili dugmad) koja korisnik moe da popuni traenim podacima ili uini izbor izmeu vie ponuenih opcija i unetu informaciju vrati vlasniku stranice. Za ovu namenu koristi se tag <input>. Ovaj tag poseduje vei broj parametara uz pomo kojih se regulie veliina, priroda i upotreba polja. Nejee se koriste polja za unos teksta, kvadrati za tikliranje, aktivne mape i dugme Submit. Na Sl. 6-10(a) je dat primer HTML koda koji ilustruje osnovne mogunosti formi. Odgovarajui prikaz u pretraivau dat je na Sl. 6-10(b). Forma je uokvirena tagovima <form> i </form>. Obuhvaeni tekst, koji nije deo nekog taga, se prikazuje kao i takst sadran u telu stranice. Pri tome, dozvoljeno je korienje svih uobiajenih tagova (npr. <b>). Forma sa Sl. 6-10(a) sadri tri vrste <input> box polja: polja za unos teksta, kvadrate za tikliranje i nekoliko radio dugmadi. Prvo polje u formi definie polje za unos teksta veliine (size) 46 karaktera predvieno za upis imena korisnika. Uneti string se pamti u promenljivoj kupac radi kasnije obrade. Tag <p> nalae pretraivau da tekst i box polja koja slede prikae u novoj linij. Uz pomo tag <p> i slinih, autor forme moe da kontrolie raspored polja i teksta na formi.
<html> <head><title> FORMA ZA NARUCIVANJE KNJIZARE CENTAR</title></head> <body> <h1> Forma za narucivanje knjiga </h1> <form ACTION="http://www.centar-knjiga.com/cgi-bin/narudzba" method=POST> <p> Ime <input name="kupac" size=46></p> <p> Ulica<input name="ulica" size=20> Mesto <input name="mesto" size=14></p> <p> Br. kreditne kartice <input name="cardno" size=10> Istice <input name="istice" size=4> MASTER <input name="cc" type=radio value="mastercard"> VISA <input name="cc" type=radio value="visacard"></p> <p>Narucujem knjigu <input name="knjiga" size=46></p> <p>Povez Tvrdi <input name="povez" type=radio value="tvrdi"> Meki <input name="povez" type=radio value="meki"> Dostava preko brze poste <input name="express" type=checkbox></p> <p><input type=submit value="narucivanje"></p> Hvala na poverenju. </form> </body> </html>
(a)
(b) Sl. 6-10 (a) HTML kod forme; (b) prikaz forme
Sledea linija forme definie polja za unos adrese i mesta stanovanja kupca. Prvo polje je veliine 40, a drugo 14 karaktera. Naredna linija predviena je za unos podataka o kreditnoj kartici koju kupac koristi za plaanje. Za broj kartice i datum kada istie vaenje kartice koriste se polja za unos teksta, dok se tip kartice bira pomou novog tipa polja, tzv. radio dugmeta. Radio dugmad se koriste kada treba obaviti izbor izmeu dve ili vie alternativnih opcija. U pretraivau, radio dugme se prikazuju na nain koji omoguava korisniku da klikom na dugme moe da izabere ili poniti izbor odgovarajue opcije. Klik na jedno dugme iskljuuje sva ostala iz iste grupe. Radio dugmad se koriste i za izbor tipa poveza. Sva radio dugmad sa istim imenom pripadaju istoj grupi. Tako, sva radio dugmad za izbor tipa kreditne kartce imaju ime cc, a ona za tip poveza ime povez. Parametar
158
value (vrednost) se koristi za indikaciju koje radio dugme je izabrano. Na primer, zavisno od toga koji tip kreditne kartice je izabran, promenljiva cc dobie jednu od dve vrednosti mastercard ili visacard. Posle grupe radio dugmadi za izbor poveza, sledi opcija za isporuku brzom potom, predstavljena tzv. kvadratom za tikliranje (checkbox). Kvadrat za tikliranje moe biti ukljuen ili iskljuen. Za razliku od radio dugadi gde samo jedno dugme iz grupe moe biti izabrano, svaki kvadrat za tikliranje se postavljaju nezavisno od ostlih. Polje za unos teksta, radio dugme i kvadrat za tikliranje su tri tipa taga <input>. Tip se navodi kao vrednost parametra type, npr. type=radio ili type=checkbox. Polje za unos teksta je podrazumevani tip i zbog toga nije nepohodo navoditi parametar type. Postoje jo dva tipa taga <input>, tipovi password i textarea. Tip password, koji se obino koristi za unos lozinke, identian je polju za unost teksta, osim to se ne ispisuju karakteri koji se kucaju, ve se svaki uneti karakter predstavlja istim znakom, npr. *. Tip textarea je takoe varijanta polja za unos teksta, koja, za razliku od osnovnog tipa moe sadrati vie linija teksta. Poslednje <input> polje na formi sa slike je Submit dugme sa natpisom narucivanje. Klikom na ovo dugme, informacije unete na formu se alju nazad na server od kojeg je Web stranica dobijena. Submit dugme se definie vrednou submit parametra type. Vrednost parametra value predstavlja tekst koji se prikazuje kao natpis dugmeta. Kada korisnik klikne na Submit dugme, pretraiva pakuje informacije prikuljene sa forme u jednu dugaku liniju i alje je serveru na obradu. Znak & se koristi za razdvajanje polja, a znak + predstavlja razmak. Na primer, za formu sa slike, linija koja se alje serveru moe biti oblika:
kupac=Petar+Petrovic&ulica=Beogradska+14&mesto=Nis&cardno=1234567890&istice=9/07&cc =mastercard&povez=tvrdi&express=on
Na serveru je da protumai dobijeni string i preduzme odgovarajue akcije. XML i XSL HTML, sa ili bez formi, ne bavi se struktuiranjem podataka na Web stranici niti razdvaja sadraj od formatiranja. Sa pojavom naprednih Web aplikacija, kao to su aplikacije za elektronsku trgovinu (e-commerce), javila se potreba za struktuiranjem Web stranica i jasnim razdvajanjem sadraja od naina prikazivanja (formatiranja). Na primer, zamislimo program koji pretrauje Web u potrazi za najjeftinijom knjigom ili CDom. Jedan takav program bi morao da analizira veliki broj Web stranica raznih sajtova za elektronsku trgovinu i da iz svake izdvoji naslove i cene knjiga ili CD-ova. Ako su Web stranice napisane u HTML-u, program e veoma teko moi da zakljui gde se na stranici nalazi traena informacija. Iz ovog i slinih razloga, organizacija W3C, koja se bavi razvojem Web-a i standardizacijom protokola za Web, razvila je poboljanje HTML-a koje omoguava struktuiranje Web stranice na nain koji olakava automatsku obradu njenog sadraja. Konkretno, uvedena su dva nova jezika. Prvi, XML (eXtesible Markup Language) opisuje Web sadraj na struktuirani nain, dok drugi, XSL (eXtensible Style Language) opisuje formatiranje Web stranice nezavisno od njenog sadraja. Budui da se radi o obimnim i sloenim jezicima, u nastavku e biti izloena samo njihova osnovna ideja.
<?xml version="1.0"?> <?xml-stylesheet type="text/xsl" href="book_list.xsl"?> <book_list> <book> <title> Computer Networks, 4/e </title> <author> Andrew S. Tanenbaum </author> <year> 2001 </year> </book> <book> <title> Internetworking with TCP/IP, Vol I</title> <author> Douglas E. Comer </author> <year> 2000 </year> </book> <book> <title> Data Communications and Networking</title> <author> Behrouz A. Forouzan, 2/e </author> <year> 2001 </year> </book> </book_list> Sl. 6-11 Primer Web stranice u XML-u.
159
Razmotrimo XML dokument sa Sl. 6-11. Dokument opisuje strukturu nazvanu book_list, koja predstavlja spisak knjiga. Za svaku knjigu u strukturi postoje tri polja: naslov (title), autor (author) i godina izdavanja (year). Napomenimo da XML omoguava kreiranje mnogo sloenijih struktura od one prikazane na Sl. 6-11. Na primer, dozvoljeno je da struktura sadri viestruka polja (npr. vie od jednog autora knjige), opciona polja (npr. naslov prateeg CD-ROM-a), alternativna polja (npr. URL knjiare, ako knjiga nije rasprodata ili URL sajta za aukcijsku prodaju, ako je knjiga rasprodata). S obzirom na to da XML tagovi ukazuju na smisao informacije koje sadre, XML dokument se moe lako pretraivati, npr. da bi se pronale sve knjige datog autora. U primeru sa Sl. 6-11, sadraj svakog od tri polja, autor, naslov i godina, se tretira kao nedeljiva informacija. Meutim, ako je potrebno, recimo radi preciznije pretrage, polja je dozvoljeno razloiti na podpolja. Na primer, polje za ime autora, se moe podeliti na dva podpolja, jedno za ime a drugo za prezime autora:
<author> <first_name> Andrew </first_name> <last_name> Tanenbaum </last_name> </author>
Uvedena podela polja author omoguava pretraivanje samo po imenu ili samo po prezimenu autora. U optem sluaju dubina podele moe biti proizvoljna. Dokument sa Sl. 6-11 sadri spisak od tri knjige. Meutim, sam dokument na govori nita o tome kako jednu ovakvu Web stranicu treba prikazati u pretraivau. Da bi se definisao nain formatiranja dokumenta, neophodan je jo jedan fajl, book_list.xsl, napisan u jeziku XSL, koji e objasniti pretraivau kako da prikae podatke iz XML dokumenta. Na Sl. 6-12 je prikazan primer XSL fajla za formatiranje XML dokumenta sa Sl. 6-11. Nakon neophodnih deklaracija, koje izmeu ostalog sadre URL na XSL standarda, slede tagovi <html> i <body>, koji, slino kao kod HTML-a dokumenta, definiu poetak Web stranice. Zatim sledi definicija tabele, koja sadri naslove i tri kolone.
<?xml version='1.0'?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> <xsl:template match="/"> <html> <body> <table border="2"> <tr> <th> Title </th> <th> Author </th> <th> Year </th> </tr> <xsl:for-each select="book_list/book"> <tr> <td><xsl:value-of select="title"/></td> <td><xsl:value-of select="author"/></td> <td><xsl:value-of select="year"/></td> </tr> </xsl:for-each> </table> </body> </html> </xsl:template> </xsl:stylesheet> Sl. 6-12 Primer XSL fajla.
160
je analogna for naredbi iz C-a, gde prva linija odgovara zaglavlju, pet unutranjih linija telu, a poslednja oznaci za kraj for petlje. Kada pretraiva, koji interpretira dati XSL fajl, on prolazi jedanput kroz petlju za svaku knjigu iz pridruenog XML dokumenta i u svakom prolasku generie pet linija oblika: <tr> naslov, autor, godina </tr>. Drugim reima, pretraiva generie HTML tabelu popunjenu podacima o svim knjigama iz XML dokumenta. Krajnji rezultat je isti kao da se prikazuje HTML stranica koja sadri tabelu popunjenu podacima o tri knjige. Meutim, XML/XSL predstavlja daleko fleksibilnije reenje. Na primer, ako je potrebno u spisak uvrstiti nove knjige, dovoljno je u XML dokument dopisati nova <book> polja; XSL ostaje neizmenjen. (U HTML varijanti, bilo bi neophodno proiriti definiciju tabele novim vrstama). S druge strane, ako treba promeniti nain prikazivanja potrebno je modifikovati XSL fajl, ali ne i XML dokument. Drugo, program koji na Web stranici trai informacije o nekoj knjizi, analizira XML dokument. S obzirom na to da XML dokument sadri tagove koji ukazuju na smisao podataka i nije optereen tagovima za formatiranje, njega je mnogo jednostavnije analizirati od odgovarajueg HTML dokumenta. Treba napomenuti da iako XSL fajl sadri neku vrstu programskih konstrukcija, Web stranice napisane u XML i XSL su i dalje statike. Naima, kao i HTML, XSL daje samo instrukcije Web pretraivau kako da prikae stranicu. Naravno, upotreba XML/XSL-a podrazumeva da je pretraiva u stanju da interpretira XML i XSL, to je danas sluaj sa gotovo svim pretraivaima.
Dokument
Klijent
Server
(b)
161
U drugom sluaju, tzv. aktivni dokumenti, Web stranica osim statikog sadraja (HTML, slike i sl.) sadri i program koji se nakon uitavanja stranice izvrava na strani klijenta (u pretraivau). Na primer, zamislimo da elimo da kreiramo Web stranicu koja sadri animiranu grafiku ili interaktivni grafiki interfejs. S obzirom na to da HTML regulie samo prikaz sadraja stranice na ekranu pretraivaa, neophodan je poseban program koji e kreirati animacije ili omoguiti neku specifinu interakciju sa korisnikom. Takoe, jasno je da se takav jedan program mora izvravati na raunaru klijenta, tj. tamo gde se odvija interakcija sa korisnikom. Uvek kada klijent zahteva aktivni dokument od servera, server alje kopiju dokumenta sa sadranim program koji se po uitavanju izvrava u pretraivau (Sl. 6-13(b)). Dinamiki dokumenti Potreba za generisanjem dinamikih dokumenata na strani servera najlake se moe se sagledati ako razmotrimo korienje HTML formi na ranije opisani nain. Kada korisnik popuni formu i klikne na dugme Submit, pretraiva alje serveru poruku sa sadrajem forme zajedno sa poljima koje je korisnik popunio. Oigledno, ova poruka nije ime fajla koji treba vratiti klijentu, ve se sadraj poruke prosleuje odgovarajuem programu radi procesiranja. Obino, obrada na strani servera podrazumeva pristup bazi podataka (smetenoj na hard disku servera) radi upisa dostavljenih podataka ili itanja zapisa koji odgovaraju dostavljenim podacima i generisanje HTML stranice koja sadri odgovor koji se vraa klijentu. Na primer, poto je na Web stranici neke elektronske prodavnice, korisnik izabrao stavke koje eli da kupi i kliknuo na dugme Submit, podaci uneti na formi se alju serveru gde se pokree program iji je zadatak da kreira HTML stranicu narudbenice, koja e osim naziva i cene izabranih stavki sadrati i ukupnu cenu, PDV, ime i adresu korisnika i sl. Uz to, od programa se oekuje i da podatke o izdatoj narudbi upie u bazu podataka. Na Sl. 6-14 su prikazani koraci koji su potrebni za obradu podataka unetih u HTML formu.
Sl. 6-14 Obrada HTML forme. Korisnik popunjava formu (1). Forma se vraa serveru (2) i predaje CGI-u (3). CGI postavlja upit bazi podataka (4). Iz baze se preuzimaju traeni podaci (5). CGI kreira HTML stranicu (6). Stranica se vraa klijentu (7) i prikazuje u pretraivau (8).
Tradicionalni, i danas ve zastareli nain za procesiranje HTML formi i drugih interaktivnih Web stranica zasnovan je na sistemu koji se zove CGI (Common Gateway Interface - opti interfejs pristupa). CGI predstavlja standardizovani interfejs koji omoguava Web serveru da razgovara sa pozadinskim programima. Po pravilu, pozadinski programi su skripte napisane u jeziku Perl. Drugi uobiajeni nain za generisanje dinamikog sadraja podrazumeva umetanje skripti unutar same HTML stranice. Kada server dobije zahtev za ovakvom stranicom, on izdvaja skript iz stranice i izvrava ga. Primer jezika koji se koristi za pisanje ovakvih skripti je PHP (Hypertext Processor). Da bi PHP mogao da se koristi, server mora da razume PHP jezik (slino kao to pretraiva mora da razume XML da bi bio u stanju da interpretira Web stranicu napisanu u XML-u). Obino, server oekuje da Web stranice koje sadre PHP imaju nastavak .php umesto .html ili .htm. Na Sl. 6-15 je prikazana HTML stranica sa ugraenim jednostavnim PHP skriptom. Osim standardnog HTML-a, stranica sadri jo i PHP skript unutar taga <?php . . . ?> . Efekat ovog skirpta je generisane Web stranice koja sadri opte podatke o klijentu koji je zatraio stranicu. Pretraivai, uz svaki zahtev upuen serveru obino alju i neke dodatne informacije o sebi (tip pretraivaa, jezik, operativni sistem, tip klijentskog raunara, ...), koje se prenose kao vrednost promenljive HTTP_USER_AGENT (deo poruke zahteva). Pretpostavimo da je listing sa Sl. 6-15 smeten u fajlu test.php koji se nalazi na WWW direktorijumu kompanije ABCD. Kada se korisnik obrati URL-u www.abcd.com/test.php, server kompanije ABCD otvara fajl test.php, pronalazi u njemu PHP skript, zamenjuje ga vrednou promenljive HTTP_USER_AGENT iz pristiglog zahteva i tako modifikovanu stranicu vraa klijentu.
<html> <body> <h2>Ovo je sve sta znam o tebi:</h2> <?php echo $HTTP_USER_AGENT?> </body> </html> Sl. 6-15 HTML stranica sa ugraenim PHP-om.
162
PHP je naroito pogodan za procesiranje formi. Razmotrimo primer HTML stranice sa Sl. 6-16(a) koja sadri formu. jedina specifinost ove stranice je sadraj prve linije koja definie da radi obrade podataka unetih u formu i vraenih serveru treba koristiti fajl action.php. Stranica prikazuje dva tekstualna polja, jedno predvieno za unos imena (name) a drugo za unos godine roenja (age) korisnika. Nakon to je korisnik popunio oba polja, klikom na dugme Submit, popunjena stranica (tanije, linija teksta koja sadri unete podatke) se vraa serveru. Server preuzima sadraje polje name i age, a zatim otvara i prolazi kroz fajl action.php (Sl. 6-16(b)) i izvrava svaki PHP skript na koji naie. Pod pretpostavkom da je korisnik u polja name i age upisao Barbara i 24, HTML fajl koji se vraa klijentu imae oblik kao na Sl. 6-16(c).
<html> <body> <form action=action.php method=post> <p>Unesi svoje ime: <input type=text name=name> </p> <p>Koliko imas godina: <input type=text name=age> </p> <input type=submit> </form> </body> </html> (a) <html> <body> <h1> Odgovor:</h1> Zdravo <?php echo $name;?>. Predvidjanje: sledece godine imaces <?php echo $age + 1;?> godina </body> </html> (b) <html> <body> <h1> Odgovor:</h1> Zdravo Barbara. Predvidjanje: sledece godine imaces 25 godina </body> </html> (c) Sl. 6-16 (a) Web stranica sa formom. (b) PHP skript za obradu podataka unetih u formu. (c) Izlaz PHP skripta za ulaze Barbara i 24.
PHP je moan programski jezik, koji se uz to i lako koristi, orijentisan na spregu izmeu Web servera i servera baze podataka. PHP poseduje promenljive, stringove, polja i veinu upravljakih struktura koje sreemo u C-u. PHP je open source i dostupan je za slobodno korienje. Posebno je projektovan za rad sa Apache web serverom (koji je takoe open source). Trea tehnika za dinamiko kreiranje Web stranica je JSP (JavaServer Pages). JSP je slina PHP-u, s tom razlikom to se dinamiki deo stranice pie u programskom jeziku Java, umesto u PHP-u. Stranice koje koriste ovu tehniku obino imaju nastavak .jsp. etvrta tehnika, ASP (Active Server Pages) je Microsoft-ova verzija PHP-a i JSP-a. Za generisane dinamikog sadraja kod ASP se koristi skript jezik Visual Basic Script (ili VB skript). Stranice koje koriste ASP, obino imaju nastavak .asp. Aktivni dokumenti Skript jezici kao to su CGI, PHP, JSP i ASP reavaju problem procesiranja formi i interakcije sa bazama podataka na serveru. Svi oni su u mogunosti da prihvate informacije unete u formu, pretrae informacije u bazi podataka i generiu HTML stranicu sa rezultatima obrade. Meutim, ni jedan od ovih skript jezika nije u stanju da reaguje na klik miem ili da direktno interaguje sa korisnikom koji koristi pretraiva. Za tu namenu, neophodan je program koji e se izvravati u samom pretraivau, na raunaru klijenta umesto na raunaru servera. Web stranica sa pridruenim programom koji se izvrava na strani klijenta naziva se aktivnim dokumentom.
163
Postoje dva naina za kreiranje aktivnih dokumenata. Prvi nain podrazumeva da se program, u obliku binarnog kda, uva na serveru, a da u HTML stranici postoji tag u kome je navedeno ime fajla koji sadri program. Kada HTML interpretator u pretraivau naie na ovakav tag, on najpre preuzima fajl programa od servera, a zatim ga izvrava. Programi ovog tipa najee se piu programskom jeziku Java. Drugi nain je zasnovan na skrip jeziku koji se, slino PHP-u, ugrauje u sam HTML. Meutim, za razliku od PHP skripta koji se izdvaja iz HTML stranice i izvrava na serverskom raunaru, skrip namenjen klijet iz HTML-a izdvaja pretraiva i izvrava ga uz pomo odgovarajueg interpretatora. Najpoznatiji skript jezik za ovu namenu je JavaScript. Java Java je objektno-orijentisan jezik zasnovan na C++. Za razliku od C++, i veine drugih viih programskih jezika, kompajlirani programi pisani u Javi su portabilni, tj. mogu se izvravati na bilo kom raunaru, nezavisno od tipa procesora i operativnog sistema. U terminologiji Jave, kompajlirani program se naziva bajtkdom (bytecode). Bajtkd ne sadri mainske instrukcije za neki konkretan procesor, ve instrukcije koje se izvravaju u interpretatoru za Java bajtkd, tj. u tzv. Java virtuelnoj maini. Bilo koji raunar na kome je instalirana Java virtuelna maina u stanju je da izvrava programe pisane u Javi. U osnovi, bajtkd predstavlja meukd, koji je po sloenosti izmeu Java izvornog kda i mainskog kda. Virtuelna maina izvrava bajtkd tako to u bajtkdu identifikuje pojedinane komande (tzv. metode) i poziva odgovarajue funkcije pisane u mainskom jeziku za ciljnu mainu. Java programi namenjeni za Web nazivaju se apletima. Apleti se uvaju na Web serveru u fajlovima sa nastavkom .class. Aplet se ukljuuje u HTML pomou odgovarajueg taga koji predstavlja instrukciju HTML interpretatoru da od Web servera zatrai .class fajl, naveden u tagu, i prosledi ga virtuelnoj maini gde e aplet biti izvren. Primer jednostavnog apleta je aplet koji reprodukuje audio fajl, kao pozadinsku muziku, za vreme dok je u pretraivau prikazana stranica. Pretpostavimo da je aplet ukljuen u Web stranicu sa URL-om http://www.elfak.ni.ac.yu/ i da je smeten u fajlu bgsound.class, koji se nalazi na URL-u http://www.elfak.ni.ac.yu/java-apps. Tag koji ukljuuje aplet u HTML je sledeeg oblika:
<OBJECT CODEBASE=http://www.elfak.ni.ac.yu/java-apps CLASSID = java:bgsound.class DATA = bgsound.data CODETYPE = audio/MP3></OBJECT>
Tag sadri vie atributa, sledeeg znaenja. Vrednost atributa CLASSID definie ime fajla u kome je smeten aplet. CODEBASE definie server i putanju na kojoj se fajl nalazi. Ime fajla, bgsound.data u kome se uvaju podaci koje aplet treba da procesira navedeno je u atributu DATA. Ovaj fajl sadri podatke tipa audio/MP3, to je navedeno u atributu CODETYPE. Nakon uitavanja, aplet i pratei audio fajl se predaju virtuelnoj maini; aplet se startuje i sadraj audio fajla, u dekodiranom obliku, alje u audio karticu gde se obavlja reprodukcija. Na slian nain, aplet moe sadrati grafiku animaciju ili video. U tom sluaju, kao atributi taga OBJECT navode se dimenzije pravougaone oblasti na ekranu pretraivaa, gde e animacija/video biti prikazani. Java apleti se mogu razumeti i kao fleksibilna zamena za pomone aplikacije i plug_in-ove. Na primer, pretpostavimo da Web stranica sadri sliku u nekom novom grafikom formatu za koji na klijentskom raunaru ne postoji podrka u vidu plug-in-a ili pomone aplikacije i da zbog toga slika ne moe biti prikazana na ekranu pretraivaa. Meutim, ako se za prikazivanje slike koristi aplet, dekoder za novi format moe biti smeten u samom apletu koji se automatski preuzima sa servera prilikom uitavanja stranice u pretraiva. ActiveX kontrole su Microsoft-ov odgovor na Java aplete. ActiveX kontrole se, kao i apleti mogu ugraditi na Web stranicu. ActiveX kontrole su programi kompilirani za Pentium procesore i izvravaju se direktno, bez posredovanja virtuelne maine, kao to je to sluaj kod apleta. Zbog toga je izvrenje ActiveX kontrola znaajno bre od izvravanja apleta, a njihove mogunosti su daleko vee, u smislu korienja raspoloivih softverskih i hardverskih resursa raunara. Kada Internet Explorer u Web stranici primeti pozivanje na ActiveX kontrolu, on je preuzima od servera, verifikuje njen identitet, registruje je na lokalnom raunaru i izvrava. Meutim, pored ograniena da se ActiveX kontrole mogu koristiti samo na Pentium PC raunarima, njihovo korienje moe biti rizino u pogledu sigurnosti. JavaScript Slina funkcionalnost kao sa Java apletima se moe dobiti i korienjem JavaScript jezika, s tom razlikom to je, slino PHP-u, JavaScript skript jezik koji se u izvornom obliku ugrauje u HTML stranicu. JavaScript program se smeta u poseban HTML tag, <script>. Kada HTML interpretator naie na tag <script> on poziva JavaScript interpretator koji izvrava sadrani skript. Uprkos slinom imenu, JavaScript, kao jezik, nema direktne veze sa Javom. Slino drugim skript jezicima, JavaScript sadri programske konstrukcije veoma visokog nivoa. Na primer, u jednoj liniji JavaScript programa
164
mogue je prikazati dijalog za unos teksta, ekati da tekst bude unesen i smestiti uneti tekst u neku promenljivu. Zahvaljujui ovakvim i slinim mogunostima, JavaScript je pogodan za lako projektovanje interaktivnih Web stranica. Takoe, JavaScript poseduje mnoge osobine viih programskih jezika, kao to su tipovi podataka, aritmetiki i logiki operatori, petlje (for(), while()), funkcije itd. Kao primer programa u JavaScript jeziku, razmotrimo listing Web stranice sa Sl. 6-17. Slino primeru sa Sl. 6-16, stranica sadri formu za unos imena i godina korisnika, a po unosu traenih podataka predvia koliko e godina osoba imati sledee godine. Sekcija <body> je gotovo identina kao u primeru za PHP. Glavna razlika je u deklaraciji Submit dugmeta i naredbe dodele sadrane u ovoj deklaraciji. Ova naredba dodele kazuje pretraivau da kao odgovor na klik dugmeta (dogaaj onclick) treba izvriti JavaScript funkciju response i kao parametar preneti joj formu.
<html> <head> <script language="javascript" type="text/javascript"> function response(test_form){ var person = test_form.name.value; var years = eval(test_form.age.value) + 1; document.open(); document.writeln("<html><body>"); document.writeln("Zdravo" + person + ".<br>"); document.writeln("Predvidjanje: sledece godine imaces" + years + "."); document.writeln("<body><html>"); document.close(); } </script> </head> <body> <form> Unesi svoje ime: <input type="text" name="name"> <p> Koliko imas godina?: <input type="text" name="age"> <p> <input type=submit value="submit" onclick="response(this.form)"></form> </body> </html> Sl. 6-17 Procesiranje forme pomou JavaScript-a.
Funkcija responese() napisana je u zaglavlju HTML fajla, na mestu koje je inae rezervisano za naslov stranice, boju pozadine i sl. Ova funkcija izdvaja iz forme vrednost polja name i pamti je kao string u promenljivoj person. Takoe, funkcija izdvaja i vrednost polja age, konvertuje je u ceo broj, korienjem funkcije eval(), dodaje 1-cu i rezultat pamti u promenljivu years. Nakon toga, funkcija otvara novi dokument za prikaz rezultata i ispisuje etiri linije teksta korienjem funkcije writeln() i, konano, zatvara dokument. Kreirani dokument je HTML fajl, kao to se lako moe zakljuiti na osnovu HTML tagova koje funkcija response zajedno sa ostalim tekstom upisuje u dokument. Sa take gledita krajnjeg korisnika, krajnji rezultat oba primera (Sl. 6-16 i Sl. 6-17) je isti. Meutim, bitno je razumeti da se naini obrade ova dva primera sutinski razlikuju. U primeru koji koristi PHP, nakon klika na dugme Submit, pretraiva izdvaja informacije iz forme i u vidu stringa ih alje nazad serveru koji je poslao stranicu. Server prepoznaje ime PHP fajla i izvrava ga. PHP skript kreira novu HTML stranicu koja se vraa pretraivau i prikazuje. S druge strane, u primeru koji koristi JavaScript, nakon klika na dugme Submiti, pretraiva interpretira JavaScript funkciju sadranu u samoj stranici. Ne postoji novi kontakt sa serverom, ve se sve e obavlja lokalno, unutar pretraivaa. Zbog toga se rezultat obrade pojavljuju gotovo trenutno, za razliku od primera sa PHP gde postoji izvesno neizbeno kanjenje (reda do nekoliko sekundi) dok rezultujui HTML fajl ne stigne nazad do pretraivaa. Na Sl. 6-18 je ilustrovana razlika izmeu procesiranja skripti na strani klijenta i strani servera. U oba sluaja, korak 1 poinje nakon to je forma uitana u pretraiva. Korak 2 iniciran je klikom na dugme Submit, a nakon toga sledi procesiranje forme, koje u ova dva sluaja tee na razliite naine.
(a) (b) Sl. 6-18 Procesiranje skripta: (a) na strani servera (PHP); (b) na strani klijenta (JavaScript)
165
Ove razlike ne znae da je JavaScript bolji od PHP-a. Namena ova dva skrip jezika je potpuno razliita. PHP (i srodni skript jezici) prevashodno se koriste za interakciju sa udaljenom bazom podataka. JavaScript se koristi za interakciju sa korisnikom na strani klijentskog raunara. Mogue je, i uobiajeno, da Web stranica sadri oba skript jezika, sa raspodeljenim zadacima.
Sl. 6-19 ilustruje razliite tehnike za kreiranje dinamikih i aktivnih Web stranica, o kojima je bilo rei u ovoj sekciji. Dinamike Web stranice se generiu na strani servera, uz pomo razliitih skript jezika (Perl, PHP, JSP ili ASP), a klijent dobija standardnu HTML stranicu koju prosto treba da prikae. Aktivne Web stranice sadre ugraene skriptove (pisane u JavaSctipt jeziku) ili hiperveze na kompletne programe (u vidu Java apleta ili ActiveX kontrola) koji se nakon uitavanja izvravaju na klijentskom raunaru, to omoguava kreiranje interaktivnih korisnikih interfejsa, pa ak i sloena procesiranja grafikih, audio ili video sadraja. Web stranice napisane u XML-u se shodno pridruenom XSL fajlu u samom pretraivau konvertuju u HTML, to takoe predstavlja neku formu aktivnog sadraja. Konano, plug-in-ovi i pomone aplikacije predstavljaju proirenja pretraivaa i koriste se za prikazivanje multimedijalnih sadraja razliitih formata.
6.7 HTTP
HTTP (HyperText Transfer Protokol - protokol za prenos hiperteksta) je protokol koji se koristi za pristup podacima na Web-u. HTTP je klijent-server protokol aplikacionog sloja TCP/IP steka, koji, slino protokolima SMTP ili FTP, za transport poruka koristi TCP. U veini sluajeva, HTTP klijent (pretraiva) zahteva Web stranicu, a HTTP server (Web server) isporuuje njenu kopiju. Meutim, HTTP dozvoljava i prenos od pretraivaa ka serveru (npr. kada korisnik serveru alje formu). HTTP je slian FTP-u, ali je mnogo jednostavniji jer koristi samo jednu TCP konekciju: ne postoji posebna kontrolna konekcija, a izmeu klijenta i servera se prenose samo podaci. Takoe, HTTP je slian SMTP-u, jer sadri koji se prenosi izmeu klijenta i servera lii na SMTP poruku. Uz to, za kontrolu formatiranja poruke se, kao i kod SMTP, koristi MIME. Za razliku od SMTP, HTTP poruke nisu direktno nemenjene ljudima, ve ih itaju i interpretiraju HTTP klijent i HTTP server. Trajanje veze Broj porta HTTP protokola je 80. Web server neprekidno oslukuje TCP port 80, ekajui da neki pretraiva zatrai otvaranje TCP konekcije. S druge strane, pretraiva koji eli da pribavi Web stranicu poznatog URL-a, inicira otvaranje TCP konekcije na portu 80 sa serverom ije je ime navedeno u URL-u. (Naravno, ovome prethodi interakcija sa DNS serverom radi konverzije DNS imena servera u IP adresu). Kada je TCP konekcija uspostavljena, pretraiva alje serveru HTTP zahtev koji sadri putanju i ime traenog fajla. Web server odgovara prenosom fajla, a po zavrenom prenosu zatvara TCP konekciju. Ako uitana Web stranica sadri slike ili neki drugi dodatni sadraj, neophodno je da pretraiva radi prenosa svakog takvog entiteta uspostavi novu TCP konekciju sa serverom. Ovakav nain rada, naziva se neperzistentnom vezom, i karakteristian je za prvobitne verzije HTTP protokola (konkretno verzije 0.9 i 1.0). Neperzistentni nain rada je izrazito neefikasan ako se prenose Web stranice koje osim HTML-a sadre i vei broj slika, ikona ili drugih prateih sadraja (to je sluaj sa veinom Web stranica koje danas viamo na Webu). Uspostavljane TCP konekcije generie dodatni saobraaj u mrei i unosi izvesno kanjenje, to ima za posledicu sporo uitavanje ovakvih Web stranica. Iz tog razloga, godine 1999. uvedena je nova verzija HTTP protokola, verzija 1.1, koja podrava perzistentne (trajne) veze klijenta i servera. Kod perzistentnog naina rada, pretraiva uspostavlja inicijalnu TCP konekciju, zatim alje zahtev i dobija odgovor (kao kod HTTP 1.0). Meutim, nakon slanja odgovora, server ne zatvara TCP konekciju, ve je ostavlja otvorenom dajui priliku pretraivau da preko iste TCP konekcije uputi dodatne zahteve. Tipino, server zatvara TCP konekciju po isteku nekog zadatog vremena nakon poslednje upuenog zahteva. Na ovaj nain se dodatna optereenja usled uspostavljanja i raskidanja TCP konekcije raspodjeljuju na vie HTTP zahteva/odgovora tako da je relativno dodatno optereenje na nivou celokupne Web stranice znaajno manje.
166
HTTP transakcija HTTP je klijent-server protokol kod koga se komunikaciju obavlja nizom transakcija: klijent alje poruku zahteva, a server odgovara porukom odziva. Formati poruka HTTP predvia dva generalna tipa poruka koje se razmenjuju izmeu klijenta i servera (Sl. 6-20). HTTP poruke se sastoje od jedne ili vie linija NVT ASCII teksta. Prva linija zahteva sadri metod ili tip zahteva, a prva linija odgovora informaciju o statusu odgovora. Oba tipa poruke sadre zaglavlje koje od tela poruke odvojeno jednom praznom linijom. Telo poruke je u oba sluaja opciono (ne mora da postoji) i koristi se za prenos sadraja poruke. Poev od verzije 1.1 HTTP podrava MIME kodiranje sadraja (slino kao kod SMTP protokola).
(a) (b) Sl. 6-20 Formati HTTP poruka: (a) format zahteva; (b) format odgovora.
Metodi HTTP je zamiljen optije od prostog protokola za komunikaciju tipa zahtev/odgovor. HTTP predvia vie razliitih tipova zahteva koje klijent moe da uputi serveru. U terminologiji HTTP standarda tipovi zahtevi se zovu metodi. Osim osnovnog metoda GET koji slui za pribavljanje Web stranice, HTTP predvia jo nekoliko dodatnih metoda navedenih u tabeli sa Sl. 6-21.
Metod GET HEAD PUT POST DELETE TRACE CONNECT OPTIONS Opis Zahtev za itanjem Web stranice Zahtev za itanjem zaglavlja Web stranice Zahtev za prenos Web stranice na server Dodavanje sadraja imenovanom resursu (npr. Web stranici) Zahtev za brisanjem Web stranice na serveru Echo poslatog zahteva Rezervisano za neku buduu namenu Upit koji se odnosi na neke parametre servera Sl. 6-21 HTTP metodi.
Metod GET zahteva od servera da poalje traenu stranicu. (Ovde se pod stranicom misli na objekat koji moe biti HTML stranica, slika, Java aplet i sl, tj. na fajl). Stanica koja se vraa ne mora da sadri samo ASCII tekst, a za identifikaciju tip sadraja koristi se MIME, slino kao kod e-mail protokola. Najvei broj HTTP zahteva koji se javljaju na Web-u su upravo tipa GET. Uobiajeni oblik metoda GET je:
GET ime_fajla HTTP /1.1
gde je ime_fajla ime resursa (fajla) koji se trai, a 1.1 verzija HTTP protokola koji se koristi. Metod HEAD trai od servera ne celu stranicu ve samo njeno zaglavlje. Ovaj metod se moe koristiti za pribavljane informacije o datumu i vremenu kada je stranica poslednji put modifikovana, za prikupljanje drugih informacija o stranici i njenom sadraju ili prosto za testiranje validnosti URL-a (da li je na datom URL-u prisutna stranica). Metod PUT je suprotan metodu GET: umesto itanja, ovaj metod upisuje stranicu na Web server. Uz pomo ovog metoda mogue je postaviti Web stranicu na udaljeni Web server. Stranica je sadrana u telu PUT zahteva. Stanica ne mora biti tekst, a njen MIME tip naveden je polju Content-Type zaglavlja zahteva. Takoe, zaglavlje zahteva sadri i podatke za autorizaciju kojima klijent dokazuje da ima pravo da izvri zahtevanu operaciju. Metod POST je slian metodu PUT. Za razliku od PUT, kojim se na server postavlja nova stranica (ili zamenjuje postojea), metod POST se koristi da se u resurs (u najoptijem smislu) koji se nalazi na datom
167
URL-u, upiu (dodaju) novi podaci. Postavljanje nove poruke na nekom Web forumu, primer je ovog tipa operacije. Meutim, u praksi metod POST, kao i PUT, se retko koristi. Metod DELETE slui za brisanje (uklanjanje) stranice sa Web servera. Kao i kod PUT, u zaglavlju zahteva tipa DELETE moraju postojati podaci za autorizaciju. Metod TRACE se koristi za testiranje veze sa serverom. Ovaj metod nalae serveru da nazad vrati primljenu poruku zahteva. TRACE je koristan u sluajevima kada se zahtevi ne obrauju korektno, a klijent eli da sazna da li zahtevi uopte dolaze do servera. Metod CONNECT nema definisanu namenu, ve je rezervisan za neku eventualnu buduu primenu. Metod OPTIONS omoguava klijentu da postavi upit serveru koji se odnosi na izvesne parametre rada servera ili parametre nekog konkretnog fajla. Status U prvoj liniji svaki odgovor kojeg server vraa klijentu sadran je trocifreni kd statusa koji klijentu treba da ukae da li je njegov zahtev uspeno opslue ili nije i ako nije zato nije. Prva cifra statusnog kda slui za podelu odziva na pet glavnih grupa (Sl. 6-22). Kd 1xx (x - proizvoljna cifra) se retko koristi u praksi. K 2xx znai da je zahtev uspeno obraen i da poruka sadri traeni sadraj. Kd 3xx govori klijentu da traenu stranicu potrai na nekom drugom URL-u ili u svom keu (kasnije e biti vie rei o keiranju). Kd 4xx znai da zahtev nije opsluen, bilo zato to je u samom zahtevu uoena greka ili zato to je klijent zatraio nepostojeu stranicu. Konano, kd 5xx obavetava klijenta da na strani servera postoje problemi, bilo zbog greke u programu Web servera bilo zato to je server privremeno preoptereen.
Kd 1xx 2xx 3xx 4xx 5xx Znaenje Informativno Uspeno Preusmeravanje Greka klijenta Greka servera Primer 100 - server pristaje da obradi klijentov zahtev 200 - zahtev je prihvaen i obraen; 204 - odgovor ne sadri telo 301 - stranica je premetena na drugu URL lokaciju; 304 - keirana stranica je jo uvek validna. 403 - zabranjen pristup stranici; 404 - stranica nije pronaena. 500 - interna greka servera; 503 - kasnije pokuaj ponovo Sl. 6-22 Grupe statusnih kdova.
Zaglavlja poruka Nakon linije metoda u poruci zahteva sledi jedna ili vie linija zaglavlja koje sadre dodatne informacije o zahtevu. Za svaku liniju ove sekcije se kae da predstavlja jedno zaglavlje zahteva. Poruka odziva takoe moe sadrati zaglavlja (jedno ili vie). Neka zaglavlja se koriste i kod zahteva i kod odgovora. U tabeli sa Sl. 6-23 navedena su najvanija zaglavlja.
Zaglavlje User-Agent Accept Accept-Charset Accept-Encoding Accept-Language Host Authorization Cookie Date Server Content-Encoding Content-Language Content-Length Content-Type Last-Modified Location Set-Cookie Tip Zahtev Zahtev Zahtev Zahtev Zahtev Zahtev Zahtev Zahtev Zahtev/Odgovor Odgovor Odgovor Odgovor Odgovor Odgovor Odgovor Odgovor Odgovor Sadraj Informacija o pretraivau i platformi Tip stranica koje klijent moe da procesira Skup karaktera koji je prihvatljiv za klijenta Kodiranje stranice koje klijent moe da procesira Prirodni jezik koji klijent moe da procesira DNS ime servera Podaci za autorizaciju klijenta Sadri cookie kojeg je server prethodno poslao klijentu Datum i vreme slanja poruke Opte informacije o serveru Nain kodiranja stranice Prirodni jezik korien na stranici Veliina stranice u bajtovima MIME tip stranice Datum i vreme poslednje promene stranice Instrukcija klijentu da zahtev poalje na neko drugo mesto Sadri cookie kojeg server alje klijentu
Zaglavlje User-Agent (korisniki agent) omoguava da klijent obavesti servera o tipu pretraivaa koji koristi, operativnom sistemu i drugim osobinama. etiri zaglavlja koja poinju sa Accept obavetavaju servera kakav sadraj je klijent spreman da prihvata. Prvo od ovih zaglavlja (Accept) navodi MIME tip
168
stranice koji klijentov pretraiva moe da obradi (npr. text/html). Drugo (Accept-Charset) definie skup karaktera (npr. ISO-8859-5 ili Unicode-1-1) koji klijent prepoznaje. Tree (Accept-Encoding) definie metod kompresije koji klijent podrava (npr. gzip), a etvrto (Accept-Language) ukazuje na prirodni jezik (npr. Srpski) koji korisnik razume. Ako server ima mogunost izbora stranice (npr. postoji vie varijanti iste stranice), on e izabrati o vratiti klijentu onu koja se uklapa u postavljene zahteve. Ako server nije u mogunosti da udovolji zahtevima klijenta, vratie odgovor sa postavljenim odgovarajuim kodom greke. Zaglavlje Host sadri ime servera, preuzeto iz URL-a. Ovo zaglavlje je obavezno jer se moe desiti da za istu IP adresu budu vezana vie DNS imena. Ispitivanjem sadraja ovog polja, sever proverava da li se zahtev odnosi ba na njega. Zaglavlje Authorization je neophodno za stranice koje su zatiene i za koje je klijent u obavezi da dokae da ima pravo da vidi stranicu. Cookie-ima su posveena dva zaglavlja. Preko zaglavlja Cookie klijent vraa serveru sadraj cookie-a kojeg je ranije poslat klijentu od strane neke maine iz domena servera. Server alje cookie klijentu u obliku sadraja zaglavlja Set-Cookie. Kao to znamo, klijent je u obavezi da zapamti cookie na svoj hard disk, i vrati ga serveru pri svakom narednom obraanju. Zaglavlje Date (datum) se moe koristiti u oba smera i sadri vreme i datum kada je poruka poslata. Slede zaglavlja koja se javljaju iskljuivu u odgovorima koje server alje klijentu. Zaglavlje Server omoguava serveru da saopti svoj identitet klijentu, ako eli. Sledea etiri zaglavlja, koja poinju sa Content- (sadraj) omoguavaju serveru da opie osobine stranice koje alje. (Znaenje ovih zaglavlja je analogno odgovarajuim Accept- zaglavljima). Zaglavlje Last-Modified sadri datum i vreme kada je stranica poslednji put modifikovana. Ovo zaglavlja ima bitnu ulogu u keiranju stranica. Server koristi zaglavlje Location kada eli da obavesti klijenta da bi trebalo da pokua da potrai zahtevanu stranicu na nekom drugom URL-u. Ova mogunost se koristi ako je stranica premetena na drugu lokaciju ili ako vie od jednog URL-a ukazuje na istu stranicu. Na primer, neka internacionala kompanija moe nakon prijema zahteva za njenu glavnu stranicu na .com domenu, da preusmeri klijenta, na osnovu njegove IP adrese, na jednu od svojih nacionalnih ili regionalnih stranicu. Na Sl. 6-24 je prikazan izgled jednog kompletnog HTTP odgovora. Prva linija sadri status odgovora, koji je u ovom sluaju pozitivan. Sledi vei broj zaglavlja, zatim jedna prazna linija i konano sama Web stranica. Zaglavlje ETag sadri jedinstveni identifikator stranice. Ovo zaglavlje se koristi prilikom keiranja stranica.
169
Proxy server je posrednik izmeu lokalnih (intranet) korisnika i Web-a (Sl. 6-25) i omoguava optimizaciju kojom se smanjuje ekanje klijenata na pribavljanje zahtevanih Web stranica. Web pretraivai u mrei koja koristi proxy server su konfigurisani tako da svoje HTTP zahteve ne upuuju direktno udaljenim Web serverima ve ih alju lokalnom proxy serveru koji u njihovo ime obavlja zahtevanu transakciju. Kada prvi korisnik u korporaciji pristupi odreenoj Web stranici, proxy mora da pribavi kopiju od servera na kome se stranica nalazi. Proxy ostavlja kopiju u svom keu i vraa traenu stranicu kao odgovor na zahtev. Kada sledei put neki korisnik pristupi istoj stranici, proxy uzima podatke iz svog kea i ne alje zahtev preko Interneta. Proxy serveri su bitan deo arhitekture Web-a. Osim to efektivno skrauju vreme pribavljanja Web stranica, proxy serveri znaajno redukuju saobraaj na Internetu i smanjuju optereenje Web servera.
Koncept proxy servera i keiranja nije ograniena samo na korporacijski intranet, ve se primenjuje i u drugim kontekstima. Na primer, proxy server ne mora biti raunar na lokalnoj mrei, ve moe biti i proces pokrenut na PC raunaru. Takoe, mnogi provajderi internet usluga (ISP) poseduju proxy server sa ciljem da svojim korisnicima ubrzaju pristup Web-u (i u isto vreme smanje protok podataka prema nadreenom ISP-u). esto, postoji hijerarhija proxy servera. Zahtev se najpre alje lokalnom proxy serveru, koji, ako nije u stanju da opslui zahtev, zahtev prosleuje npr. korporacijskom proxy serveru, a ovaj proxy serveru provajdera internet usluga i tako redom sve dok se u nekom keu ne pronae traena stranica. Tek ako stranica ne postoji u keu proxy servera na vrhu hijerarhije, ona se direktno trai od Web servera, a onda prosleuje nazad do pretraivaa koji je uputio zahtev i pri tome pamti u keevima svih posrednih proxy servera.
HTTP sadri eksplicitnu podrku za proxy servere. Protokol tano odreuje nain na koji proksi obrauje svaki zahtev, kako proksi treba da tumai zaglavlje, kako pretraiva pregovara sa proksijem i kako proksi pregovara sa serverom. Nekoliko HTTP zaglavlja je posebno namenjeno za proksije. Na primer, HTTP omoguava serveru da kontrolie kako proksiji obrauju svaku Web stranicu. Server moe u odgovoru da ukljui zaglavlje Max_Forwards i tako ogranii broj proksija koji obrauju stavku pre nego to se ona isporui pretraivau. Ako server odredi samo jedan, Max_Forewards: 1, na putanji od servera do pretraivaa dozvoljen je samo jedan proksi. Nula znai da je zabranjeno da proksi obrauju stavku. Keiranje Eliminisanjem nepotrebnih prenosa, proxy ke smanjuje i vreme ekanja i mreni saobraaj. Glavni aspekt keiranja jeste privremeno uvanje stranica, a glavno pitanje tie se vremena uvanja stranice, tj. koliko dugo treba stavku uvati u keu. S jedne strane, ako se kopija predugo uva u keu ona moe da zastari, to se deava ako je original u meuvremenu, nakon to je kopija uneta u ke, promenjen. S druge strane, ako se kopija ne uva dovoljno dugo, dolazi do smanjenja efikasnosti keiranja zato to sledei zahtev mora nepotrebno da ide do servera. Pojedine Web stranice su podlone estim promenama (npr. stranica sa rezultatima fudbalskih utakmica), dok druge mogu ostati neizmenjene u duem vremenskom intervalu (npr. stranica posveena Grkoj mitologiji). Takoe, sklonost stranice promenama moe da varira u vremenu (npr. stranica sa rezultatima fudbalskih utakmica se brzom menja samo dok utakmica traja, a onda ostaje neizmenjena do sledeeg kola). Takoe, neke stranice se ni u kom sluaju ne mogu keirati. To je sluaj sa dinamikim Web stranicama koje se generiu na strani servera na osnovu postavljenog upita. HTTP dozvoljava da server kontrolie keiranje na dva naina. Prvi nain se oslanja na informaciju iz zaglavlja odgovora Last-Modified kada odreuje koliko dugo e stranica biti uvana u keu. Ako je stranica koja se upravo stavlja u ke promenjena pre jednog sata, ona e biti uvana u keu jedan sat. Ako je promenjena pre dva
170
meseca, u keu e ostati dva meseca. Iako ovaj pristup esto dobro radi u praksi, on je zasnovan na predvianjima i zato ne garantuje da e pretraivau uvek biti vraena aurna kopija stranice.
GET /page.htm HTTP /1.1 GET /page.htm HTTP /1.1 If-Modified-Since: datum, vreme 1 Pretraiva 4 HTTP /1.1 200 Accepted Content-type: text/html [zahtevana HTML stranica u telu poruke] Proksi server 3 HTTP /1.1 304 Not-modified [prazno telo poruke] 2 Web server
Drugi pristup eliminie mogunost da pretraiva dobije zastarelu strancu, ali na raun izvesnog poveanja saobraaja i vremena ekanja na pribavljanje stranice. Pristup se oslanja na tzv. uslovni GET zahtev, koji proxy moe da poalje serveru kako bi proverio aurnost keirane stranice. Uslovni GET zahtev je HTTP poruka koja sadri zaglavlje If-Modified-Since (ako je modifikovana posle ...). Procedura je ilustrovana na Sl. 6-27 i odvija se na sledei nain: Pretraiva upuuje standardni GET zahtev proxy-ju (korak 1). Pretpostavimo da proxy u svom keu ima traenu stranicu. Svakoj keiranoj stranici pridruena je informacija o datumu i vremenu kada je stranica keirana. Ova informacija je preuzeta iz polja Last-Modified HTTP poruke kojom je originalna stranica ranije preneta od servera do proxy-ja. Pre nego to pretraivau vrati keiranu stranicu, proxy alje uslovnu GET poruku serveru sa upisanim vremenom poslednje modifikacije keirane kopije u zaglavlju If-Modified-Since (korak 2). Na Sl. 6-27 je pretpostavljeno da stranica nije modifikovana u meuvremenu, tj. od datuma i vremena navedenih u zaglavlju If-Modified-Since. Zbog toga server vraa proxy-ju kratak odgovor sa statusnim kodom 304 (Not modified - nije modifikovana) i bez tela (korak 3). Po prijemu odgovora, proxy vraa keiranu stranicu pretraivau (korak 4). U sluaju da je zahtevana stranica u meuvremenu bila modifikovana, server e vratiti proxy-ju novu kopiju stranice, koju e proxy smestiti u ke (zajedno sa datumom i vremenom iz zaglavlja LastModified) pre nego to je prosledi pretraivau. Dva pristupa za kontrolu vremena keiranja se lako mogu kombinovati. Na primer, prvih T sekundi nakon pribavljanja stranice proxy vraa pretraivaima keiranu kopiju bez postavljanja pitanja serveru. Po isteku T sekundi, proxy koristi uslovnu GET poruku za proveru aurnosti kopije. Jo jedan nain za poboljanje performansi keiranja naziva se proaktivnim keiranjem. Kada proksi pribavi stranicu od servera, on je analizira i izdvaja sadrane hiperveze. Nakon toga, proksi moe da pribavi i smesti u svoj ke stranice na koje ukazuju izdvojene hiperveze, za sluaj da korisnik naknadno zatrai neku od njih. Na ovaj nain mogue je skratiti vreme pristupa za budue zahteve za sluaj da korisnik izabere neki od linkova na upravo uitanoj stranici. Meutim, pribavljajui i stranice koje nikada nee biti potrebne, ova tehnika ne smanjuje ve poveava saobraaj na Internetu.
6.9 Firewall
Danas se na veini lokalnih, korporacijskih mrea koristi isti skup protokola kao i na Internetu (TCP/IP), a takve mree se nazivaju intranetima. Korienje Internet protokola na intranet mrei ima dvojako opravdanje. Prvo, olakan je pristup Web-u od strane raunara povezanih na intranet (lokalni raunari na isti nain komuniciraju meusobno kao i sa udaljenim serverima). Drugo, omogueno je spoljnim Internet korisnicima da pristupaju informacijama i servisima dostupnim na korporacijskim serverima (kao to je korporacijski Web server). Meutim, iz sigurnosnih razloga, spoljnim korisnicima obino nije dozvoljen direktan pristup korporacijskim serverima, ve se ostvaruje posredstvom specijalizovanog server, tzv. firewall ili sigurnosni gateway, koji nadgleda i filtrira mrei saobraaj.
Kao to se moe videti sa Sl. 6-28, firewall kontrolie protok informacija u oba smera (kao iz tako i u intranet). Firewall presree i filtrira pakete koji su sa Interneta upueni lokalnim serverima, kao i sve zahteve koji se iz
171
intraneta alju prema Internetu. Filtriranje se obavlja na osnovu izvornih i odredinih IP adresama i brojevima portova sadranim u TCP/UDP paketima ili na bazi nekih drugih kriterijuma. Firewall moe biti konfigurisan tako da prosleuje ka intranetu samo pakete koji su upueni na odreene lokalne IP adrese i/ili samo ako su paketi poslati iz nekog odreenog domena, a da sve ostale ponitava. Takoe, firewall moe da uvede restrikcije koje se odnose na brojeve portova. Na primer, firewall moe biti tako podeen da ponitava sve dolazne TCP pakete sa brojem odredinog porta 20 ili 21 i da na taj nain onemogui pristup bilo kom lokalnom FTP serveru. Sline restrikcije mogu biti uvedene i za pakete koji se iz intraneta alju ka Internetu. Na primer, administrator intraneta moe da konfigurie firwall tako da prema Internetu proputa smo TCP paketa sa odredinim brojem porta 80 i da tako lokalnim korisnicima omogui korienje globalnog Web-a, ali u isto vreme i zabrani pristup ostalim servisima dostupnim na Internetu.
172
izrada (composition) - proces kreiranja poruka i odgovora na poruke prijenos (transfer) - prenoenje poruka od poiljatelje do primatelja (uspostavljanje veze - sa odreditem ili nekim strojem na putu, slanje poruke, oslobaanje veze) 3. izvjetavanje (reporting) - da li je poruka dostavljena ili nije 4. prikaz (displaying) - da bi se proitale primljene poruke 5. rasporeivanje (disposition) - spremanje, brisanje, prosljeivanje... primljenih poruka
uz osnovne, veina email sustava podrava i dodatne funkcije (npr. automatsko prosljeivanje poruka na drugu adresu, kreiranje razliitih potanskih pretinaca (mailboxes, folders) za uvanje poruka, kreiranje potanskih listi (mailing lists), kreiranje ifriranog emaila, definiranje prioriteta poruka...) kod email sustava razlikuje se omotnica (envelope) i sadraj omotnica ukljuuje unutar sebe poruku i sadri sve informacije koje su prijenosnim agentima potrebne za prijenos poruke, odnosno za usmjeravanje na pravu adresu
poruka unutar omotnice sastoji se od zaglavlja (header) sa kontrolnim podacima za korisnike agente i tijela (body) sa samom porukom
Slika: primjer poruke pripremljene za slanje u MS Outlook Express programu itanje poruka prikaz poruka s razliitim poljima
ASCII email po RFC 822 poruka se sastoji od primitivne omotnice, nekoliko polja zaglavlja, praznog retka i tijela poruke; svako polje zaglavlja se sastoji od jednog retka ASCII teksta sa imenom polja, dvotokom i (za veinu polja) vrijednosti glavna polja koja se odnose na prijenos poruka: To: Cc: Bcc: From: Sender: Received: Return-Path: email adresa primaoca email adrese osoba kojima su poslane kopije poruka email adrese osoba kojima su poslane kopije, a ostali primaoci ih ne vide osoba koja je kreirala poruku email adresa poiljaoca kako je poruka putovala od polazine adrese do odredita biljei se staza do poiljaoca
Najea dodatna polja koja koriste e-mail klijenti ili sami korisnici su: Date: Reply-To: Message-Id: In-Reply-To: References: Subject: datum i vrijeme slanja email adresa na koju e se poslati odgovor jedinstveni broj poruke za kasnije referenciranje Message-Id poruke na koju se odgovorilo ostali vani Message-Id naslov poruke
korisnicima je dozvoljeno definirati nova polja za vlastitu upotrebu uz uvjet da njihova imena poinju s X- kako se ne bi zamijenila za slubeno definirana polja Primjer: X-Mailer: polje sadri podatak o email programu koritenom za slanje poruke
kod RFC 822 problem za poruke koje pisane na jezicima s posebnim znakovima ili koje sadre netekstualne sadraje (slike, zvuk,...) i dalje se koristi RFC 822 format, ali se u tijelo poruke dodaje nova struktura i definiraju se pravila ifriranja za poruke koje nisu ASCII na taj se nain MIME poruke mogu slati koritenjem postojeih mail programa i protokola MIME definira 5 novih zaglavlje poruka:
MIME-Version:
govori da je rije o MIME poruci odreene verzije (poruka koja nema to polje smatra se obinom tekstualnom porukom) ACSII string koji govori primatelju to je u poruci slui za identificiranje sadraja nain kodiranja (ifriranja) netekstualnog dijela odreuje tip i podtip tijela poruke, npr. video/mpeg
MIME-Version: - govori korisnikom agentu da je rije o MIME poruci odreene verzije (poruka koja nema to polje smatra se obinom tekstualnom porukom) 2. Content-Description: - ACSII string koji govori primatelju to je u poruci 3. Content-ID: - za identificiranje sadraja 4. Content-Transfer-Encoding: - na koji nain je netekstualni dio ifriran da se moe prenijeti mreom, moe se koristiti 5 shema:
1.
obian ASCII tekst - znakovi koriste 7 bita, a dostavljaju se direktno pomou email protokola (ako reci ne prelaze duinu od 1000 znakova) 8-bitno ifriranje - naruava originalni Internet email protokol, pa mu je potrebno implementirati neka dodatke binarno ifriranje - za slanje binarnih datoteka koje ne potuju ogranienje od 1000 znakova u redu; nepouzdano, bolji nain: base64 ifriranje - grupe od 24 bita razbijene su u etiri 6-bitna dijela i svaki se alje kao ASCII znak; ifra (odreuje se za svaku vrijednost od 0-63) je A za 0, B za 1, ..., nakon velikih slova slijedi 26 malih, zatim 10 brojki i na kraju + za 62 i / za 63; znakovi == i = oznaavaju da zadnja grupa ima samo 8, odnosno 16 bita quoted-printable ifriranje - 7-bitni ASCII kod kojeg su svi znakovi iznad 127 ifrirani kao znak = nakon kojeg slijedi vrijednost znaka kao 2 heksadecimalne znamenke; koristio se za poruke koje su gotovo cijele ACSII osim nekoliko ne-ASCII znakova
5. Content-Type: - odreuje tip i podtip tijela poruke, npr: Content-Type: video/mpeg MIME tipovi i podtipovi koji su bili poetno definirani (u RFC 1521): text/plain text/richtext
image/gif image/jpeg audio/basic video/mpeg application/octet-stream application/postscript message/rfc822 message/partial message/external-body multipart/mixed multipart/alternative multipart/parallel multipart/digest
Text, Image, Audio, Video i Application tipovi se odnose na sam multimedijski sadraj koji se alje porukom, Message navodi kako je jedna poruka ukljuena u drugu (npr. kod prosljeivanja) Multipart opisuje poruku koja se sastoji od vie dijelova pri emu svaki dio ima jasno oznaen poetak i kraj
Na primjer: multipart/alternative za poruku koja je poslana i kao obini tekst i kao HTML tekst multipart/mixed za poruku s tekstom i sa slikom kao dodatkom danas su proireni novim tipovima i podtipovima, na primjer za poruku koja sadri HTML tekst - Content-Type: text/html
IMAP (Interactive Mail Access Protocol) sloeniji od POP3 i omoguuje odravanje pote na serveru koritenjem razliitih udaljenih raunala pota se ne kopira sa servera na osobno raunalo jer ih korisnik moe imati vie (raunalo u uredu, kod kue, prijenosno raunalo) ovaj protokol ne podravaju svi ISP niti svi email klijenti
Webmail poruke se itaju i alju putem Web suelja koriste se HTML forme za unos podataka i programi na serveru koji sadraj mailboxa formatiraju i kreiraju HTML stranu za prikaz u pregledniku
Filtriranje poruka mogunost koju imaju dananji korisniki e-mail programi je definiranje filtera sastoje se od uvjeta i akcije i primjenjuju se na dolazee poruke primjer: slanje spam poruka u posebne mape
PRINCIP SIGURNOSTI
TA JE SIGURNOST??? * Sigurnost je proces. Sigurnost nije proizvod, usluga ili procedura, ve skup koji ih sadri uz jo mnogo elemenata i mera koje se stalno sprovode. * Ne postoji apsolutna sigurnost. * Uz razliite metode zatite, treba imati u vidu i ljudski faktor, sa svim slabostima. Treba takoe imati u vidu sledee: kao i u drugim sistemima i oblastima, sigurnosni mehanizmi ili procedure vrlo esto smanjuju udobnost rada ili pogoravaju performanse sistema. Kratkorono gledano, to moe negativno uticati na opte efekte rada; dugorono, ove mere pozitivno utiu na uspeh u radu, to jest, na profit komercijalnih organizacija. To se ogleda i kroz materijalne pokazatelje, i kroz pokazatelje koji nisu direktno materijalni, kao to su rast ili gubitak reputacije tj. ugleda, zavisno od toga da li se deavaju ili ne deavaju incidenti. Sigurnost kao proces zasniva se na etiri osnovna koraka: procena, zatita, otkrivanje i odgovor. U ovom modelu, neki autori koriste izraz planiranje (engl. planning) umesto izraza izraza procenjivanje, i spreavanje ili prevencija (engl. prevention), a ne zatita. 1. Procena (engl. assessment). Procena je priprema za ostale tri komponente. Smatra se posebnom akcijom, zato to je u vezi s pravilima, procedurama, pravnom i drugom regulativom, odreivanjem budeta i drugim upravljakim dunostima, i jo je povezana s tehnikom procenom stanja sigurnosti. Greka u proceni bilo kog od ovih elemenata, moe nakoditi svim operacijama koje slede. 2. Zatita (engl. protection). Zatita, tj. spreavanje ili prevencija, podrazumeva primenu protivmera kako bi se smanjila mogunost ugroavanja sistema. Ukoliko zatita zakae, primenjuje se sledei korak otkrivanje. 3. Otkrivanje (engl. detection). Otkrivanje, ili detekcija predstavlja proces identifikacije upada, tj. povrede sigurnosnih pravila ili incidenata koji se odnose na sigurnost. Neki autori definiu incident kao svaki nezakonit, neovlaen ili neprihvatljiv postupak koji je preduzet, a odnosi se na raunarski sistem ili mreu. 4. Odgovor (engl. response). Odgovor ili reakcija predstavlja proces oporavka, tj. leenja posledica upada. U aktivnosti reakcije spadaju postupci zakrpi i nastavi, ili goni i sudi. Ranije se na prvo mesto stavljalo oporavljanje funkcionalnosti oteenih resursa, kao to je korienje rezervnih kopija podataka za vraanje
sistema u stanje pre izvrenog napada. U novije vreme sve ee se koriste pravna sredstva (sudski proces protiv onoga ko ugroava sigurnost), meu koja spada prethodno prikupljanje dokaza metodama digitalne forenzike pomou kojih se potkrepljuje tuba. Sigurnosni ciljevi ******************************************************************************************** CIA ******************************************************************************************** Poverljivost, celovitost (integritet) i raspoloivost ine takozvano veliko trojstvo sigurnosti. Na engleskom jeziku, skraenica za ova tri termina je CIA (Confidentiality, Integrity, Availability), to se poklapa sa akronimom koji se koristi za najpoznatiju ameriku obavetajnu agenciju. Ovaj koncept predstavlja tri fundamentalna principa informacione sigurnosti. Sve to se odnosi na sigurnost informacija i mehanizme obezbeenja, zatim sve pretnje, ranjivosti i sigurnosni procesi, predmet su procenjivanja prema ova tri (CIA) kriterijuma. * Poverljivost (engl. confidentiality). Koncept poverljivosti obuhvata pokuaje da se sprei namerno ili nenamerno neovlaeno otkrivanje sadraja poruka. Poverljivost se moe izgubiti na mnogo naina, kao to su namerno otkrivanje privatnih podataka u vlasnitvu kompanije ili, recimo, pogrenim definisanjem i sprovoenjem prava pristupa mrei. * Integritet (celovitost, engl. integrity). U okviru sigurnosti informacija, koncept integriteta obezbeuje sledee: * podatke ne smeju menjati neovlaena lica ili procesi * ovlaena lica ili procesi ne smeju obavljati neovlaene promene podataka * podaci su interno i eksterno konsistentni, to znai da su interni podaci meusobno konsistentni u svim potcelinama (delovima), kao i s realnim svetom, tj. spoljnim okruenjem. * Raspoloivost (engl. availability). U okviru sigurnosti informacija, koncept raspoloivosti obezbeuje da odgovarajue osoblje pouzdano i pravovremeno moe da pristupa podacima ili raunarskim resursima. Drugim reima, raspoloivost oznaava da su sistemi podignuti i da rade kao to je predvieno. Osim toga, ovaj koncept garantuje da funkcioniu sigurnosne usluge koje zahtevaju strunjaci za sigurnost. *********************************************************************************************** Pravljenje rezervnih kopija Redovna izrada rezervnih kopija svih sistema je obavezna da bi sistem mogao efikasno da se oporavi posle eventualnog bezbednosnog incidenta.
Lozinke Svaki nalog mora da ima lozinku i ona ne sme da bude jednostavna za pogaanje. Nije bezbedno slati lozinke u tekstualnom obliku preko Interneta, pa je za daljinski pristup sistemu, neophodno korienje SSH ili nekog drugog naprednog sistem za proveru identiteta. Budnost Da bi sistem bio bezbedan neophodno je svakodnevno nadziranje zdravlja sistema, mrene veze, tabele procesa i opteg stanja. Bezbednosni problemi obino poinju kao mali i brzo rastu, pa je dobro to pre otkriti anomaliju. Opte preporuke Ne postavljati na sistem datoteke koje bi mogle da budu zanimljive hakerima ili radoznalim slubenicima. Poslovne tajne, podaci o zaposlenima, rezultatima izbora itd. moraju se oprezno koristiti ako su na mrei. ifrovanje takvih podataka pruie znatno vei stepen bezbednosti od prostog spreavanja neovlaenih korisnika da pristupe podacima. Ne ostavljati mesta na sistemu na kojima bi hakeri mogli da naprave upad i koriste ga kao svoj. Hakeri esto provale u neki sistem i zatim ga koriste kao polaznu taku za upade u druge sisteme. FTP direktorijumi u koje svako sa anonimnim pristup moe da upisuje podatke, grupni nalozi i nalozi sa loe izabranim lozinkama omoguavaju takve aktivnosti. Postavljanje klopki za otkrivanje upade i pokuaje upada je dobra praksa. Alatke kao to su wire, tcpd i crack su od velike pomoi prilikom predvianja moguih problema. Praenje izvetaja koje prave bezbednosne alatke je dobra praksa. Bezazlen problem koji je zanemaren u jednom izvetaju moe prerasti u katastrofu u sledeem. Potrebno je znati to vie o bezbednosti sistema pod Linuxom. Praktino obrazovanje korisnika i zdrav razum najvaniji su inioci bezbednosti. Svakodnevna kontrola sistema za neobinim aktivnostima je dobra praksa. Neophodno je ispitivanje svega to izgleda neobino, kao to su udne poruke u zapisnicima aktivnosti ili aktivnosti na nekom nalogu (vie aktivnosti, aktivnost u udno vreme). Kako se ugroava bezbednost
Veina bezbednosnih problema se javljaju kao posledica jednog od sledeih uzroka: Ljudski faktor: Korisnici (i administratori) raunarskog sistema najee su najslabije karike u bezbednosnom lancu. Greke u softveru: Tokom godina su otkrivene bezbrojne bezbednosne greke u Linuxu (ukljuujui i nezavisne programe, komercijalne i besplatne). Koristei sitne greke u programiranju ili kontekstne zavisnosti, hakeri mogu da prevare Linux da uradi ta god oni ele. Otvorena vrata: Veliki broj programa moe se konfigurisati tako da budu bezbedni. Naalost, podrazumevana konfiguracija esto je nedovoljno bezbedna. Hakeri esto dobijaju pristup sistemu koristei osobine softvera koje bi se u drugim okolnostima smatrale poeljnim: nalozi bez lozinki, diskovi dostupni svima i iste lozinke na vie raunara samo su neke od njih. Jedan od najvanijih postupaka zatite sistema jeste provera da li su nenamerno ostavljena otvorena vrata za hakere.
IMPLEMENTACIJA SIGURNOSTI L N U S
to je sigurnosna kopija dato a oteke?
Sigurnos kopija da sna atoteke jest k kopija te dato oteke pohran njena na nek kom drugom mjestu. Ako elite evidentir promjene u datoteci, moete nap rati e praviti vie sig gurnosnih ko opija iste dato oteke.
E-pota utemeljena na Webu koja nije pohranjena na tvrdom disku p j b s t Datoteke u kou za smee v t Privremene datoteke s n a Postavke korisnikog profila
Zato nije vidljivo odabrano mjesto za s stvaranje sig gurnosnih kopija pomo arobnjaka za ou a sigurn nosno kopira datotek anje ka?
Kada birate mjesto za spremanje sigurnosnih kopija, arob a bnjak pretra uje vae ra unalo i prika azuje popis svih prikladnih mjesta. Ako se eljeno m o mjesto ne poj javljuje na po opisu, mogue je da se pojavio p jedan od sljedeih pr d roblema: elj jeno je mjesto pogon s v vrpcom. Sigurnosnu kopij ne moete pohraniti na vrpcu. ju e elj jeno je mjesto disk iju sigurnosnu ko opiju pokua avate stvoriti. Sigurnosnu kopiju diska nije . a mo ogue stvoriti na njemu sa amome. Nije mogue, na primjer, stvoriti sigurnos kopiju sa e a snu adraja pog gona E na po ogon E. elj jeno je mjesto CD-ROM pogon. Ne m moete stvoriti sigurnosnu kopiju pom mou CD-RO OM pog gona, ve mo orate koristit CD snima, poznat i pod nazivom C ti , CD-R iliCD-RW pogon. W Mje esto je vanjsk tvrdi disk i vanjski CD ili DVD snim koji nije p ki ili ma povezan s raunalom. Po oveite tvrd disk ili snim diskova s raunalom i zatim na popisu mjesta kliknite Osv di ma m p a vjei. arobn njak e na raunalu ponovo traiti p povezani ure eaj. jeno je mjesto USB izmje enjivi memor rijski pogon. Sigurnosnu k kopiju ne moete spremiti na o elj izbrisivi pogon. esto nije form matirano kao NTFS, FAT ili UDF (unive o erzalni diskov format, koji se naziva i vni Mje dat toteni sustav uivo). Sigu urnosne kop mogue je spremiti sa pije amo na disko formatira ove ane pom mou datote enih sustava NTFS, FAT ili UDF. Doda a atne informac potraite u cije e pog glavlju Usporedba datote enih sustava NTFS i FAT. a . elj jeno je mjesto sistemski disk (disk na kojem je ins a staliran susta Windows poznat i av kao pogon C) ili disk za pokretanje (disk koji sustav Windows kor o i W risti za pokre etanje raunala a poz znat i kao dis za podizan sustava). sk nje
Je li m mogue spre emiti sigurnosnu kopiju na CD ili DVD ako nisam uz raunalo da umetnem u D m disk?
Samo ak sigurnosna kopija stan na jedan d i ako je on ve u rau ko a ne disk o unalu. U supr rotnom zaka ite stvaranje sigurnosne kopije za vri e ijeme kad e moi ume ete etnuti diskove. Sustav Win ndows obavij ijestit e vas da st tvaranje sigurnosnih kopi nije dovr ija eno pa u tom trenutku m m moete umet tnuti disk da biste nastavili. .
to u initi ako mi ponestane diskova tijekom stvara sigurno e anja osne kopije?
Ako vam tijekom stvaranja sigurnosne kopije ponestane diskova, moete zavriti poslije. m a n
Mogu li nastaviti s radom na raunalu ti a ijekom stva aranja sigurn nosne kopije? e
Da. Stvar se sigurno ra osna kopija zadnje spremljene verzije svake datote pa ete z svaku dato eke za oteku koju promijenite tijek kom stvaranj sigurnosne kopije morati ponovno napraviti sig ja e gurnosnu kop piju. Moete z zakazati da s automatsk sigurnosno kopiranje obavlja tijeko noi ili u vrijeme dok ne radite se ko o om na datot tekama. Tijek kom stvaranja sigurnosne kopije moe itati e-potu ili korist internet. a e ete titi
Prikaz p popisa dato oteka ije ste sigurnosn kopije stv ne vorili
1. Centar za sigu urnosno kopi iranje i vraanje otvara se klikom na g e gumb Start , za atim Upravljaka ploa, potom Susta i odrava av anje, a zatim Centar za si igurnosno kopiranje iv vraanje. Kliknite Vraa anje datotek ka. Moete pregle M edavati ili pre etraivati sad draj sigurnosne kopije.
2.
Koja je razlika izm meu stvara sigurno anja osne kopije datoteka pomou aro o obnjaka za stvaranje sigurn nosnih kopij i bez njeg ja ga?
Svaki put kada snima kopiju da ate atoteka na CD DVD ili van D, njski tvrdi dis i pritom e sk elite napravit ti sigurnos kopiju, m snu morate runo odabrati sva datoteku i mapu za k aku u koju elite sig gurnosnu kop piju. Morate s sjetiti i red se dovito stvarati sigurnosne kopije novih i izmijenjen datoteka i mapa. Sve to moe e nih a biti dosa adno i oduzim puno vremena. Prilik mati kom koritenj arobnjak za stvaranj sigurnosnih kopija nja ka je sustav W Windows prat koje su dat ti toteke i mape nove ili pro e omijenjene. N taj nain p Na prilikom stva aranja nove sigurnosne kop moete n pije napraviti sigu urnosnu kopij svih podataka na raunalu ili samo ju o datoteka koje su promijenjene na a akon stvaranj zadnje sigurnosne kop Ako post ja pije. tavite autom matsko stvaranje sigurnosnih kopija, sust Windows redovito e ih izraivati, pa neete m e h tav s morati misliti na to.
Hoe l se automa li atsko sigurn nosno kopir ranje pokren ako je r nuti raunalo iskljueno? k
Ne. Ako je raunalo i iskljueno u v vrijeme zakazanog stvara anja sigurnos kopije, au sne utomatsko sigurnos kopiranje nee se pok sno e krenuti. Sljed put kad ukljuite rau dei unalo moi ete, meutim m, napraviti sigurnosnu kopiju datot i teka i nastaviti s normalnim rasporedom za stvara anje sigurnos snih kopija.
Kako izbrisati sig gurnosnu ko opiju stvoren pomou arobnjaka za stvaranje sigurnosnih nu a j n kopija a?
Ako su sigurnosne ko opije spremlj jene na CD-o ovima ili DVD D-ovima, disk kove koji sad dre starije sigurnos kopije mo sne oete baciti, ali budite sig gurni da ste zadrali najnovije sigurno z osne kopije datoteka. d Ako ste s sigurnosne k kopije spremili na unutarn ili vanjski tvrdi disk, moete ih izbr nji risati slijedei ove korake: 1. Otvorite mjest na kojem j spremljena sigurnosna kopija. O to je a
Ako ste, na primjer, sigurnosnu kopiju datoteka spremili na vanjski tvrdi disk oznaen slovom "E", poveite ga s raunalom i otvorite pogon E. 2. Desnom tipkom mia kliknite mapu koja sadri sigurnosnu kopiju koju elite izbrisati, a zatim kliknite Izbrii. Napomene Sigurnosne kopije spremaju se u sljedeem formatu: <mjesto sigurnosne kopije>\<naziv raunala>\Backup Set <godina-mjesec-dan> <vrijeme>. Ako je, na primjer, naziv vaeg raunala Raunalo, mjesto sigurnosne kopije pogon E, a stvorili ste je 4. travnja 2006. godine u 16.32:00, sigurnosna kopija nalazit e se u mapi E:\Raunalo\Backup Set 2006-04-04 163200. Da biste je izbrisali, kliknite mapu pod nazivom Backup Set 2006-04-04 163200. Kada stvarate potpunu sigurnosnu kopiju, mapa koja je sadri bit e oznaena datumom za taj dan. Prilikom kasnijeg auriranja taj datum ostaje nepromijenjen, ali sigurnosna kopija je nova. Prilikom sljedeeg stvaranja potpune sigurnosne kopije mapa koja je sadri bit e oznaena datumom za taj dan, a sva nova auriranja dodavat e se u tu mapu. Nemojte brisati mapu trenutne sigurnosne kopije.
ifra
U kriptografiji, ifra je algoritam za ifriranje i deifriranje serija precizno definiranih koraka koji slijede jedan za drugim. U netehnikoj upotrebi, ifra i kod predstavljaju isti termin, ali u kriptografiji ti su pojmovi razliiti. U klasinoj kriptografiji ifra je odvojena od koda. Naelno, u kodu se zamjenjivanje vri na temelju obimne knjige kodova, u kojoj se rijei i fraze zamijenjuju sluajnim nizom znakova. Na primjer, UQJHS moe biti kod za "Nastavite do sljedeih koordinata". Originalna (izvorna) informacija poznata je kao otvoreni tekst, a ifrirani oblik kao ifrirani tekst ili ifrat. ifrirana poruka sadri sve informacije iz otvorenog teksta, ali nije u obliku itljivom za ovjeka ili raunalo bez primjene odgovarajueg mehanizma za njegovo deifriranje - treba predstavljati nasumine znake za sve kojima poruka nije namijenjena. Operacija ifriranja obino zavisi od dodatne informacije zvane klju. Procedura ifriranja varira u zavisnosti od kljua, koji mijenja detalje algoritma. Klju se mora izabrati prije ifriranja poruke. Bez poznavanja kljua trebalo bi da je teko, ili skoro nemogue, dekriptirati ifrat u itljiv otvoreni tekst. Treba razlikovati termine deifriranje i dekriptiranje: Deifriranje je pretvaranje ifrata u otvoreni tekst kad je klju poznat, vri ga osoba kojoj je poruka namijenjena. Dekriptiranje je pokuaj pretvaranja ifrata u otvoreni tekst kad klju nije (unaprijed) poznat - vre ga osobe kojima poruka nije namijenjena. Dekriptiranje je dio kriptoanalize. Veina modernih ifri moe se svrstati u kategorije na nekoliko naina:
Slika: Model ifriranja (Tanenbaum, 1996) poruka koja se ifrira je obian tekst (plaintext) P P se transformira na osnovu metode ifriranja (encryption method) - funkcije koja kao parametar koristi klju (encryption key) K kao izlaz dobivamo ifrirani tekst (ciphertext) C koji se alje na pr. preko glasnika, radiom,... uljez (intruder) moe samo oslukivati komunikacijski kanal (pasivni uljez) ili moe snimiti poruku, mijenjati je ili slati vlastitu (aktivni uljez) vrijedi: C = EK(P) tj. ifriranjem teksta P pomou kljua K dobijemo ifrirani tekst C obrnuto: P = DK(C) predstavlja deifriranje (decryption) ifriranog teksta C da bi se ponovo dobio poetni obini tekst P (slijedi da je DK(EK(P))=P) E, D - odabrane matematike funkcije iji su parametri klju i tekst (obini ili ifrirani)
osnovno pravilo kriptografije je da onaj tko vri deifriranje mora znati koritenumetodu deifriranja i klju koji se u toj metodi koristio dok se osnovna metoda ifriranja mijenja nakon nekoliko godina, klju se mijenja esto -> osnovni model je stabilna i javno poznata openita metoda koja kao parametar koristi tajni, lako izmjenjivi klju duina kljua je glavno pitanje kod njegova dizajna klju se sastoji od znamenki (znakova) koje su unesene odreenim redoslijedom i to je klju dui, vie je moguih kombinacija i vie je rada potrebno da ga onaj koji razbija ifru pogodi (moe se koristiti npr. 256 bita) metode ifriranja dijele se povijesno u 2 kategorije: supstitucijske i transpozicijske ifre
P: a b c d e f g h i j k l m n o p q r s t u v w x y z C: Q W E R T Y U I O P A S D F G H J K L Z X C V B N M
takav se sistem naziva monoalfabetska supstitucija kod koje je klju niz od 26 slova koji odgovara itavoj (engleskoj) abecedi
moguih kljueva ima 26! 4 x 1026 ali se unato tome, poznajui ve i manju koliinu ifriranoga teksta, moe pronai klju na osnovu statistikih osobina prirodnih jezika (gledaju se najea slova, kombinacije od 2 slova i kombinacije od 3 slova)
Slika: Primjer transpozicijske ifre (Tanenbaum, 1996) klju je rije ili fraza koja ne sadri ponavljajua slova (u primjeru: MEGABUCK), a slui za numeraciju stupaca tako da je stupac 1 pod slovom koje je najblie poetku abecede obini tekst se pie u recima (vodoravno), a ifrirani tekst u stupcima poevi od onoga koji je oznaen kao stupac 1
izraunati ISKLJUIVI ILI (EXCLUSIVE OR) tih dvaju stringova, bit po bit rezultirajui ifrirani tekst ne moe se razbiti jer je jednako vjerojatno za bilo koji obini tekst odreene duljine da je tako ifriran nedostaci: klju se ne moe zapamtiti, pa i poiljaoc i primaoc moraju drati kopiju uz sebe; velika osjetljivost na izmjene do kojih moe doi u prijenosu
2 osnovna pristupa razbijanju ifre: o kriptoanaliza: na osnovu poznavanja prirode algoritma i nekih osnovnih osobina teksta (ili ak nekih uzoraka parova tekst-ifrirani tekst) nastoji se zakljuiti koji je klju koriten
"gruba sila" (brute-force): isprobava se svaki mogui klju na komadu ifriranog teksta sve dok se ne dobije odgovarajui tekst - tee je (due traje) to je dui klju
DES (Data Encription Standard) poznati algoritam sa simetrinim kljuem DES (Data Encription Standard) ifru razvio je IBM, a 1977. ju je usvojila i vlada USA kao svoj slubeni standard osnovna ideja: tekst se ifrira u blokovima od 64 bita, algoritam koristi 56 bitni klju i odvija se u 19 faza: o prva faza je transpozicija teksta koja ne ovisi o kljuu, o zadnja faza je inverz te transpozicije o predzadnja faza je zamjena 32 lijeva bita s 32 desna o ostalih 16 faza koriste istu funkciju, ali razliite kljueve koji se izvode iz polaznog kljua
Slika: Faze DES-a i detalj jedne od 16 faza (Tanenbaum, 1996) ulaz je podijeljen na lijevi i desni sa po 32 bita lijevi izlaz je kopija desnog ulaza
desni izlaz je XOR lijevog ulaza i funkcije nad desnim ulazom i kljuem Kiza ovu i-tu fazu (iteraciju) sva kompleksnost se nalazi u funkciji
unato kompleksnosti, DES je u osnovi monoalfabetska supstitucijska ifra koja koristi 64-bitne znakove, te uvijek isti 64-bitni ifrirani tekst odgovara istom 64bitnom ulaznom tekstu da bi se poveala kompleksnost, kao jedna od metoda koristi se ulanavanje blokova ifri (cipher block chaining) kod koje se svaki blok obinog teksta prije ifriranja povezuje sa EXCLUSIVE OR sa prethodnim blokom ifre problemi kod DES: o i mala koliina obinog teksta i odgovarajueg ifriranog teksta je dovoljna da se nae klju duine 56 bitova (namjerno kratki klju?!) koritenjem vrlo jakog raunala ili koritenjem velikog broja manje jakih raunala koji dijele posao (problem se moe rijeiti koritenjem dueg kljua npr. 128 bitnog) o distribucija kljueva: isti klju je i za ifriranje i za deifriranje, pa se mora distribuirati objema stranama koje ga moraju znati, a istovremeno sprijeiti uljeze da dou do njega AES (Advanced Encryption Standard) - novi sigurniji standard s duljinom blokova od 128 bita i podrkom za kljueve duine 128, 192, 256 bita
D(E(P)) = P (ako primijenimo D na ifrirani tekst E(P) dobiti emo ponovo polazni tekst P 2. izuzetno je teko na osnovu algoritma E zakljuiti kakav je D 3. algoritam E se ne moe razbiti iako se ima dio deifriranog teksta
Metoda:
Slika: Algoritam s javnim kljuem (Tanenbaum, 1996) osoba A koja alje poruku ima 2 algoritma EA i DA koji ispunjavaju gornje uvjete i od kojih je algoritam za ifriranje i njegov klju EA javni; javni je i algoritam za deifriranje, ali je njegov klju DA tajni i poznat samo osobi A; analogno vrijedi za osobu B i kljueve EB i DB ako A eli poslati tajnu poruku P za B, uzima njezin javni klju EB i rauna EB(P), tako ifrirani tekst alje osobi B koji ga deifrira pomou svog tajnog kljua DB (rauna DB(EB(P)) = P)
problem kod metoda s javnim kljuevima je kako nai algoritam koji ispunjava sva tri zahtjeva jedan od njih je RSA algoritam
RSA algoritam razvijen 1976. na MIT-u Rivest, Shamir i Adleman, a metoda se bazira na nekim principima teorije brojeva, tj. na nemogunosti raunala da u realnom vremenu vri faktorizaciju velikih prim brojeva RSA je dosta spor za ifriranje veih koliina podataka (zadovoljavajue sigurnost se postie s kljuem od barem 1024 bita) esto se koristi samo za distribuciju kljueva kod DES, a DES se dalje koristi za ifriranje ostalih podataka
Postupak:
1. 2. 3. 4. 5. 6. 7.
izabrati 2 velika prim broja p i q (obino 1024 bita) izraunati n = p x q i z = (p-1) x (q-1) izabrati broj d relativno prim prema z nai e tako da je e x d = 1 mod z podijeliti tekst u blokove (ili poruke) P tako da svaki od njih bude 0 P < n za ifriranje poruke P izraunati C = Pe mod n za deifriranje C izraunati P = Cd mod n -> funkcije za ifriranje i deifriranje su inverzne (e,n) je javni klju za ifriranje (d,n) je privatni klju za deifriranje kada bi se javno znani n uspio faktorizirati na p i q, naao bi se z, a zatim e i d -> teko
Primjer:
1. 2. 3. 4. 5. 6.
p=3, q=11 n=3 x 11=33, z=2 x 10=20 d=7 7 x e = 1 mod 20 -> (7 x e)/20 = x + 1/20 -> e=3 C = P3 mod 33 P = C7 mod 33 (3,33) je javni klju za ifriranje (7,33) je privatni klju za deifriranje
ako A eli poslati poruku P osobi B, prvo generira i alje KA(B, RA, t, P) za BB: o B - identitet osobe B o RA - sluajan broj kojeg A bira o t - vremenska oznaka BB deifrira tu poruku i koristei tajnu ifru osobe B KB alje osobi B, (uz ostale podatke) tekst poruke, te KBB(A, t, P) podatak KBB(A, t, P) slui osobi B kao dokaz da mu je poruku zaista poslala osoba A
razmjena potpisanih poruka bez nadzora nekog centralnog autoriteta (svaku poruku koja mu stie moe proitati) koriste se algoritmi za ifriranje i deifriranje pomou javnog kljua koji imaju dodatnu osobinu da je E(D(P)) = P (uz standardnu: D(E(P)) = P ), npr. RSA
Slika: Digitalni potpisi koritenjem javnog kljua (Tanenbaum, 2003) osoba A alje potpisanu poruku osobi B nainivi EB(DA(P)) B primjenjuje prvo svoj privatni klju DB da bi dobio DA(P), a zatim javni klju EA da dobije tekst P od A da je zaista osoba A poslala poruku, moe se provjeriti tako da se od B uzmu i P i DA(P) i da se primjenom kljua EA ustanovi da li je zaista EA(DA(P)) = P, ako to vrijedi, znai da je poruka zaista od osobe A jer jedina ona zna DA
Certifikati CA (Certification Authority) - organizacija koja potvruje javne kljueve osobe se registriraju u CA svojim javnim kljuem i nekim osobnim podatkom, a CA izdaje certifikat (potvrdu) potpisan nekim digitalnim potpisom pri emu se koristi privatni klju tog CA osnovni zadatak certifikata: pridruiti javni klju imenu osobe (ili neke organizacije, firme,...) - sami certifikati nisu tajni ili zatieni
Slika: Primjer certifikata (Tanenbaum, 2003) kad osoba A dohvati certifikat od B, primjeni algoritam koriten za digitalni potpis s javnim kljuem od CA -> ako se dobiveni rezultat slae s onim navedenim u certifikatu, rije je zaista o pravom certifikatu od B na taj nain CA ne mora biti stalno on-line X.509 - standard za certifikate
to je tono ssh? SSH je sigurni protokol za udaljenu administraciju raunala. Svaki od naih linux servera posjeduje ssh servis za udaljeni pristup, te je korisnicima omoguen ssh pristup uz upotrebu odgovarajueg klijenta. Na Internetu moete pronai razne ssh klijente, a kao pouzdane i besplatne moemo vam preporuiti : Linuxov ugraeni OpenSSHSSH client, Putty za Windows raunala ili NiftyTelnet za MacOS. Kako se mogu spojiti na server? Koristei linuxov Ugraeni ssh klijent spajanje se vri putem komande ssh username@hostname Ukoliko se na server spajate po prvi put, klijent e vas pitati elite li spremiti jedinstveni server ssh fingerprint; nakon to prihvatite fingerpint ssh klijent e traiti da unesete password za username s kojim se spajate. Ukoliko je password toan ssh klijent e se uredno spojiti na server. Kako bi se na server spojili putem Putty klijenta?
Nakon pokretanja putty programa pojavit e vam se ovakav prozor. U polje hostname unosite naravno ime servera na koji se spajate. Port za spajanje ostaje 22, connection type ostavljate ssh. Ukoliko kliknete na tipku open klijent e se spojiti na server sa zadanim parametrima, meutim do sada zadane parametre kao i dodatne advanced parametre (dokumentaciju parametara nai e te ovdje) moemo spremiti u session tako da utipkamo eljeni session name te kliknemo na tipku save. Svi parametri koje smo prethodno podesili nam ostaju spremljeni za novo pokretanje programa, a jednostavnim dvostrukim klikom na ime sessiona pokree se terminal sa zadanim parametrima. Klikom na tipku open ili na prethodno sauvani session otvara se novi prozor, koji e vas ukoliko se spajate po prvi put pitati elite li spremiti server fingerprint. Nakon spremanja fingerprinta terminal e vas pitati username te zatim password. Ok ulogirao se, to sad? U ovom trenutku server od vas oekuje komandnolinijsku instrukciju. Nije tako strano kao to zvui Dakle, nakon to ste se spojili ssh-om na server uli ste u komandnolinijsko suelje linux servera, koje nije toliko grafiki oku ugodno kao desktop okruenje vaeg raunala ali je jednako efikasno, a u veini sluajeva ak i vie. Utipkane komande se izvravaju tek nakon to ih potvrdite tipkom enter.
Neke od osnovnih komandi su vrlo sline starim MSDos komandama, pa tako npr. komanda: mkdir kreira direktorij cd navigira kroz direktorije ls lista sadraj trenutnog direktorija pwd ispisuje apsolutnu putanju direktorija u kojem se nalazimo rm brie direktorije ili fileove (oprezno!) cp za kopiranje fileova ili direktorija mv za premjetanje Dodatne komande moete pronai pomou ove pretrage, a par zgodnih trikova ete nai i naovoj stranici. Svaka komanda je dokumentirana i za svaku komandu moete putem ssh konekcije pozvati manual. Komanda za pozivanje manuala/dokumentacije je man imekomande Dakle ukoliko elite pogledati dokumentaciju za komandu ls jednostavno utipkate man ls dokumentacijom se kreete pomou kursorskih tipki, a iz nje izlazite pritiskom na tipku Q. ato je ovo puno bolje nego ftp? Problem kod ftp-a je to je to iskljuivo file transfer protokol, dakle ukoliko bismo htjeli preseliti fileove iz jednog foldera u drugi ftp klijent mora za svaki file posebno establishati konekciju, izvriti komandu te nanovo itati strukturu direktorija. Naravno ovaj cijeli proces s ftp-om moe potrajati i po nekoliko minuta ili sati ovisno o broju fileova za premjetanje i brzini konekcije. Kroz shell to moemo jednostavno, za manje od sekundu, izvriti komandom mv trenutna_lokacija nova_lokacija Naravno, ukoliko elim preseliti samo slike .jpg formata mogu koristit wildcarde bez nepotrebnog kliktanja po ftp klijentu i selektiranja .jpg fileova. Kroz shell to jednostavno izvrim komandom mv trenutnifolder/*.jpg novifolder/ to su tono wildcardi? Wildcardi su posebni znakovi koji mogu zamjeniti jedan ili set znakova u komandi. Wildcardi su nam osobito korisni u shell komandama jer nam dozoljavaju selektivan odabir fileova. * Zamjenjuje bilo koji znak u bilo kojoj koliini (npr. *.jpg je isto kao i bilo koji od ovih filenameova, 123.jpg, dse2sx.jpg, a.jpg) ? Zamjenjuje bilo koji znak na samo jednom mjestu. (npr. d?n.jpg je isto kao bilo koji od ovih filenameova dan.jpg, d1n.jpg, dTn.jpg) [] Unutar uglatih zagrada se moe staviti raspon znakova za zamjenu (npr. [1-9].jpg je identino kao i 1.jpg, 2.jpg ili recimo [A-Z,a-z].jpg mjenja bilo koje veliko ili malo slovo abecede u rasponu od a do z). Ok, primjenimo wildcarde i sve gore navedene komande u praksi. elim preseliti sve .jpg slike iz mape slike/ koje poinju slovima a u podmapu slike/a/ Nakon to se ulogiramo pomou ssh-a na svoj hosting account ssh terminal e se probuditi u /home/username/ folderu. Za poetak emo ui u folder slike: cd public_html/slike/ Ukoliko niste sigurni nalazite li se u pravom folderu moete upisati komandu pwd Provjerti emo postoji li ve subfolder: ls -lh a
Ukoliko direktorij ne postoji dobit emo output : ls: a: No such file or directory Napravimo svoj a direktorij: mkdir a Zatim emo preseliti sve slike koje poinju s malim ili velikim slovom a u novokreirani poddirektorij a mv [a,A]*.jpg a/ Postoji li alternativa? Naravno, za neke jednostavnije funkcije postoji odlian shell alat Midnight Commander, vrlo je slian starom Norton commanderu iz MSDos-a
Program jedostavno moete pogrenuti komandom mc a dokumentaciju moete pogedati komandom man mc Ok gotov sam s radom, kako se odjaviti? Po zavretku rada na serveru potrebno je izvriti odjavu. Odjavu izvrimo komandom logout ili exit
Protokoli za sigurnu razmjenu podataka Zadatak protokola za sigurnu razmjenu podataka jest osigurati tajnost, vjerodostojnost, integritet i neporecivost podataka. Dva protokola koja se najvie koriste suSSL (eng. Secure Socket Layer) [12] i TLS (eng. Transport Layer Security) [13].
3.1. SSL protokol SSL (eng. Secure Socket Layer) protokol razvila je tvrtka Netscape Communications 1994. godine. Naao je primjenu u mnogim protokolima kao to su HTTP (eng.Hyper Text Transfer Protocol), SMTP (eng. Simple Mail Transfer Protocol), POP (eng. Post Office Protocol), LDAP (eng. Lightweight Directory Access Protocol) i mnogim drugim. SSL norma nije objavljena u obliku RFC dokumenta. SSL postoji u tri verzije, u verziji 1, verziji 2 te verziji 3.
Slika 3.1. Prikaz SSL sloja u TCP/IP mrenom sloaju Na slici 3.1. nalazi se prikaz SSL sloja u odnosu na TCP sloj i HTTP protokol u aplikacijskom sloju TCP/IP mrenog sloaja. Umjesto HTTP protokola moe biti bilo koji aplikacijski protokol koji ima podrku za SSL protokol. SSL je ostvaren kao dodatni sloj u TCP/IP (eng. Transmission Control Protocol/Internet Protocol) mrenom sloaju. Protokol vieg sloja (u ovom sluaju HTTP) transparentno pristupa SSL sloju. SSL osigurava sljedee sigurnosne zahtjeve: 1. Privatnost ili tajnost informacija. 2. Integritet podataka. 3. Autentifikaciju sudionika u komunikaciji uporabom digitalnih certifikata. Protokol koristi asimetrinu kriptografiju i digitalne certifikate za razmjenu tajnih ili sjednikih kljueva koji se koriste u daljnjoj komunikaciji te simetrinu kriptografiju kojom se kriptiraju poruke izmeu sudionika, koje se prethodno mogu i komprimirati. SSL protokol podrava razne algoritme saimanja kao to su MD5 i SHA1, simetrine algoritme (IDEA, DES, 3DES, RC4 itd.) te asimetrine algoritme kao to su npr. RSA i Diffie-Hellman (razmjena pre-master kljueva). SSL podrava i Fortezzu. Fortezza je sklopovska podrka za neke algoritme kriptiranja, razmjene kljua i saimanja, razvijena od strane NSA (eng. National Security Agency). Tablica 3.1. Prikaz nekih aplikacija koje podravaju SSL protokol s dodijeljenim brojem vrata (eng. port) Aplikacijska usluga Dodijeljeni broj vrata 443 HTTPS 646 LDAP
SSL se sastoji od etiri protokola: SSL protokol rukovanja (eng. SSL Handshake Protocol), SSL protokol razmjene aplikacijskih podataka izmeu klijenta i posluitelja (eng. SSL Record Protocol), SSL protokol promjene specifikacije algoritama (eng. SSL Change Cipher Spec Protocol) i SSL protokol upozorenja (eng.SSL Alert Protocol). 3.1.1. Protokol rukovanja Protokol rukovanja je najsloeniji protokol unutar SSL-a. Tijekom njegova trajanja klijent i posluitelj razmjenjuju niz poruka (slika 3.2.).
Slika 3.2. Prikaz faze rukovanja izmeu klijenta i posluitelja u SSL protokolu (poruke prikazane isprekidanom strelicom su opcionalne) Faze protokola rukovanja: 1. client_hello: klijent alje posluitelju verziju SSL protokola koju podrava, nasumini broj, jedinstveni identifikator sjednice (eng. session ID), popis
kriptografskih algoritama koje podrava (eng. Cipher Suite) te popis metoda za komprimiranje podataka koje podrava. 2. server_hello: posluitelj alje klijentu verziju protokola koju on podrava, jedinstveni identifikator sjednice, listu odabranih kriptografskih algoritama (eng.Cipher Suite) te oznaku odabrane metode za komprimiranje. Lista odabranih kriptografskih algoritama sastoji se od dva dijela: oznaka algoritma razmjene kljua (npr. RSA i Diffie-Hellman) te dio koji sadri specifikaciju simetrinih algoritama (tzv. CipherSpec). Specifikacija simetrinih algoritama sastoji se od oznake simetrinog algoritma kriptiranja, oznake MAC (eng. Message Authentication Code) algoritma koji stvara saetak poruke uz pomo simetrinog kljua i time jami integritet i autentinost poruke, oznake vrste kriptiranja (kriptiranje toka podataka ili bloka podataka), duljine saetka itd. 3. certificate (opcionalno): posluitelj alje klijentu svoj digitalni certifikat, kojim dokazuje svoj identitet. Ukoliko posluitelj ne poalje certifikat, tada se moe koristiti Diffie-Hellman metoda razmjene kljua. 4. server_key_exchange (opcionalno): posluitelj alje ovu poruku u sluaju da nije dogovorena metoda razmjene kljua (Diffie-Hellman ili RSA razmjena kljua). 5. certificate_request (opcionalno): posluitelj alje klijentu zahtjev za njegovim certifikatom, kako bi provjerio njegov identitet. 6. server_hello_done: posluitelj alje klijentu obavijest da je zavrio slanje poruka. Nakon ove poruke, klijent provjerava posluiteljev certifikat (provjerava odgovara li ime domene na certifikatu imenu domene s kojom posluitelj uspostavlja vezu, provjerava je li certifikat istekao ili se koristi prije datuma poetka valjanosti certifikata, provjerava digitalni potpis certifikata itd.). 7. certificate (opcionalno): klijent alje posluitelju svoj certifikat, ako je posluitelj to od njega zatraio (certificate_request). 8. client_key_exchange: klijent koristi sluajan broj koji je dobio od posluitelja (client_hello) i pomou njega generira 48-oktetni pre-master klju. Klijent kriptira pre-master klju s javnim kljuem posluitelja te ga alje posluitelju, ukoliko je prethodno dobio posluiteljev certifikat (poruka certificate). Inae je razmjena pre-master kljua Diffie-Hellman metodom. Posluitelj prima poruku dekriptira je i uzima pre-master klju. I klijent i posluitelj iz pre-masterkljua odreenim postupkom izraunavaju master klju, a pomou njega takoer odreenim postupkom, dobivaju sjedniki klju kojim e kriptirati aplikacijske podatke nakon zavretka faze rukovanja. 9. certificate_verify (opcionalno): ako je posluitelj prethodno zatraio klijentov certifikat (certificate_request), klijent dokazuje posluitelju da privatni klju odgovara javnom kljuu u certifikatu koji je poslao posluitelju. To radi na taj nain da digitalno potpisuje poruku client_key_exchange (kriptirani premasterklju s javnim kljuem posluitelja), i alje je posluitelju. 10. change_cipher_spec: klijent alje poruku posluitelju koja sadri trenutanu specifikaciju simetrinih algoritama (CipherSpec). Trenutana specifikacija dobiva se preuzimanjem specifikacije koju je poslao posluitelj. 11. finished: klijent alje posluitelju obavijest o zavretku faze rukovanja (od strane klijenta). Ovo je prva poruka koja je zatiena dogovorenim algoritmima i kljuevima. 12. change_cipher_spec: posluitelj potvruje klijentu trenutanu specifikaciju simetrinih algoritama.
13. finished: posluitelj zakljuuje fazu rukovanja i o tome obavjetava klijenta. Poruka je zatiena dogovorenim algoritmima i kljuevima. Ako u daljnjem tijeku komunikacije iz nekog razloga nastane potreba za mijenjanjem parametara (npr. vrsta algoritma), tada se ponovno obavlja rukovanje, ali se ne vri ponovna razmjena kljueva. 3.1.2. Protokol razmjene aplikacijskih podataka Nakon faze rukovanja odvija se faza razmjene aplikacijskih podataka. Aplikacijski podaci se prije slanja komprimiraju (opcionalno), zatim se provedu kroz MACfunkciju (omoguava integritet i autentinost poruke uz pomo dijeljenog kljua) da bi se dobio saetak koji se zajedno s komprimiranim podacima kriptira sjednikim kljuem. 3.1.3. Protokol promjene specifikacije algoritama Protokol je ostvarenje jedne poruke koja sadri kod upozorenja (neoekivana poruka, pogrean certifikata itd.). 3.2. TLS protokol TLS (eng. Transport Layer Security) je nastao na temelju SSL protokola verzije 3, i koristi ista dodijeljena vrata kao i SSL. Vrlo je slian SSL protokolu. Razvija se u okviru IETF (eng. Internet Engineering Task Force) i prvi put je predstavljen 1999. godine. Neke od razlika u odnosu na SSL jesu te to TLS koristi standardniHMAC (eng. keyed-Hash Message Authentication Code) koji je jadna vrsta MAC-a, TLS ne podrava Fortezzu itd. Sve vanije aplikacije i usluge koje podravajuSSL, podravaju i TLS.
FIREWALL
Firewall je sigurnosni element smeten izmeu neke lokalne mree i javne mree (Interneta) , a koji je dizajniran kako bi zatitio poverljive , korporativne i korisnike podatke od neautoriziranih korisnika , (blokiranjem i zabranom prometa po pravilima koje definie usvojena sigurnosna politika). Nije nuno da svi korisnici u LAN-u imaju jednaka prava pristupa Internet mrei. Postavljanjem Firewall ureaja izmeu dva ili vie mrenih segmenata moe se kontrolirati i prava pristupa pojedinih korisnika pojedinim delovima mree. U takvom sluaju Firewall je dizajniran da doputa pristup valjanim zahtevima, a blokira sve ostale. Firewall ujedno predstavlja idealno rjeenje za kreiranje Virtualne Privatne mree jer stvarajui virtualni tunel kroz koji putuju kriptirani podaci,(omoguuje sigurnu razmjenu osetljivih podataka meu dislociranim korisnici) . Firewall je servis koji se tipino sastoji od firewall ureaja i Policy-a (pravilnika o zatiti), koji omoguuje korisniku filtriranje odreenih tipova mrenog prometa sa ciljem da povea sigurnost i prui odreeni nivo zatite od provale. Osnovna namena Firewall-a je da sprei neautorizovani pristup sa jedne mree na
drugu. U sutini, ovo znai zatitu unutranje mree od Internet-a. Ako va sistem raspolae Firewall-om, to znai da je odluka o tome ta je dozvoljeno, a ta nije ve doneta. Ove odluke su u direktnoj vezi sa politikom sigurnosti vaeg informacionog sistema. Pri planiranju ponude informacionih servisa, politika sigurnosti odreuje opcije konfiguracije servisa. Osnova rada Firewall-a je u ispitivanju IP paketa koji putuju izmeu klijenta i servera, ime se ostvaruje kontrola toka informacija za svaki servis po IP adresi i portu u oba smera. Za Firewall je tipian i kompromis izmeu sigurnosti i lake upotrebe. Stav da "sve to nije dozvoljeno je zabranjeno" zahteva da se svaki novi servis individualno omoguava. Firewall je odgovoran za vie vanih stvari unutar informacionog sistema: Mora da implementira politiku sigurnosti. Ako odreeno svojstvo nije dozvoljeno, Firewall mora da onemogui rad u tom smislu. Firewall treba da belei sumnjive dogaaje. Firewall treba da upozori administratora na pokuaje proboja i kompromitovanja politike sigurnosti. U nekim sluajevima Firewall moe da obezbedi statistiku korienja. Firewall moe biti softverski ili hardverski : Softverski firewall omoguava zatitu jednog raunara , osim u sluaju kada je isti raunar predodreen za zatitu itave mree. Hardverski firewall omoguuje zatitu itave mree ili odreenog broja raunara. Za ispravan rad firewall-a, potrebno je precizno odrediti niz pravila koja definiu kakav mreni promet je doputen u pojedinom mrenom segmentu. Takvom politikom se odreuje nivo zatite koji se eli postii implementacijom firewall usluge. Veina dananjih proizvoaa firewalla ponosno istie na koje napade su njihovi firewalli otporni, ali nove vrste napada se svakodnevno razvijaju i sve su komplikovani i kompleksniji. Ipak svaki firewall bi trebao biti otporan na poznate napade kao to su : Address Spoofing napad omoguava da paket bude prosleen sa nepoznatog okruenja na neko od internih raunara ukoliko napada kao izvorinu adresu uzme neku od adresa unutar lokalne mree. U tom sluaju firewall je moda konfigurisan da omoguava prolazak paketa i time ciljni raunar moe primiti posebno prilagoeni paket. Da bi se ovakva vrsta napada onemoguila potrebno je onemoguiti prosljeivanje paketa koji kao izvorinu adresu imaju neku od lokalnih adresa, a kao ulazno okruenje ono okruenje koje je spojeno na Internet. Smurf napad spada u grupu napada koje imaju za cilj onemoguavanje rada pojedinih servera i raunara, tj. DoS napad (eng. Denial of Service). Napada ilje ICMP echo request paket na broadcast adresu cele lokalne mree. Time su adresirani svi raunari unutar lokalne mree. Kao odredite navodi se ciljni raunar koji se eli onesposobiti velikim brojem odgovora. Za odbranu od ovakve vrste napada dovoljno je u konfiguracijskoj datoteci firewalla onemoguiti broadcast paket. Syn-Flood napad zasniva se na napadaevom slanju velikog broja poetnih konekcijskih TCP paketa koji imaju postavljenu SYN zastavicu, i ignoriranjem TCP odgovora sa postavljenim SYN i ACK zastavicama. Time su resursi ciljanog raunara zaokupljeni odgovaranjem na pakete. Da bi se
sprijeio ovakav oblik napada potrebno je ograniiti na firewallu broj dolazeih TCP paketa. Port-Scanner napad zasniva se na otkrivanju otvorenih TCP i UDP portova slanjem SYN ili FIN paketa na ciljane portove i ekanjem na RST odgovor. Potrebno je ograniiti broj takvih ispitivanja. Ping-of-Death napad moe uzrokovati ruenje operativnog sistema, ukoliko se na raunar usmjeri veliki broj ICMP echo zahteva. Najbolje rjeenje je onemoguavanje echo-request paketa, a alternativo rjeenje je ogranienje broja ICMP echo zahteva.
napadau. Neki drugi portovi mogu biti iskoriteni da bi se unitile odreene bitne informacije. Takav port je DNS. 3.5.Filtriranje paketa zavisno o ruti usmjeravanja paketa (eng. Source Routing) Source routing je proces odreivanja tano odreene rute kojom paket treba proi prilikom putovanja prema cilju odnosno prilikom povratnog putovanja. Source routing je originalno koriten za analiziranje i testiranje, ali se u dananje vreme koristi od strane napadaa. Napadai postavljanjem bilo koje IP adrese u polje za izvorite mogu omoguiti da im se povratni paket vrati, stavljajui svoju vlastitu IP adresu. Pri tome oni mogu odrediti tanu stazu kojom paket treba proi, ili odrediti ciljne raunare do kojih paket treba doi. 3.6.Filtriranje paketa zavisno po broju fragmenta paketa U dananjim mreama prevelike poruke se prenose ralanjene (fragmentirane) u manje pakete. Veliina paketa za prenos korienjem IEEE 802.3 standarda jer je ograniena sa maksimalnom veliinom od 1500 okteta. Poetno fragmentirana poruka na izvoritu moe se jo dodatno fragmentirati na usmerivaima preko kojih ta poruka prelazi.Tako ralanjeni paketi se povezuju na odreditu ,podaslanu poruku. Mogue je na firewall-u izvesti filtriranje, na nain da se odbacuje poetni fragmentirani paket koji jedini sadri port aplikacije, i da se pretpostavi na osnovu te logike da e svi ostali paketi biti beskorisni jer nee doi do aplikacije. Takvo filtriranje je danas beskorisno jer napadai mogu prvom odaslanom fragmentiranom paketu umjesto rednog broja 0 dodeliti redni broj 1. Na taj nain bi poruka na kraju stigla do eljene aplikacije.
samo za odreene portove na bastion hostu. Dalje, ruter se moe konfigurisati tako da dozvoljava saobraaj samo sa odreenih spoljnih raunara. esto se ruter konfigurie tako da se dozvoljava prolaz svih konekcija koje su potekle sa unutranje mree. Ovakva konfiguracija omoguava korisnicima da koriste sve standardne mrene funkcije pri komunikaciji sa spoljnom mreom bez korienja Proxy servisa. 4.3.Virtualne privatne mree (VPN Virtual Private Networks) Virtualne privatne mree (tzv. enkripcijski tuneli) omoguavaju sigurno spajanje dve fiziki odvojene mree preko Interneta bez izlaganja podataka neautoriziranim korisnicima. Zadatak vatrenogzida je da omogui sigurno stvaranje virtualne veze nekog udaljenog raunala sa zatienom mreom. Nakon to je jednom uspeno uspostavljena, virtualna privatna mrea je zatiena od neovlatenih iskorienja, sve dok su enkripcijske tehnike sigurne. Koncept VPN-a omoguava udaljenim korisnicima na nezatienoj strani da direktno adresiraju raunar unutar lokalne mree, to drugim korisnicima nije mogue zbog Network Address Translation-a i filtriranja paketa. Brzina kojom takvi udaljeni raunri komuniciraju sa lokalnim raunarima mnogo je sporija od one koju raunari u lokalnoj mrei koriste. Razlog tome je njihova fizika udaljenost i oslonjenost na brzinu Interneta, ali i procesi enkripcije podataka, filtriranja paketa na firewall-u, i dekripcije originalnih podataka. Kako bi udaljeni korisnici uspeno proli fazu spajanja na lokalnu mreu potrebno je da se uspjeno obavi autentifikacija istih. Ta autentifikacija mora biti kriptirana da bi se spreila kraa podataka od strane napadaa i iskoritenje istih. 4.4.Konfiguracija mree bez servera U sluajevima kada organizacija koja koristi vatrozid ne prua nikakve usluge korisnicima Interneta, vatrozid je dovoljno konfigurirati na nain da proputa samo pakete koji naputaju lokalnu mreu, i pakete koji dolaze kao povratne informacije na temelju uspostavljenih veza. Primer konfiguracije mree bez servera Ova konfiguracija u odnosu na konfiguracije mrea sa server korisnicima je prvenstveno jednostavnija za konfiguraciju, ali i sigurnija za lokalnu mreu. Ali danas je takva mrea izrazito neupeatljiva gledano sa poslovne i informacijske strane. Organizacije sve ee ne koncentriu sve zaposlene i rad na jednom mestu, ve ih rasporeuju po udaljenim lokacijama. U sluajevima kad je potrebno ostvariti vezu udaljenih lokacija, mogue je uz datu konfiguraciju jedino primeniti fiziko povezivanje udaljenih LAN-ova to je za veinu organizacija ipak preskupo. Zbog toga je ovakva konfiguracija rea kod veih organizacija, ali ea kod kunih. 4.5.Konfiguracija mree sa jednim serverom i jednim firewal-om Ukoliko organizacija treba imati servere onda je potrebno konfigurirati mreu i firewall na kompleksniji nain od predhodnog opisa. Lokalna mrea moe biti konfigurisana na nain da se koristi samo jedan firewall i serveri unutar lokalne mree ili izvan lokalne mree. Ako je lokalna mrea konfigurisana na nain da su serveri locirani izvan lokalne mree, konfiguracija lokalne mree i firewall-a moe u potpunosti biti jednaka kao u sluaju mree bez servera. Takva konfiguracija koja ne dozvoljava prolazak
paketa prema zatienoj mrei, ukoliko oni nisu deo neke prethodno uspostavljene veze, osigurava i dalje maksimalnu sigurnost za raunare locirana u lokalnoj mrei. Ali raunari locirani izvan lokalne mree, koji rade kao serveri izloena su razliitim napadima. Zlonamerni napadai su u mogunosti da izvedu DoS (eng. Denial of Service) napad, pri kojem se ostalim korisnicima Interneta, ali i lokalne mree onemoguava koritenje usluga servera. Za organizaciju je ak puno gore od spomenutog napada ukoliko napadai modifikuje podatke koji se nalaze na serveru. Napadai mogu podvaljivati lana obavetenja serveriima , ili ak programe koji su virusi. Time napadai mogu uveliko natetiti ugledu organizacije. Primer konfiguracije mree sa serverima lociranim izvan lokalne mree U sluaju kada je lokalna mrea konfigurisana na nain da su serveri locirani unutar lokalne mree, konfiguracija lokalne mree i firewall-a je sloenija. Osim dolaznih paketa koji su deo uspostavljene veze potrebno je omoguiti i prolazak poetnih paketa samo prema serverima. Primer konfiguracije mree sa serverima lociranim unutar lokalne mree Konfiguracija lokalne mree sa serverima lociranim unutar lokalne mree ostavlja brojne sigurnosne rupe koje veti napadai mogu iskoristiti. Napadai mogu iskoristiti konfiguraciju firewalla koja proputa i poetne pakete kako bi preko servera dospeli do ostalih raunara u mrei ili barem saznali odreene informacije o njima. 4.6.Konfiguracija mree sa jednim serverom i dva firewal-a Ukoliko organizacija treba lokalnu mreu sa serverima onda su prola dva opisana rjeenja neadekvatna jer omoguavaju razliite napade. Koritenjem dva firewall-a, spreavaju se razliiti oblici napada koji bi inae bili mogui. Kao to je vidljivo sa slike , prvi firewall se spaja na Internet i mreu servera, tzv. vanjska lokalna mrea. Izmeu mree servera i lokalne mree smeta se drugi firewall. Politike proputanja paketa koju firewalli primenjuju su razliite. Firewall koji titi unutranju lokalnu mreu proputa samo one pakete prema unutranjoj lokalnoj mrei samo one pakete koji su deo neke uspostavljene veze. Firewall koji je spojen na Internetom mora uz te pakete proputati i pakete koji su namenjeni serverima. 4.5.Konfiguracija mree sa dimilitarizovanom zonom U prethodnom primeru konfiguracije mree potrebno je koristiti ak dva firewalla. Time se usporava brzina prenosa podataka jer podaci prolaze dve obrade, ali i cena cele mree jer je potrebno iskoristiti jedan raunar kao firewall. Reenje za spomenuti problem je koritenje konfiguracije sa demilitariziranom zonom, koja prua jednaku funcionalnost, ali bru i jeftiniju od prethodno opisane. Firewallu pomou kojeg se filtrira mreni promet dodeljene su dve mree: Interna lokalna mrea i Mrea server , tzv. demilitarizirana zona. Na firewallu je potrebno postaviti takvu konfiguraciju koja e proputati na interfejs prema unutranjoj lokalnoj mrei samo pakete koji su deo uspostavljene veze. Prema serverima je potrebno omoguiti slanje poetnih paketa i sa unutarnje lokalne mree, i sa Interneta. 4.6.Firewall-i zasnovani na hostu U ovom se sluaju koristi raunar umesto routera. To nudi mnogo vie mogunosti praenja aktivnosti koje se odvijaju preko firewalla. Dok firewall zasnovan na routeru nadgleda pakete na IP prazini, hostovi prenose kontrolu na novim aplikacijama. Da bi se osigurali od potencijalnih problema koji bi se mogli pojaviti
zbog propusta u implementaciji sigurnosti u uobiajenoj programskoj podrci za mrene usluge, firewalli zasnovani na hostovima obino koriste posebne verzije programa koji pruaju podrku potrebnim servisima. To su najee ogoljene verzije orginalnih programa koje su zbog svoje kratkoe puno jednostavnije za odravanje, pa je i manja mogunost za sluajne propuste (bagove) koji naruavaju sigurnost. Osnovni nedostatak takvih firewalla je potreba za posebnom programskom podrkom za svaki od servisa koji treba podrati za mreu "iza" firewalla. Kao dodatna mera zatite najee se koristi kombinacija zatite na nivou aplikacije i filtrirajueg routinga kojega takoe obavlja sam host ili router. 4.7.Izolaciske mree Izolaciske mree su vrlo sline firewallima zasnovanim na hostu, osim to se izmeu privatne mree i Interneta ne postavlja host nego mrea. Meutim, ta se mrea moe sastojati i od samo jednog vora konfigurisanog tako da i jedna i druga mrea moe pristupiti izolacijskoj mrei, ali istovremeno tako da izolacijska mrea ne proputa direktan promet izmeu privatne mree i Interneta. Glavna prednost izolacijske mree je u tome to omoguava jednostavnije postavljanje i dodjeljivanje novih Internet adresa, naroito kod velikih privatnih mrea koje bi se inae morale znatno rekonstruisati. To u osnovi znai da raunari "iza" izolacijske mree ne moraju imati adrese koje su poznate raunarima na Internetu. Na taj nain se moe prikljuiti cela mrea raunara "iza" firewalla na Internet , koritenjem samo jedne Internet adrese.
Podeavanje IIS-a
Podesavanje Apache-a
Instaliranje PHP-a
10
11
root pass
12
13
14
Prilikom instalacije Active Directory-a potrebno je postaviti LDAP (instalirali smo WIN server 2003 na virtuelnu mainu). Nakon toga podesili smo IP adresu, Subnet mask, DNS, I preli na instaliranje AD-a. Ispod su screenshoot-vi instalacije AD-a.
Slika 1
Slika 2
Slika 3
Slika 4
Slika 5
Slika 6
Slika 7
Slika 8
Slika 9
Slika 10
Slika 11
Slika 12
10
Prvoseinstaliraapache2komandom Sudoaptgetinstallapache2 Nakoninstalacijeonsenalaziu/etc/apache2/ Mozeseprovjeritidaliradiakosekucauwebbrowserlocalhost(trebalobidaotvoristranicuna kojojpiseIT'SWORKS) Nakontoganamjepotrebnodainstaliramophp5,mysqlbazupodatakaiphpmyadminsasljedecim komandama: Sudoaptgetinstallphp5 Sudoaptgetinstallmysqlclient Sudoaptgetinstallphpmyadmin Naravno,prilikominstalacijemysqlbazeunosimonazivisifruzaadministatorabaze. Nakontogapotrebnojedainstaliramojoomlunajednomvirtualnomhostu. Prvoskinemoinstalacionifajlsastranicejoomla.org.Nakontogajepotrebnodagaraspakujemo. Joomlajespremnazainstalaciju.Sadajepotrebnooticiu/var/www/. Utomfolderusenalazihtmlfajlkojijedefaultikojiseotvorikadseuwebbrowserukucalocalhost. Njegajepotrebnoobrisati. Potomu/var/www/kreiratidirektorijumnazivajoomla(mozeidrugacije)iutajdirektorijprekopirati raspakovanujoomlu.Nakontogapotrebnojeizkomandnogprozora(iliakosteumeuvremenu instaliralinekiGUIsoftverzaupravljenjebazompodataka)kreiratibazujoomlakojucekoristiti joomla. Akostesvedobrouradili,nakonstoukucateuwebbrowserlocalhoststartatceinstalacijajoomle. Kadasejoomlainstalirapotrebnojeizfolderaukojemjeinstalirana(/var/www/joomla/)obrisati instalacionifajl. Sadajejoomlupotrebnostavitinajedanvirtuelnihost.Otvoritedokumentukojemsenalazehostovi idodatejoomlu,sasljedecomkomandom: Gedit/etc/hosts Kadaseotvoriovajdokumentpotrebnojedodatilinijunpr.127.0.0.1joomla.arm.ri.etf.unsa.ba Toznacidajeimehostajoomla.arm.ri.etf.unsa.ba. Potomseotvorikonfiguracionadatotekagdjesedefinisuostaliparametrizahost.Kucamosljedecu komandu Gedit/etc/apache2/sitesavailable/default
UnutardefinicijehostapotrebnojedodatilinijuServerNamejoomla.arm.ri.etf.unsa.ba Toznacidakadauwebbrowserkucamojoomla.arm.ri.etf.unsa.bapokrenutcesenasainstalirana joomla.UnutardefinicijehostapotrebnojeizmijenitiDocumentRootu/var/www/joomla(jersetu nalazijoomla). Spasitepromjeneirestartujeteapache2komandom: Serviceapache2restart Nakonovogatrebalobikaduwebbrowserukucamojoomla.arm.ri.etf.unsa.badaotvoripocetnu stranicunasejoomle.Akozelimodavrsimoizmjenenastranici,potrebnojeukucati joomla.arm.ri.etf.unsa.ba/administratorteselogovatinajoomlukaoadministrator. Sadajepotrebnoinstaliratiwebmail.Prvoinstaliramopostfixidovecotkomandama: Sudoaptgetinstallpostfix Sudoaptgetinstalldovecot Ukonfiguracionojdatotecipostfixasepromjeniimehostauimenasegservera,dodasenasadomena (unasemslucajucrew.arm.ri.etf.unsa.ba).Ukonfiguracionojdatotecidovecotasespecificirajukoji protokolisekoristezapristupsanducetu(unasemslucajupop3iimap4). Nakontogaseu/etc/hostsdodajosjedanhostkojicesekoristitizawebmail. Iu/etc/apache2/sitesavailable/defaultkopirakonfiguracijaonogprvoghosta(znacikopiraseuistu tudatotekusamoispodovog)ipromjeniseServerNameuimeovoghosta(unasemslucaju webmail.arm.ri.etf.unsa.ba)ipromjeniseDokumentRoot(tozavisiodtogagdjeceteinstalirati webmailaplikaciju).Trebanapomenutidaseoveaplikacijemoguinstaliratiiizvandirektorijuma /var/www/samoondatrebadodatipravuputanjuuDocumentRoottoghosta. Sadasepozeljiinstalitranekawebmailaplikacija(unasemslucajusquirrelmail)komandom: Sudoaptgetinstallsquirrelmail Nakontogaseizvrsepotrebnemodifikacijeteaplikacijetakodaonakoristinasudomenu.