internet aplikacije i mrežno programiranje

25

Upload: truly

Post on 14-Jan-2016

73 views

Category:

Documents


3 download

DESCRIPTION

Internet aplikacije i mrežno programiranje. Internet komunikacione paradigme. Internet podržava dve osnovne komunikacione paradigme: paradigmu toka ( stream ) i paradigmu poruke ( message ). Transport toka na Internetu. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Internet aplikacije i mrežno programiranje
Page 2: Internet aplikacije i mrežno programiranje

Internet podržava dve osnovne komunikacione paradigme: paradigmu toka (stream) i paradigmu poruke (message).

Paradigma toka Paradigma porukeOrijentisano na konekciju Bez konekcije

1-na-1 komunikacija Mnogi-na-mnoge komunikacija

Sekvenca pojedinačnih bajtova Sekvenca pojedinačnih poruka

Proizvoljna dužina prenosa Svaka poruka ograničena na 64 Kbajta

Upotrebljava većina aplikacija Koristi se za multimedijalne aplikacije

Izgrađeno na TCP protokolu Izgrađeno na UDP protokolu

Page 3: Internet aplikacije i mrežno programiranje

Izraz tok označava paradigmu u kojoj sekvenca bajtova teče od jednog aplikativnog programa do drugog.

Internet mehanizam organizuje dva toka između para komunikacionih aplikacija, jedan u svakom smeru.

Mehanizam toka prenosi sekvencu bajtova bez dodeljivanja značenja tim bajtovima i bez umetanja granica.

Page 4: Internet aplikacije i mrežno programiranje

Alternativni Internet komunikacioni mehanizam sledi paradigmu poruke u kojoj mreža prihvata i isporučuje poruke.

Svaka poruka isporučena do primaoca odgovara poruci koju je poslao pošiljalac; mreža nikad ne isporučuje deo poruke, niti spaja više poruka zajedno.

Poruke mogu da budu:

Izgubljene (tj, nikad isporučene) Duplirane (stiže više od jedne kopije) Isporučene bez reda

Paradigma poruke obezbeđuje komunikacije 1-na-1, 1-na-mnoge, ili mnogi-na-1.Poruka se može poslati sa aplikacije na jednom kompjuteru direktno do

aplikacije na drugom, poruka se može poslati (broadcast) do svih kompjutera na datoj mreži, ili se može poslati (multicast) do nekih kompjutera na mreži.

Page 5: Internet aplikacije i mrežno programiranje

Internet servis toka je orijentisan na konekciju (connection-oriented), što znači da servis funkcioniše analogno telefonskom pozivu.

Pre nego što bi mogle da komuniciraju, dve aplikacije moraju zahtevati da se konekcija kreira.

Page 6: Internet aplikacije i mrežno programiranje

Algoritam komunikacije preko mehanizma orijentisanog na konekciju

Svrha:

Interakcija preko mehanizma orijentisanog na konekciju

Metod:

Par aplikacija zahteva konekciju

Taj par koristi konekciju za razmenu podataka

Taj par zahteva da se konekcija prekine

Page 7: Internet aplikacije i mrežno programiranje

Server aplikacija Klijent aplikacijaPrva počinje Druga počinje

Ne mora da zna koji klijent će je kontaktirati

Mora da zna kog servera da kontaktira

Pasivno i proizvoljno dugo čeka kontakt od klijenta

Inicira kontakt kada god je komunikacija potrebna

Komunicira sa klijentom i slanjem i primanjem podataka

Komunicira sa serverom slanjem i primanjem podataka

Ostaje u radu nakon rada sa jednim klijentom, i čeka drugog

Može da prekine nakon završetka interakcije sa serverom

Page 8: Internet aplikacije i mrežno programiranje

Klijent softver:  Je proizvoljan aplikativni program koji postaje klijent privremeno kada je

potreban pristup na daljinu, ali takođe vrši i druge poslove Direktno ga pokreće korisnik, i koristi ga za jednu sesiju Pokreće se lokalno na korisnikovom ličnom kompjuteru Može da pristupi višestrukim servisima ako je potrebno, ali obično

kontaktira jednog po jednog udaljenog servera

Server softver:  Je privilegovan program posebne namene posvećen obezbeđivanju usluge koja

može da radi sa višestrukim udaljenim klijentima u isto vreme Pokreće se atomatski kada se sistem pokreće, i nastavlja da radi kroz

mnoge sesije Pokreće se na velikom, moćnom kompjuteru Pasivno čeka kontakt od nekog udaljenog klijenta Prihvata kontakt od nekog udaljenog klijenta, ali nudi jednu uslugu Zahteva moćan hardver i sofisiticiran operativni sistem

Page 9: Internet aplikacije i mrežno programiranje

Klijent ili server se sastoji od aplikativnog programa, a kompjuter može da pokreće višestruke aplikacije u isto vreme. Kao posledica, kompjuter može da pokreće:

Jednog klijenta Jednog servera Više kopija klijenta koji kontaktiraju dati server Više klijenata koji svaki kontaktira određenog

servera Više servera, gde je svaki za određeni servis

Page 10: Internet aplikacije i mrežno programiranje

Internet protokoli dele identifikaciju na dva dela:  Identifikator za kompjuter na kom se pokreće

server - svakom kompjuteru na Internetu je dodeljen jedinstveni 32-bitni identifikator poznat kao adresa Internet protokola (Internet Protocol address -IP address)

Identifikator za određeni servis na kompjuteru - svakom servisu koji je dostupan na Internetu se dodeljuje jedinstveni 16-bitni identifikator poznat kao broj protokol porta (protocol port number), koji se često skraćeno naziva broj porta-port number.

Page 11: Internet aplikacije i mrežno programiranje

Većina servera su istovremeni (concurrent). Server koristi više od jedne niti kontrole (thread of control)

(neki operativni sistemi koriste izraz nit izvršenja ili procesa (thread of execution or process) za označavanje niti kontrole), da bi radili sa više klijenata u isto vreme.

Kod istovremenog servera se deli na dva dela: - glavni program (thread) i - program za obavljanje zadatka (handler). Glavni program jednostavno prihvata kontakt od klijenta, i

kreira nit kontrole za klijenta. Svaka nit kontrole interaguje sa jednim klijentom, i

pokreće handler kod. Nakon rada sa jednim klijentom, nit se završava.

Glavni program održava server - nakon kreiranja niti za upravljanje zahtevom, glavni program čeka da stigne drugi zahtev.

Page 12: Internet aplikacije i mrežno programiranje

Ako jedan server obezbeđuje neki servis, mrežna konekcija između tog servera i Interneta može postati usko grlo.

Način da se izbegne usko grlo formira osnovu aplikacija deljenja datoteka. Poznata kao arhitektura klasa-sa-klasom (peer-to-peer-p2p), ova šema izbegava postavljanje podataka na centralni server.

Podaci se distribuiraju jednako među setom N servera, i svaki klijentov zahtev se šalje do odgovarajućeg servera.

Zbog toga što dati server samo obezbeđuje 1/N podataka, količina prometa između servera i Interneta je 1/N onoga koliko je je kod arhitekture sa jednim serverom.

Page 13: Internet aplikacije i mrežno programiranje

Interakcija u sistemu klasa-sa-klasom

Page 14: Internet aplikacije i mrežno programiranje

Interfejs koga neka aplikacija koristi da specifikuje komunikaciju je poznat kao Interfejs aplikativnog programa (Application programme Interface-API).

Jedan API se pojavio kao de facto standard za softver koji komunicra preko Interneta.

Poznat kao soketni API (socket API), često se skraćeno naziva soketi (sockets).

API je dostupan za mnoge operativne sisteme, kao što su Windows sistemi Microsoft-a kao i razni UNIX sistemi, uključujući Linux.

Socket API je de facto standard za Internet komunikaciju.

Page 15: Internet aplikacije i mrežno programiranje

Soketno programiranje se razlikuje od konvencionalnog I/O jer aplikacija mora da specifikuje mnogo detalja, kao što su adresa udaljenog kompjutera, broj protokol porta, i da li će aplikacija delovati kao klijent ili kao server

Prednost soketnog pristupa je što većina funkcija ima tri ili manje parametara.

Nedostatak je što programer mora da pamti da poziva više funkcija kada koristi sokete.

Page 16: Internet aplikacije i mrežno programiranje

Glavne funkcije u soketnom API-u

Ime Koristi ga Značenjeaccept server Prihvata dolazeću konekcijubind server Specifikuje IP adresu i protokol portclose oba Prekida komunikacijuconnect klijent Konektuje se na udaljenu aplikacijugetpeername server Dobija klijentovu IP adresugetsockopt server Dobija trenutne opcije za soketlisten server Priprema soket da ga koristi serverrecv oba Prima dolazeće podatke ili porukurecvmsg oba Prima podatke (paradigma poruke)recvfrom oba Prima poruku i adresu pošiljaocasend (write) oba Šalje odlazne podatke ili porukusendmsg oba Šalje odlaznu porukusendto oba Šalje poruku (varijanta sendmsg-a)setsockopt oba Menja opcije soketashutdown oba Prekida konekcijusocket oba Kreira soket za upotrebu od strane gore navedenih

Page 17: Internet aplikacije i mrežno programiranje
Page 18: Internet aplikacije i mrežno programiranje

Funkcija socket descriptor = socket(protofamily, type, protocol)

Funkcija send send(socket, data, length, flags)

Funkcija recv recv(socket, buffer, length, flags)

Funkcija close close(socket)

Page 19: Internet aplikacije i mrežno programiranje

Funkcija connection koju koristi samo klijent

connect(socket, saddress, saddresslen)

Page 20: Internet aplikacije i mrežno programiranje

Funkcija bind

bind(socket, localaddr, addrlen)

Funkcija listen

listen(socket, queuesize)

Funkcija accept

newsock = accept(socket, caddress, caddresslen)

Page 21: Internet aplikacije i mrežno programiranje

sendto(socket, data, length, flags, destaddress, addresslen)

sendmsg(socket, msgstruct, flags)

Page 22: Internet aplikacije i mrežno programiranje

recvfrom(socket, buffer, length, flags, sndraddr, saddrlen)

recvmsg(socket, msgstruct, flags)

Page 23: Internet aplikacije i mrežno programiranje

getpeername gethostname setsockopt getsockopt gethostbyname gethostbyaddr gethostbyaddr gethostbyname

Page 24: Internet aplikacije i mrežno programiranje

Svaka nova nit koja se kreira prima (nasleđuje) kopiju svih otvorenih soketa od niti koja ju je kreirala.

Implementacija soketa koristi mehanizam referentnog brojanja (reference count) za kontrolu svakog soketa.

Kada se soket prvo kreira, sistem postavlja broj reference soketa na 1, i soket postoji sve dok je referentni broj pozitivan.

Kada program kreira dodatnu nit, ta nit uzima neki pokazivač za svaki otvoreni soket kog program poseduje, a sistem povećava referentni broj svakog soketa za 1.

Kada neka nit pozove close, sistem smanjuje referentni broj za taj soket; ako referentni broj dostigne nulu, soket se uklanja.

Page 25: Internet aplikacije i mrežno programiranje

U slučaju istovremenog servera, glavna nit poseduje soket koji se koristi za prihvatanje dolazećih konekcija.

Kada stigne zahtev za konekciju, sistem kreira novi soket za

novu konekciju, a glavna nit kreira novu nit za rad sa tom konekcijom.

Odmah nakon što se nit kreira, obe niti imaju pristup početnom soketu i novom soketu, i referentni broj svakog soketa je 2.

Glavna nit poziva close za novi soket, a nit servisa poziva close za početni soket, smanjujući referentni broj svakog na 1.

Konačno, kada završi interakciju sa klijentom, nit servisa poziva close za novi soket, smanjujući referentni broj na nulu i dovodi do toga da se soket briše.