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.