Transcript Document
Aplikacioni nivo kod TCP/IP Aplikacioni nivo Celokupni Internet, hardver i softver, je projektovan i razvijen da obezbedi servise (usluge) na aplikacionom nivou. Na petom nivou skupa protokola TCP/IP (TCP/IP protocol suite) obezbeđuju se usluge Internet korisnicima. Ostala četiri nivoa namenjena su da učine te servise mogućim. U toku dosadašnjeg životnog veka Interneta razvijen je veliki broj protokola na aplikacionom nivou. Neki od njih je razvijen za specifične namene i nikada nije postao standard. Određeni broj od tih protokola je prihvaćen, neki su modifikovani ili zamenjeni novim, a nekoliko njih je preživelo i postalo standard. Novi aplikacioni protokoli konstantno se danas dodaju Internetu. Paradigme na aplikacionom nivou 1. Da bi se koristio Internet neophodna su dva aplikaciona programa koji međusobno interaguju: - jedan od programa se izvršava na jednom računaru, koji se nalazi na jednom kraju sveta, - drugi program se izvršava na drugom računaru koji može biti lociran bilo gde u svetu. 2. U toku rada aplikacioni programi između sebe šalju poruke koristeći infrastrukturu Interneta. 3. Pri tome je veoma važno razumeti kakav odnos postoji između ova dva programa, u sledećem smislu: Da li su oba aplikaciona programa u stanju da izdaju ili obezbeđuju usluge, ili aplikacioni programi obavljaju samo jednu od pomenutih usluga? 4. U tom pogledu, razvijene su sledeće dve paradigme, - klijent-server i - peer-to-peer (P2P). Klijent-server paradigma Klijent-server je tradicionalna paradigma, kod koje pružaoc usluga, nazvan service provider, je aplikacioni program, koga zovemo serverproces, koji se izvršava neprekidno čekajući da drugi aplikacioni program, nazvan klijent-proces, ostvari vezu preko Interneta i zatraži opsluživanje. Pri ovome, server-proces se izvršava bez prestanka u radu, dok se klijent-proces aktivira samo kada on zahteva opsluživanje. Primer klijent-server paradigme Primer klijent-server komunikacije kod koje tri klijenta komuniciraju sa jednim serverom i primaju servise koje obavlja taj server. Glavni problem kod ove paradigme predstavlja koncentracija komunikacionog i procesnog opterećenja na strani servera, što znači da server mora biti veoma moćna mašina. Tradicionalni servisi koji koriste klijent-server paradigmu su WWW, HTTP, FTP, e-mail, i dr. P2P paradigma Kod P2P paradigme ne postoji potreba da server-proces bude neprestano aktivan i da čeka klijent-procese kako bi se povezao. Odgovornost je podeljena između obadva nivoa (peers). Računar povezan na Internet može da pruža usluge u jednom trenutku i da prihvata usluge u drugom trenutku. IP model Rad TCP/IP protokola transparentan je fizičkom-nivou i nivou-veze pa se zbog toga par TCP/IP može koristiti za rad Ethernet-a, FDDI-a ili Token Ring-a. Adresa na nivou-veze odgovara fizičkoj adresi čvora kakva je: MAC adresa (kod Ethernet ili Token Ring) ili telefonskog broja (kod modemske veze). IP adresa dodeljuje se svakom čvoru internet-a i koristi se da identifikuje lokaciju mreže i bilo koji od subnet-a. P2P paradigma P2P paradigma je skalabila i jeftina. Glavni problemi koji prate P2P su kreiranje bezbednih komunikacija između distribuiranih servisa i primenljivost ove aplikacije (sve aplikacije ne podržavaju P2P paradigmu). Tipične aplikacije za P2P su BitTorrent, Skype, IPTV, i Internet telefonija. Karakterisitke klijent-server paradigme Kod klijent-server paradigme komunikacija na aplikacionom nivou se ostvaruje između dva programa koji se izvršavaju, pri čemu se ovi programi nazivaju procesi: klijent i server. Klijent izvršava program koji inicira komunikaciju putem slanja zahteva, a server je drugi aplikacioni program koji čeka na zahtev od klijenta. Server prvo prihvata zahtev od klijenta, zatim priprema rezultat, i na kraju šalje rezultat nazad ka klijentu. Jedan server obično opslužuje veći broj klijenta. Životni vek servera je beskonačan, jer stalno čeka na zahteve od klijenata, dok je životni vek klijenta konačan, on šalje konačan broj zahteva ka odgovarajućem serveru, prima odzive, i stopira svoj rad. Aplikaciono-programski interfejs Osnovno pitanje koje se sada postavlja je sledeće: Na koji način klijent-proces komunicira sa server-procesom? Kada jedan proces komunicira sa drugim procesom potrebno je da postoji skup instrukcija koji će nižim četiri nivoa TCP/IP skupa protokola ukazati da otvore konekciju, predaju i primaju podatke od drugog kraja, i zatvore konekciju. Skup instrukcija ove vrste naziva se aplikaciono-programski interfejs (application programming interface - API). API sa tačke gledišta programiranja se vidi kao skup instrukcija između dve celine. Aplikaciono-programski interfejs – prod. Jedna od celina je proces koji se izvršava na aplikacionom nivou, a drugi je operativni sistem koji enkapsulira prva četiri nivoa skupa protokola TCP/IP. Proizvođač računara ugrađuje prva četiri nivoa TCP/IP protokola u operativni sistem, a posebno se instalira API, čime je obezbeđeno da rpocesi koji se izvršavaju na aplikacionom nivou mogu da komuniciraju sa operativnim sistemom putem slanja i prijema poruka preko Interneta. Postoji nekoliko API-a, a poznatiji su: socket interfejs, Transport layer interface, TLI, i STREAM. Mi ćemo analizirati samo socket interfejs. Socket interfejs Socket interfejs predstavlja skup instrukcija pomoću kojih se ostvaruje komunikacija između aplikacionog nivoa i operativnog sistema . Iste instrukcije se mogu koristit za čitanje i upis u socket. Dodaju se samo nova izvorišta i odredišta u programski jezik, bez da se menja način na koji se podaci predaju ili primaju. Primena socket-a Ideja i uporedba socket-a sa drugim izvorištima i odredištima podataka Socket-i koriste isti način komuniciranja kao i druga izvorišta i odredišta podataka Socket-i Kao jedna apstrakcija, socket predstavlja strukturu podataka koja se kreira i koristi od strane aplikacionog programa. Komunikacija između klijent i server procesa predstavlja komunikaciju između dva socket-a. Klijent misli da je socket celina koja prihvata zahtev i prosleđuje odziv, a server misli da je socket onaj koji izdaje zahtev, a potreban mu je odziv. Ako se kreiraju dva socket-a, po jedan na svakom kraju, i korektno definišu odredišna i izvorišna adresa, moguće je koristiti dostupne instrukcij eza predaju i prijem podataka. Ostatak odgovornosti je u nadležnosti operativnog sistema i skupa protokola TCP/IP. Socket adrese Interakcija između klijenta i servera je dvosmerna. Da bi se ostvarila dvosmerna komunikacija potrebne su dve IP adrese: lokalna od predajnika i udaljena od prijemnika. Kod jednog istog računara lokalna adresa u jednom smeru (odlaznom) istovremeno predstavlja i udaljenu adresu u drugom smeru (dolaznom). S obzirom da se klijent-server paradigma ostvaruje između dva socket-a, takođe za potrebe komunikacije potreban je par socket adresa: lokalna socket adresa i udaljena socket adresa. Socket adrese Svaki računar povezan na Internet na jedinstven način je definisan svojom IP adresom. Pri ovome, treba naglasiti da se po nekoliko klijent ili server procesa mogu isatovremeno izvršavati na istom računaru, što znači da nam je potreban dodatni identifikator kojim se specificira koji klijent ili srver učestvuje u komunikaciji. Aplikacioni program se može definisati pomoću broja porta (port number), a to je 16bitna celobrojna vrednost. To znači da socket adresa predstavlja kombinaciju IP adrese i port adrese. Pošto se socket-om definiše komunikacija tipa end-to-end može se kazati da se socketom identifikuje par socket adresa: lokalna i udaljena. Određivanje socket adrese Pitanje koje se sada postavlja je sledeće: Na koji način klijent i server definišu adrese za komunikaciiju? Na svakoj strani situacija je različita. Portovi i socket-i Svakom hostu TCP pridružuje socket-broj i port-broj. Port-broj identifikuje željeni servis, socket-broj predestavlja jedinstveni broj za tu vezu. Čvor može da ima nekoliko TELNET veza koje imaju isti port-broj ali će svaka veza imati različit socket-broj. Standardni portovi Port-broj može da prima bilo koju vrednost ali postoji dogovor (konvencija) koji se poštuje kod najvećeg broja sistema. Standardne aplikacije uobičajeno koriste port vrednosti od 0-255, dok nespecificirane aplikacije mogu koristiti vrednosti iznad 255. Format i sadržaj Serverinternet strana datagrama Da bi komunicirao, serveru je potrebna lokalna (server) i udaljena (klijent) socket adresa: Lokalna socket adresa – ova adresa obezbeđuje se od strane operativnog sistema. Operativni sistem zna IP adresu računara na kome se izvršava server proces. Da bi se formirala socket adresa potrebno je IP adresi pridružiti port adresu. Ako je server proces standardan i definisan od strane Internet komisije za donošenje standarda, tada je i port broj takođe definisan. Tako na primer, port broj 80 je dodeljen HTTP-u i ne može se koristiit od strane drugih procesa. Ako server proces nije standardan, tada projektant server procesa može da izabere port broj (iz opsega brojeva dodeljenih od strane Internet komisije za standarde) i da ga dodeli procesu. Format i sadržaj Serverinternet strana datagrama Udaljena socket adresa – ova adresa za potrebe servera predstavlja socket adresu klijenta kojim server ostvaruje konekciju. S obzirom da server može da opslužuje veći broj klijenta, on unapred ne zna udaljenu socket adresu sa kojom treba da komunicira. Server određuje socket adresu kada klijent pokuša da se poveže sa serverom. Klijent socket adresa koja je sastavni deo paketa (request packet) poslat od klijenta prema serveru, prihvata se od strane servera kao udaljena socket adresa, na koju treba poslati odgovor. Drugim rečima, i pored toga što je lokalna socket adresa za potrebe servera fiksna i korisit se u toku njegovog celokupnog životnog veka, udaljena socket adresa se menja u toku svake interakcije sa različitim klijentima. Klijent strana Klijent strani je takođe poterbna lokalna (klijent) i udaljena (server) socket adresa. Lokalna socket adresa – ova adresa obezbeđuje se od strane operativnog sistema. Postupak dodele lokalne socket adrese skoro je identičan postupku dodele lokalne adrese na strani server procesa. Udaljena socket adresa – za klijenta određivanje udaljene (server) socket adrese je nešto složenije. Klijent strana – prod. Kada klijent startuje on treba da zna socket adresu servera ako želi da se poveže sa njim. U ovom slučaju postoje sledeća dva karakteristična slučaja: 1)Ponekad, korisnik koji startuje klijent proces zna kako server port broj, tako i IP adresu računara na kome se server izvršava. U takvoj situaciji programer obe ove informacije saopštava klijent programu. 2)I pored toga što je svakoj standardnoj aplikaciji dodeljen unapred poznati broj, u najvećem broju slučajeva, ne zna se IP adresa. Ova situacija je tipična kada želimo da kontaktiramo Web stranicu, da pošaljemo elektronsku poštu, da kopiramo fajl sa udaljenog računara, i dr. Standardne klijent-server aplikacije U toku životnog veka Interneta razvijeno je nekoliko klijent-server aplikacionih programa. U daljem tekstu ukazaćemo samo na neke od njih kao što su HTTP, WWW, elektronska pošta, FTP, TELNET, DNS. HTTP Hypertext Transfer Protocol (HTTP) je protokol koji se koristi za pristup podacima na World Wide Web. Protokol prenosi podatke u formi punog teksta, hypertext-a, audio, video, i td. Ovaj protokol se naziva hypertext transfer protokol jer njegova efikasnost obezbedjuje njegovo korišćenje u hypertext okruženju gde postoje nagli i brzi prelazi (skokovi) sa jednog dokumenta na drugi. Ideja HTTP-a je veoma jednostavna. Klijent šalje zahtev, koji izgleda kao e-mail poruka, i upućuje ga serveru. Server predaje odziv, koji izgleda kao e-mail odziv, i upućuje ga klijentu. Poruke tipa zahtev i odziv sadrže u sebi podatke u formi pisma formata tipa MIME (Multi-purpose Internet Mail Extension-dopuna SMTP-a koja omogućava da se preko SMTP-a šalju i ne-ASCII kodirane podatke). Komande od klijenta ka serveru se ugradjuju u poruke tipa zahtev. Sadržaji zahtevanih fajlova ili druge informacije se ugradjuju u odzivne poruke. HTTP transakcije HTTP transakcija izmedju klijenta i servera. Klijent inicijalizira transakciju slanjem poruku tipa zahtev. Server se odaziva slanjem odgovora. Kategorije poruka Postoje dva osnovna tipa HTTP poruka: zahtev i odziv. Oba tipa poruke imaju skoro isti format. Poruke tipa zahtev Poruke tipa zahtev čini linija zahtev, zaglavlja, i ponekad telo. Poruke tipa odziv Poruke tipa odziv čini linija status, zaglavlja, i ponekad telo Uniformni lokator resursa (URL) Klijentu koji želi da pristupi dokumentu potrebna je adresa. Da bi olakšao pristup dokumentima koji su distribuirani po celom svetu , HTTP koristi koncept lokatora. Uniformni lokator resursa (Uniform Resource Locator- URL) predstavlja standard za specifikaciju bilo kog tipa informacije na Internet-u. URL definiše četiri stvari: metod, host računar, port, i put. World Wide Web (www) World Wide Web, ili web, predstavlja skladište informacije rasejane po celom svetu, ali zajednički povezane u jednu celinu. WWW je jedistven po kombinaciji koju karakterišu osobine fleksibilnosti, prenosivosti, i user-friendly (bliskost sa korisnikom). Ove osobine čine da www, u odnosu na druge servise koji se nude od strane Interneta, bude po mnogo čemu različitit i specifičan. WWW projekat je bio iniciran od strane CERN-a (European Laboratory for Particle Physics) sa ciljem da se kreira sistem koji će za potrebe naučnih istraživanja manipulisati sa distribuiranim resursima. World Wide Web (www) – prod. Danas, WWW je distribuirani klijent-server servis, kod koga klijent koristeći browser može da pristupi servisu koristeći server. Ipak treba naglasiti da je dostupni servis distribuiran na veći broj lokacija koje se nazivaju web sites. Hypertext i Hypermedia WWW koristi koncept hypertext-a i hypermedia. Kod hypertext okruženja, informacija je zapamćena u skupu dokumenata koji su zajednički povezani koristeći koncept pokazivaća. Neka stavka se može pridružiti drugom dokumentu koristeći pokazivać (pointer). Čitalac koji pretražuje po dokumentu može da predje na drugi dokument izborom (klikom) na stavke koje su povezane sa drugim dokumentima. Dok hypertext dokumenti sadrže samo tekst, hypermedia dokumenti mogu da sadrže slike, grafike, i zvučne tonove. Hypertext i Hypermedia Jedinica hypertext-a ili hypermedia koja je dostupna na Web-u naziva se stranica (page). Glavna stranica organizacije ili individue zove se home-page. Arhitektura pretraživaća (browser-a) Veći broj proizvodjaća nudi komercijalne pretraživaće koje interpretiraju i prikazuju web dokumente. Obično svi pretraživači koriste skoro istu arhitekturu. Svaki browser standardno čine sledeće tri celine: kontroler, klijent programi, i interpreteri. Kontroler prihvata ulaze sa tastature ili miša i koristi klijent programe da bi pristupio dokumentu. Nakon što se pristupilo dokumentu, kontroler koristi jedan od interpretera da bi na ekranu prikazao dokumenat. Klijent programi mogu da prestavljaju jedan od metoda (protokola) koje smo prethodno analizirali, kakvi su HTTP, FTP, ili TELNET. Interpreter može biti HTML ali Java, sve u zavisnosti od tipa dokumenta Arhitektura pretraživaća (browser-a) Dokumenti kod www-a mogu biti grupisani u sledeće tri velike kategorije: statičke, dinamičke, i aktivne. Tip kategorije se zasniva na trenutku kada se odredjuju sadržaji dokumenta. Statički dokumenti Statički dokumenti su dokumnti fiksnog-sadržaja koji se kreiraju i pamte u serveru. Klijent može da dobije samo kopiju tog dokumenta. Sadržaj fajla se odredjuje u trenutku kada se fajl kreira, a ne kada se koristi. Naravno da se sadržaj fajla u serveru može da se promeni, ali korisnik nije taj koji to može da uradi. Kada klijent pristupi dokumentu, predaje mu se kopija dokumenta. Korisnik zatim može da koristi program za pretraživanje (browsing program) sa ciljem da prikaže dokument. HTML Hypertext Markup Language (HTML) je jezik za kreiranje web stranica. Termin markup language je pozajmljen od industrije za publikovanje knjiga. Pre nego što se knjiga složi i štampa, tehnički urednik čita rukopis i daje zamerke. Na osnovu ovih zamerki slovo-slagač zna kako da formatira tekst. Tako na primer, ako tehnički urednik ukaže da deo linije treba da bude štampan bold, on podvlači talasasto taj deo linije. Na isti način podaci web stranice se formatiraju radi interpretacije od strane browser-a. HTML Objasnimo ideju na jednom primeru. Da bi učinili deo teksta koji se u HTML-u prikazuje boldiran, neophodno je da na početku i kraju teksta postavimo marker. Oba markera <B> i </B> predstavljaju instrukcije za browser. Kada browser uoči dva markera, on zna da tekst izmedju ta dva markera treba da bude boldiran Struktura web stranice Web stranicu čine dva dela: zaglavlje i telo. Zaglavlje (head) predstavlja prvi deo web stranice. Zaglavlje sadrži naslov stranice i druge parametre koje browser koristi. Telo - Aktuelni sadržaji stranice nalaze se u telu, koje sadrži tekst i markere. Dok tekst predstavlja aktuelna informacija koja se sadrži u okviru stranice, markeri (tagovi) definišu pojavljivanje (izgled) dokumenta. Svaki HTML marker predstavlja ime iza koga sledi opciona lista atributa, sve zatvoreno u okviru zagrade manje od i veće od, tj. < >. Markeri Browser donosi odluku o strukturi teksta na osnovu markera, a to su obično markeri ugradjeni u tekst. Marker (tag) se zatvara sa dve zagrade < i >, i obično se markeri javljaju u parovima. Početni marker startuje imenom markera, a završni marker počinje sa "/" iza čega sledi ime markera. Marker može da ima listu atributa, pri čemu iza svakog atributa sledi znak jednakosti i vrednost koja se pridružuje tom markeru. Dinamički dokumenti Dinamički dokumenti nemaju unapred definisani format. Umesto toga, dinamički dokumenat se kreira od strane web servera, uvek kada browser zahteva dokumenat. Kada zahtev pristigne web server izvršava aplikacioni program koji kreira dinamički dokumenat. Server vraća izlaz programa kao odziv browser-u koji je zahtevao dokumenat. S obzirom da se "taze" dokumenat kreira kod svakog zahteva, sadržaji dinamičkog dokumenta mogu da variraju od jednog zahteva do drugog. Veoma jednostavan primer dinamičkog dokumenta predstavlja dobijanje vremena i datuma od strane servera. Vreme i datum su tipovi informacije koje su dinamičke po tome što se menjaju od trenutka do trenutka. Klijent može da zahteva od servera da izvršava program, kakav je program "date" kod Unix-a, i da predaje rezultat tog programa klijentu. Dinamički dokumenti Server koji manipuliše sa dinamičkim dokumentima obavlja sledeće korake: 1) Server ispituje URL kako bi odredio da li on definiše dinamički dokumenat 2) Ako URL definiše dinamički dokumenat, server izvršava program 3) Server predaje (šalje) izlaz programa klijentu (browser-u) Zajednički gateway interfejs Zajednički gateway interfejs (Common Gateway Interface – CGI) je tehnologija kojom se kreiraju i manipuliše se dinamičkim dokumentima. CGI predstavlja skup standarda koji definišu kako treba napisati dinamički dokumenat, kako ulazne podatke dostaviti programu, i kako treba koristiti izlazne podatke. CGI nije novi jezik, umesto toga, on dozvoljava programerima da koriste neki od sledećih jezika kakvi su C, C++, Bourne Shell, C Shell, TcL, ili Perl. Korišćenje common kod CGI-a ukazuje da standard drefniše skup pravila koja su zajednička za bilo koji jezik ili platformu. Termin interfejs u ovom slučaju znači da postoji skup unapred definisanih termina, promenljive, pozivi, i drugo, koje se može koristiti od strane bilo kog CGI programa. CGI program CGI program u svojoj najednostavnijoj formi je kod napisan na jednom od jezika koji podržavaju CGI. Bilo koji programer koji može kodirati sekvencu zamisli (ideja) u programu, a zna sintaksu jednog od prethodno'pomenutih jezika može kreirati jednostavan CGI program. Aktivni dokumenti Kod velikog broja aplikacija, neophodno je da postoji program koji će se izvršavati na strani klijenta. Ove aplikacije se nazivaju aktivni-dokumenti. Tako na primer, pretpostavimo da želimo da izvršimo program koji kreira animiranu grafiku na ekranu, ili interaguje sa korisnikom. Programu je definitivno potrebno da se izvršava na strani klijenta gde se odvija animacija ili interakcija. Kada browser zahteva aktivni dokumenat, server šalje kopiju dokumenta u formi bajt-koda. Dokument se zatim izvršava na strani klijenta (browser-a) Aktivni dokumenti Aktivni dokumenti Na strani servera aktivni dokumenat je memorisan u formi binarnog koda. Treba naglasiti, da se ne stvara overhead (ne unosi dodatno režijsko vreme) na strani servera kakav je to slučaj sa dinamičkim dokumentima. I pored toga što se aktivni dokumenat ne izvršava od strane servera, on se memoriše kao binarni dokumenat koji se izvlači od strane klijenta. Kada klijent primi dokumenat, on ga može zapamtiti u svoju memorijsku oblast. Na ovaj način, klijent može ponovo da izvršava dokumenat bez da izda drugi zahtev. Aktivni dokumenat se prenosi od servera ka klijentu u binarnoj formi. To znači da dokumenat može da bude komprimovan na strani servera, a dekomprimovan na strani klijenta, pri čemu se štedi kako na propusnosti tako i na vremenu prenosa. Java Java predstavlja kombinaciju HLL-a, izvršenja u okruženju, i klasu biblioteke koja omogućava programeru da napiše aktivni dokumenat, a browser-u da ga izvrši. Java se može takodje koristiti kao samostalni program bez korišćenja browser-a. Java se najčešće koristi za kreiranje apleta (applet), tj malih aplikacionih programa. Java je objektno-orijentisani jezik, koji je, sintaktički i semantički, veoma sličan C++. Java nije tako složen kao C++ i nema te kompleksnosti koje se odnose na operator overloading ili višestruko nasledjivanje (multiple inheritance). Java je takodje hardverski nezavisna i ne koristi pokazivače. Kod Java, kao i kod drugih objektno-orijentisanih jezika, programer definiše skup objekata i postavlja operacije (metode) koje operišu nad tim objektima. On je typed jezik, što zanči da programer mora da deklariše tip bilo kog dela podatka pre nego što ga počne koristiti. Elektronska pošta Elektronska pošta (e-mail) omogućava korisnicima da razmenjuju poruke. Priroda ove aplikacije različita je u odnosu na druge (FTP, HTTP, TELNET). Kod aplikacija kakve su HTTP i FTP, server program stalno se izvršava, čekajući na zahtev od strane klijenta. Kada zahtev pristigne, server pruža uslugu. Kada se izda neki zahtev postoji i odgovarajući odziv. Kod elektronske pošte situacija je drugačija. Kao prvo, elektronska pošta je jednosmerna komunikacija. Kada Alice pošalje e-mail poruku Bobu ona može da očekuje odgovor, ali taj odgovor nije obavezan da pristigne. Bob mora ali i ne mora da odgovori. Ako Bob odgovori, to je ponovo jednosmerna transakcija. Kao drugo, niti je moguće, niti logično da Bob na svom računaru neprekidno izvršava server program i čeka da mu neko pošalje poruku. Kada Bob ne korisit računar on ga obično isključi. Elektronska pošta Klijent-server programiranje implementirano je na drugačiji način: Osnovna ideja se sastoji u korišćenju nekih računara tipa server kao posrednici. Računar korisnika, kada je uključen, izvršava samo klijent-program, a pomoću računara posrednika ostvaruje se klijent-server paradigma . Arhitektura – scenario dogadjaja Predajnik i prijemnik e-mail-a, Alice i Bob, povezani su preko LAN ili WAN mreže na dva e-mail servera. Administrator mreže svakog korisnika kreira jedan poštanski sanduk (mailbox) u kome se smeštaju primljene poruke. Mailbox je deo hard-diska servera, a realizovan je kao specijalni fajl sa ograničenim pravima pristupa. Samo vlasnik mailbox-a ima pravo pristupa tom fajlu (samo on može da čita sve poruke). Administrator mreže može takođe da kreira red čekanja (spool) u kome se čuvaju poruke koje čekaju da budu poslate. Arhitektura – komponente Prenos jedne e-mail poruke od Alice do Boba se realizuje u devet koraka. Alice i Bob koriste tri različita agenta: User Agent (UA), Mail Transfer Agent (MTA) i Message Access Agent (MAA). Arhtekturu e-mail sistema čine dva UA, dva para MTA (jedan na klijent a drugi na server strani), i jedan par MAA (klijent i server). . Agent korisnika - UA Prva komponenta e-mail sistema je agent korisnika (User Agent - UA). UA pruža servise koji čine korisniku da se predaja i prijem poruka lakše realizuju. UA je softverski paket (program) koji uključuje manipulacije koje se odnose na čitanje (Read), slanje (Send), odgovaranje (Replay), i prosleđivanje (Forward) poruka. Pored toga, UA može da manipuliše i sa loikalnim mailbox-om poruka (čitanje poruka po datumu prijema, čitanje po imenu korisnika, i td.). Postoje dva tipa UA-ova: command-driven i GUI-baziran. Command-driven UA prihvata komande sa tastature i obavlja zadatak. Ovaj tip agenta je bio tipičan za početak razvoja e-mail-a a danas se retko koristi. Savremeni UA-ovi su GUI-zasnovani. Oni sadrže komponente grafičko-korisničkog interfejsa (graphical user interface GUI) koje omogućavaju korisniku da interagije sa softverom koristeći tastaturu i miš. GUI-zasnovan UA uključuje manipulacije sa grafičkim komponentama kakve su ikone, meni barovi i prozori, pomoću kojih se olakšava pristup servisima. Slanje mail-a Da bi poslao mail-a, korisnik pomoću UA kreira mail poruku koja izgleda kao poštansko pismo (postal mail). Ovo pismo sadrži anvelopu (envelope), i poruku (message). Anvelopa obično sadrži adresu predajnika, adresu prijemnika, i druge informacije. Poruka sadrži zaglavlje (header) i telo (body). Zaglavljem se definiše predajnik, prijemnik, subjekt poruke, i neke druge informacije. Telo poruke sadrži aktuelnu informaciju koju primaoc treba da pročita. Prijem mail-a UA se okida (trigeruje) od strane korisnika (ili tajmera). Kada korisnik primi e-mail poruku, UA informiše korisnika o prijemu poruke putem neke napomene (signalizacije). Kada je korisnik spreman da pročita poruku, na ekranu monitora se pokazuje lista poruka pri čemu se u svakoj liniji prikazuje informacija o pojedinoj poruci koja se nalazi u mailbox-u. Informacija koja se prikazuje sadrži adresu pošiljaoca e-mail-a, subjekat i vreme kada je e-mail bio poslat ili primljen. Korisnik može da izabere bilo koju od porukai prikaže je na ekranu. Adrese Da bi se isporučila e-mail poruka, sistem mora da korisit adresiranje koje mora biti jedinstveno. Kod Interneta adresa se sastoji od sledeća dva dela: local part (lokalni deo) i domain name (ime domena), koji su međusobno razdvojeni znakom @. Lokalni deo definiše ime specijalnog fajla, nazvan korisnički mailbox, u kome se čuvaju (memorišu) svi primljeni mejlovi koji se zatim izbavljau za potrebe korisnika pomoću MAA. Organizacije obično namenski koriste jedan (ili veći broj) host-ova za prijem i slanje e-mail-ova. Ovi računari standardno se nazivaju mail-serveri ili exchanger-i. Ime domena koje je dodeljeno svakom mail-serveru pribavlja se iz DNS-ove baze podataka, ili predstavlja neko logičko ime (kao na primer, ime organizacije). Mailing lista ili grupna lista Elektronska pošta omogućava da jedno ime, nazvano alias, predstavlja (odnosi se na) nekoliko e-mail adresa, a ovo se naziva mailing lista. Svaki put kada se šalje neka poruka alias adresi, sistem proverava ime primaoca u odnosu na alias bazu podataka, pa u slučaju da postoji mailing lista sa definisanim alias-om, posebne poruke, po jedna za svaki ulaz u listi, moraju biti pripremljene i obrađene (predate) od strane MTA za svakog korisnika. Message transfer agent – SMTP E-mail predstavlja aplikaciju koja da bi obavila svoj zadatak koristi tri klijentserver paradigme. Prva i druga aplikacija se nazivaju Message Transfer Agent (MTA), a treća Message Access Agent (MAA). Formalni protokol koji definiše MTA klijent i server na Internetu naziva se Simple Mail Transfer Protocol (SMTP). SMTP se koristi dvaput, između predajnika i mail servera predajnika, i između dva mail-servera. Potreban je još jedan protokol između mail-servera i prijemnika. SMPT-om se definiše na koji način komande i odzivi se predaju i primaju, respektivno. Nedostaci elektronske pošte Elektronska pošta je jednostavne strukture koja ima veći broj nedostataka. Ona se može koristiti samo za slanje podataka u NVT 7-bitnom ASCII formatu (NVT – Network Virtual Terminal). Drugim rečima, elektronska pošta ima određena ograničenja jer se ne može koristiti za jezike koji su različiti od engleskog, kakvi su na primer, francuski, nemački, ruski, srpski, kineski, japanski, i dr. Takođe se ne može koristiti za slanje binarnih fajlova, video ili audio podataka. MIME Multipurpose Internet Mail Extension, MIME, je dodatni protokol koji omogućava da se ne-ASCII kodirani podaci prenose preko e-mail-a. MIME trensformiše ne-ASCII kodirane podatke u NVT ASCII kodirane podatke i isporučuje ih (predaje ih) klijent MTA-u kako bi se preneli preko Interneta. Na prijemnoj strani poruka se ponovo transformiše u izvorne podatke. MIME se može zamisliti kao skup softverskih funkcij akoji transformiše neASCII kodirane podatke u ASCII kodirane podatke, i obratno. FTP File Transfer Protocol (FTP) je standardni protokol koji se koristi za kopiranje fajlova sa jednog host-a na drugi. I pored toga što na prvi pogled prenos fajlova sa jednog host-a na drugi izgleda jednostavan, uspešno rešavanje ovog načina prenosa nije tako trivijalan zadatak. Teškoće koje se javljaju su sledeće prirode: Dva sistema mogu da koriste različiti način prezentacije podataka, ili da imaju različite strukture direktorijuma. Svi ovi problemi treba da se reše od strane FTP-a na veoma jednostavan i elegantan način. I pored toga što prenos fajlova može da se ostvari korišćenjem HTTP-a, čini se da FTP predstavlja bolji izbor za prenos fajlova velikog obima ili prenos fajlova koji koriste različite formate. Model FTP-a Klijent ima tri komponente: korisnički interfejs (user interface), klijent upravljački proces (client control process) i klijent-proces za transfer podataka (client data transfer process). Server čine dve komponente: server upravljački proces (server control process) i server proces za transfer podataka (server data transfer process). Model FTP-a Povezivanje na nivou upravljanja (control connection) izvedeno je između dva upravljačka procesa, a konekcija na nivou podataka je ostvarena između procesa za transfer podataka. Razdvajanje prenosa komandi od prenosa podataka čini da FTP bude veoma efikasan protokol. Na nivou upravljanja (control connection) koriste se veoma jednostavna pravila. U datom trenutku potrebno je predati samo jednu komandu ili primiti jedan odziv. Tip konektiranja koji se odnosi na prenos podataka je nešto složeniji, zbog različitih tipova podataka koji se prenose. DNS Da bi identifikovali celinu TCP/IP protokoli koriste IP adresu u formi numeričke vrednosti, koja na jedinstveni način identifikuje konekciju tog hosta na Internet. Ipak, ljudi preferiraju da koriste imena umesto numeričkih adresa. Zbog toga Internet-u je potreban direktorijum-sistem koji obavlja funkciju preslikavanja (prevođenja) imena u adrese. Analogno situacija je i sa telefonskom mrežom. S obzirom da je Internet po svom obimu ogroman, centralni direktorijum ne može i nepraktično je da čuva informaciju o svim preslikavanjima. Naime, ako je centralni direktorijum u kvaru tada celokupna komunikaciona mreža biće u kolapsu. Bolje rešenje je distribuirati informaciju između većeg broja računara. Kod ovog metoda, hostu kome je potrebno preslikavanje može da kontaktira najbliži računar u kome se čuva potrebna informacija. Ovaj metod se koristi od strane Domain Name System, tj. DNS. Namena DNS-a Kako TCP/IP koristi DNS klijent i DNS server za potrebe preslikavanja imena u numeričku adresu? Korisnik je taj koji koristi fajl transfer klijent da bi pristupio odgovarajućim fajl transfer serveru koji se izvršava na udaljenom hostu. Korisnik zna samo ime fajl transfer servera kakav je recimo afilesource.com. Sa druge strane TCP/IP skupu protokola potrebna je IP adresa od fajl transfer servera da bi ostvario konekciju. Koraci kod DNS-a Šest koraka kojima se vrši preslikavanje host imena u IP adresu: 1) Korisnik predaje host ime fajl transfer klijentu; 2) Fajl transfer klijenta predaje host ime DNS klijentu; 3) Svaki računar, nakon procesa boot-ovanja (početnog punjenja) zna adresu jednog DNS servera. DNS klijent šalje poruku DNS serveru koja sadrži pitanje kojim se traži IP adresa za dato host ime; 4) Server se odaziva sa IP adresom željenog fajl transfer servera; 5) DNS klijent predaje IP adresu fajl transfer servera; 6) Fajl transfer klijent sada zna IP adresu prijemnika kojom treba da pristupi fajl transfer serveru. . Imena prostora Kod Internet-a između imena hosta i IP adrese postoji jednoznačno preslikavanje. To znači da izabrano ime mora biti jedinstveno u svetu jer se tom imenu dodeljuje samo jedna IP adresa. Baza podataka tipa ime-prostora (name space), koja se koristi za preslikavanje svake adrese u jedinstveno ime može biti organizovana na jedan od sledeća dva načina: 1) Direktna ( flat – sva imena su na istom nivou hijerarhije), 2) Hijerarhijsko ime prostora (hierarchical name space). Osobine 1) Direktna ( flat – sva imena su na istom nivou hijerarhije) Kod flat name space svakom imenu se dodeljuje adresa. Glavni nedostatak ove dodele se sastoji u tome što je Internet mreža velika, tj. broj hostova je veliki pa zbog toga vervatnoća da se jedno isto ime koristi više puta je velika, a da bi se multipliciranje imena izbeglo mora kontrola provere i dodele imena da se vrši centralizovano (sa jednog mesta), što je dosta neefikasno. 2) Hijerarhijsko ime prostora (hierarchical name space) – Svako ime se sastoji od nekoliko delova. Prvi deo definiše delatnost organizacije, drugi deo definiše ime organizacije, treći deo definiše odeljenje u okviru organizacije, itd. U ovom slučaju, prava koja se odnose na kontrolu i dodelu imena u prostoru su decentralizovana. Tako na primer, elektro.monter.com predstavlja jedinstveno ime kod koga se prvi, drugi i treći deo razdvajaju simbolom “.“. Domen imena prostora Kod hijerarhijske organizacije imena se definišu kao invertovana struktura stabla sa korenom pri vrhu. Stablo može da ima do 128 nivoa, nivo 0 je koren a listovi se mogu naći do 127-og nivoa. Oznaka (labela) Svaki čvor stabla ima svoju oznaku (labelu) koja može biti maksimalnog obima od 63 karaktera. Oznaka koren je nulti-niz (prazan niz). DNS zahteva da deca (naslednici) čvora (čvorovi koji se granaju od tog čvora), imaju različite oznake čime se garantuje jedinstvenost u domenu imena. Ime domena Svaki čvor u stablu ima svoje domen ime. Potpuno ime domena predstavlja niz oznaka koji su izdvojeni simbolom “.“. Imena domena uvek se čitaju (od strane programa) od čvora ka korenu. Zadnja oznaka je oznaka korena. To znači da potpuno ime domena uvek završava sa nultom oznakom, što znači da zadnji karakter predstavlja tačka, a nulti-niz ne predstavlja ništa. Domen Domen predstavlja pod-stablo u domain name space-u. Ime domena je u suštini ime čvora koji se nalazi na vrhu tog pod-stabla. Domen se može dalje deliti na domene. Distribucija domena u prostoru Informacija koja se nalazi u jednom domain name space-u mora biti zapamćena. Veoma je neefikasno i ne tako pouzdano da se ima samo jedan računar koji će pamtiti celokupnu informaciju. Rešenje se ogleda u distribuciji informacije između većeg broja računara koji se nazivaju DNS serveri. Na ovaj način moguće je podeliti ukupni prostor na veći broj domena, granajući se od prvog nivoa. Zona S obzirom da kompletna hijerahija koja se odnosi na ime domena ne može da se zapamti na jednom računaru, takvu informaciju treba raspodeliti na čuvanje većem broju računara. Kod ovakvih rešenja kažemo da jedan server pokriva jednu zonu. Generički domeni Generički domeni definišu hostove u saglasnosti sa njihovim generičkim ponašanjem. Svaki čvor u stablu definiše domen, koji se koristi kao indeks u domain name space bazi podataka. Oznake generičkih domena Domeni zemalja Sekcija domeni zemalja (country domain) koristi dva karaktera kao skraćenicu za zemlju, kao na primer .rs za Republiku Srbiju, .fr za Francusku, .us za Sjedinjene Američke Države, itd. TELNET Server program je taj koji obezbeđuje specifične servise za odgovarajući klijent program. Tako na primer, u datom trenutku jedan FTP server je namenjen da obavlja za poptrebe samo jednog klijenta memorisanje (store) ili izbavljanje (retreive) fajlova na strani servera. Ipak, nemoguće i neracionalno je da se svakom tipu servisa dodeli odgovarajući klijent-server par, jer će tada broj servera biti veoma veliki. Ovakva ideja nije skalabilna. Alternativno rešenje je da za skup zajedničkih scenaria postoji specifični klijent-server program kojji će raspolagati sa nekim generičkim klijentserver programima i obezbediti korisniku na klijent strani da se loguje na računar koji se nalazi na strani servera i koristi servise koji su dostupni na strani servera. Ovakvi generički applications. klijent-server parovi nazivaju se remote logging TELNET Jedan od remote logging programa naziva se TELNET (TERminal NETwork). I pored toga što za njegovo aktiviranje TELNET zahteva unošenje logging imena i password-a, ovaj program je podložan naporima hakera jer prenosi podatke u nešifrovanom obliku. Iz bezbedonosnoh razloga, u novije vreme, TELNET je u skoro potpunosti zamenjen sa Secure Shell (SSH) aplikacionim programom. Koncept lokalni u odnosu na udaljeni logging Koncept lokalni logging Kada se korisnik loguje na strani lokalnog sistema, taj se postupak naziva local logging. Procedura rada je sledeća: Korisnik otkuca zahtevanu informaciju, a terminal prenosi te karaktere operativnom sistemu (OS-u). OS interpretira kombinaciju karaktera i ako je ona odgovarajuća poziva željeni aplikacioni program. Koncept udaljeni logging Kada korisnik želi da pristupi aplikacionom programu lociranom na udaljenoj mašini, on mora da obavi remote logging. U ovom slučaju aktiviraju se klijent i server programi. Korisnik prvo otkuca informaciju na svom terminalu, terminal drajver predaje te karaktere lokalnom OS-u koji ih prihvata, ali ih ne interpretira. Karakteri se zatim predaju TELNET klijentu koji transformiše te karaktere u univerzalni karakter set nazvan Network Virtual Terminal (NVT) i predaje ih lokalnom TCP/IP steku. Koncept udaljeni logging - NVT Komanda ili tekst, u formi NVT, prenosi se preko Interneta i pristiže na TCP/IP stek koji se nalazi na udaljenoj mašini. Karakteri se zatim predaju OS-u i prenose TELNET serveru kkoji konvertuje te karaktere u formu koja je razumljiva udaljenom računaru. Treba pri ovome naglasiti da se karakteri ne mogu direktno predati OS-u, jer udaljeni OS nije projektovan da primi karaktere od TELNET servera nego od terminal drajvera. Rešenje se sastoji u nadogradnji dela softvera nazvan pseudoterminal driver koji interpretira te karaktere kao da su došli sa terminala. OS nakon toga predaje te karaktere aplikacionom programu. Network Virtual Terminal NVT koristi dva skupa karaktera, jedan z apodatke a drugi za upravljanje. Oba skupa su 8-bitni karakteri. Kod podataka NVT koristi formu nazvanu NVT ASCII. To je 8-bitni karakter skup kod koga su 7 LS bita ista kao i US ASCII a MS bit je 0. Kada se šalju kontrolni (upravljački) karakteri (bilo između klijenta i servera i obratno) NVT koristi 8-bitni karakter kod koga je MS bit postavljen na 1. Peer-to-peer paradigma P2P paradigma je postala popularna zbog mogućnosti koje ona pruža kod prenosa on-line muzičkih fajlova koji postaju deljivi za veći broj korisnika. Danas postoji veći broj protokola koji se koriste za prenos i distribuciju deljivih fajlova kakvi su oni tipa DHT, Chord, Pastry, Kademlia, BitTorrent, i dr. Internet korisnici koji su spremni da dele (čine dostupnim) svoje resurse sa drugim korisnicima povezanih na mrežu, tada se oni ujedinjuju i postaju ravnopravni učesnici (peers) u prenosu podataka, na takav način što sada oni formiraju svoju mrežu. Kada neki peer u mreži ima fajl (audio, video, tekst) koga želi da popdeli sa drugim, on čini da taj fajl bude dostupan ostalim peer-ovima. Peer koga interesuje taj fajl može da se poveže sa tim računarom gde je fajl lociran i privuče ga, tj. download-uje. Kada neki peer download-uje fajl, on ga može učiniti dostupnim drugim peer-ovima u mreži za potrebe daljeg download-ovanja. Što više peer-ova download-uje taj fajl, broj dostupnih kopija u toj grupi postaje veći. Peer-to-peer paradigma S obzirom da lista peer-ova u mreži može da se širi i sužava, postavlja se sledeće pitanje: Na koji način ova paradigma čuva trag o lokalnim peer-ovima i lokaciji tih fajlova? Da bi dali odgovor na ovo pitanje neophodno je prvo podeliti P2P mreže na dve kategorije: centralizovane i decentralizovane. Centralizovane mreže Kod centralizovane mreže, directory sistem, koji čuva listing peer-ova i šta oni nude, koristi klijent-server paradigmu, ali memorisanje (storing) i privlačenje (downloading) fajlova obavlja se korišćenjem peer-to-peer paradigme. Zbog ovakve organizacije, P2P mreža se ponekad naziva hibridna P2P mreža. Napster (on line music file sharing service) je tipičan primer centralizovane P2P mreže. Kod ove mreže, peer se prvo registruje kod centralnog servera. Nakon toga, peer predaje svoju IP adresu kao i listu svojih deljivih fajlova. Da bi izbegao kolaps u radu sistema Napster je za ove poptrebe koristio nekoliko servera. Struktura centralizovane mreže Peer koji traži pojedini fajl, predaje pitanje (query) centralnom serveru. Server pretražuje svoj direktorijum i odaziva se sa IP adresom čvorova koji raspolažu kopijom tog fajla. Peer zatim kontaktira jedan od čvorova i download-uje fajl. Direktorijum konstantno se ažurira kako se čvorovi pridružuju ili napuštaju peer, tj. mrežu. Struktura centralizovane mreže Kod centralizovanih mreža održavanje direktorijuma je jednostavno, ali one imaju nekoliko nedostataka. Kao prvo, istovremeni pristup direktorijumu od strane većeg broja peer-ova dovodi do pojave intenzivnog komunikacionog saobraćaja što za posledicu ima sporiji rad mreže. Kao drugo, centralni serveri su podložni napadima hakera, a ako oni otkažu, pada ceo sistem. Decentralizovane mreže Decentralizovane P2P mreže nisu zavisne od centralizovanog directory sistema. Kod ovog modela, peer-ovi međusobno su uređeni u overlay-mrežu, koja se ponaša kao logička mreža a nalazi se na vrhu fizičke mreže. U zavisnosti od toga na koji način čvorovi u overlay mreži su povezani, decentralizovane P2P mreže se mogu podeliti na: nestrukturne i strukturne. Nestrukturne mreže Kod nestrukturne P2P mreže čvorovi su povezani na proizvoljan (random) način. Pretraživanje kod nestrukturne P2P mreže nije tako efikasno jer pitanje (query) da bi se pronašao fajl obavlja se na principu plavljenja (flooding), što dovodi do generisanja značajnog saobraćaja, a da se pri tome i ne dobije odgovor. Tipične mreže ovog tipa su Ginutella i Freenet. Strukturne mreže Strukturne mreže za potrebe povezivanja čvorova koriste unapred definisani skup pravila tako da se pitanje (query) mogu brže i efikasnije razrešavati. Najjednostavnija tehnika koja se koristi za ovu namenu je Distributed Hash Table (DHT). DHT se koristi kod velikog broja aplikacija kakve su Distributed Data Structure (DDS), Content Distributed System (CDS), Domain Name System (DNS), i P2P deoba fajlova. Popularan P2P file-sharing protokol koji koristi DHT je BitTorrent.