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 klujenata, dok je životni vevk 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. U konkretnom slučaju, 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. Drugim rečima, 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 (vidi sliku 3) predstavlja skup instrukcija pomoću kojih se ostvaruje komunikacija između aplikacionog nivoa i operativnog sistema.
Slika 3. Pozicija socket interfejsa
Iste instrukcije se mogu koristit za čitanje i upis u socket. Drugim rečima, dodaju se samo nova izvorišta i odredišta u programski jezi, bez da se menja način na koji se podaci predaju ili primaju. Na slici 4 prikazana je ideja i uporedba socket-a sa drugim izvorištima i odredištima podataka.
Slika 4. Socket_-i'>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. Kao što se vidi sa slike 5 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.
Slika 5. Korišćenje socket-a kod komunikacije tipa proces-ka-procesu (fig. 2.6. pp. 40)
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.
Kao što smo već ranije naglasili, svaki računar povezan na Internet na jedinstven način je definisan svojom IP adresom, tj. pomoću 32-bitne celobrojne vrednosti kod tekuće Internet verzije. 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. Kao što smo već prethodno ukazali, aplikacioni program se može definisati pomoću broja porta (port number), a to je 16-bitna celobrojna vrednost. To znači da socket adresa predstavlja kombinaciju IP adrese i port adrese (vidi sliku 6).
Slika 6. Socket adresa
Pošto se socket-om definiše komunikacija tipa end-to-end može se kazati da se socket-om identifikuje par socket adresa: lokalna i udaljena.
|