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.
Server strana
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.
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. 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:
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.
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. U ovim slučajevima, server ima svoje ime, i identifikator kojim se na jedinstvven način definiše server proces. Primeri ovih identifikatora su URL-ovi (Uniform Resource Locator) kakav je www.xxx.yyy , ili e-mail adresa kakva je recimo xxx@yyy.com. Klijent proces treba sada da promeni ovaj identifikator (ime) u odgovarajuću socket adresu. Klijent proces normalno zna broj porta jer to mora biti dobro (unapred) poznati port broj, ali IP adresu dobija (saznaje) koristeći drugu klijent-server aplikaciju koja se naziva Domain Name System (DNS).
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.
2.1 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. Ipak, 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.
HTTP funkcioniše kao kombinacija FTP-a i SMPT-a. HTTP je sličan FTP-u jer prenosi fajlove i koristi servise TCP-a. No, HTTP protokol je znatno jednostavniji od FTP-a jer koristi samo jednu TCP konekciju. Ne postoji posebna kontrolna (upravljačka) konekcija, a izmedju klijenta i servera se prenose samo podaci.
HTTP je sličan SMPT-u iz razloga što preneti podaci izmedju klijenta i servera izgledaju kao SMPT poruke. Treba naglasiti da se HTTP razlikuje od SMPT-a po tome kako se poruke predaju od klijenta ka serveru, tako i kako se prenose od servera ka klijentu. Nasuprot SMPT-u, HTTP poruke nisu namenjene za čitanje od strane ljudi, one se čitaju i interpretiraju od strane HTTP servera i HTTP klijenta (browser-a). SMTP poruke se memorišu i prosledjuju dalje, dok se HTTP poruke isporučuju neposredno.
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
Na slici 1 prikazana je HTTP transakcija izmedju klijenta i servera. Klijent inicijalizira transakciju slanjem poruku tipa zahtev. Server se odaziva slanjem odgovora.
Slika 1 HTTP transakcija
Poruke
Kao što se vidi sa slike 2 postoje dva osnovna tipa HTTP poruka: zahtev i odziv. Oba tipa poruke imaju skoro isti format.
Slika 2 Kategorije poruka
Poruke tipa zahtev
Poruke tipa zahtev čini linija zahtev, zaglavlja, i ponekad telo (vidi sliku 3)
Slika 3 Poruke tipa zahtev
|