Download as pdf or txt
Download as pdf or txt
You are on page 1of 41

Računarske mreže

dr. sc. Amer Hasanović

Fakultet elektrotehnike Univerziteta u Tuzli


Laboratorij za informacijsko-komunikacijske tehnologije
Osnovne informacije
 Predavači:
 dr.sc. Amer Hasanović

 dr.sc. Aljo Mujčić


 dr.sc. Nermin Suljanović
 Kontakt
 Zgrada FE, kancelarija br 213
 Email: amer.hasanovic@untz.ba
 Asistent:
 Semir Puškarević

 Prezentacije dostupne na:


 http://ictlab.com.ba/~amer

Fakultet elektrotehnike Univerziteta u Tuzli


Laboratorij za informacijsko-komunikacijske tehnologije
Ciljevi i preduslovi
 Ciljevi:
 Principi rada komunikacijskih mreža sa

fokusom na Internet
 Osnovni mrežni protokoli i algoritmi
 Koncepti programiranja aplikacija koje
komuniciraju putem mreže
 Preduslovi:
 Operativni sistemi
 Osnovi programiranja
 Algoritmi i strukture

Fakultet elektrotehnike Univerziteta u Tuzli


Laboratorij za informacijsko-komunikacijske tehnologije
Plan
 Aplikacioni sloj:
 HTTP, FTP, SMPT, DNS
 Socket API
 Transportni sloj:
 UDP, TCP
 Mrežni sloj:
 IP
 Algoritmi za usmjeravanje

Fakultet elektrotehnike Univerziteta u Tuzli


Laboratorij za informacijsko-komunikacijske tehnologije
Literatura i software
 Knjiga
 F. Kurose, Keith W. Ross, “Computer Networking,
A Top-Down Approach Featuring the Internet,”
Adison-Wesley, 2004.
 Software
 Wireshark
 GCC toolchain

Fakultet elektrotehnike Univerziteta u Tuzli


Laboratorij za informacijsko-komunikacijske tehnologije
Organizacija i ocjenjivanje
 Od studenata se očekuje da rade uporedo sa
predavanjima.
 Ukupna ocjena iz predmeta će se formulisati na
osnovu zarađenih bodova iz testova i aktivnosti
na vježbama (provjere zadaća, kvizovi, projekti).
 Udio u ukupnoj ocjeni:
 Testovi 80%
 40 % test na sredini semestra
 35 % završni ispit Skala za konačne ocjene:
Bodovi Ocjena
 Vježbe 25% 50-64 6
65-74 7
75-84 8
85-94 9
95-100 10
Fakultet elektrotehnike Univerziteta u Tuzli
Laboratorij za informacijsko-komunikacijske tehnologije
Pregled predavanja
 Koncepti mrežnih aplikacija
 Klijent server arhitektura
 socket i port
 HTTP protokol
 primjena
 formati poruka
 keširanje

Fakultet elektrotehnike Univerziteta u Tuzli


Laboratorij za informacijsko-komunikacijske tehnologije
Internet arhitektura

Internet

Fakultet elektrotehnike Univerziteta u Tuzli


Laboratorij za informacijsko-komunikacijske tehnologije
Internet arhitektura

Fakultet elektrotehnike Univerziteta u Tuzli


Laboratorij za informacijsko-komunikacijske tehnologije
Internet aplikacije

Aplikacija

Aplikacija

Fakultet elektrotehnike Univerziteta u Tuzli


Laboratorij za informacijsko-komunikacijske tehnologije
Internet aplikacije

Aplikacija

Aplikacija

Fakultet elektrotehnike Univerziteta u Tuzli


Laboratorij za informacijsko-komunikacijske tehnologije
Internet protokol slojevi

Aplikacija
Transportni
Mrežni
Link
Fizički

Aplikacija
Transportni
Mrežni
Link
Fizički

Fakultet elektrotehnike Univerziteta u Tuzli


Laboratorij za informacijsko-komunikacijske tehnologije
Internet protokol slojevi

Aplikacija
Transportni
Mrežni
Link
Fizički

Aplikacija
Transportni
Mrežni
Link
Fizički

Fakultet elektrotehnike Univerziteta u Tuzli


Laboratorij za informacijsko-komunikacijske tehnologije
Aplikacioni protokoli
 Protokoli na aplikacionom nivou definiraju:
 Tip i sintaksu poruka koji se razmjenjuje između
aplikacija
 Značenje infromacija unutar poruka
 Pravila kada i kako se procesiraju poruke
 Aplikacioni protokoli mogu biti:
 Javno definirani i standardizirani (npr HTTP, SIP itd)
 Zatvoreni (proprietary) (npr. Skype VOIP protokol)

Fakultet elektrotehnike Univerziteta u Tuzli


Laboratorij za informacijsko-komunikacijske tehnologije
Zahtijevi aplikacija spram transporta
 Različite aplikacije imaju različite zahtijeve
spram transporta sa stanovišta:
 gubitka podataka
 kašnjenja
 brzine prenosa (bandwidth)

Aplikacije Gubici dozvoljeni bandwidth Kašnjenje dozvoljeno

prenos fajlova ne fleksibilno da


e-mail ne fleksibilno da
streaming audio/video da audio: 5kbps-1Mbps ne
video:10kbps-5Mbps

Fakultet elektrotehnike Univerziteta u Tuzli


Laboratorij za informacijsko-komunikacijske tehnologije
Internet transport protokoli
 TCP protokol  UDP protokol
 Pouzdani transport  Nepouzdani transport
između dva mrežna između dva mrežna
čvora čvora
 Komunikacija počinje  Ne pruža garancije
nakon uspostavljanja ostvarivanja konekcije,
veze pozdanosti, kašnjenja i
 Pruža kontrolu zagušenja bandwith-a
na mreži (smanjuje
generiranje paketa
ukoliko mreža zagušena)
 Ne pruža garancije
kašnjenja i bandwith-a

Fakultet elektrotehnike Univerziteta u Tuzli


Laboratorij za informacijsko-komunikacijske tehnologije
Mreže i procesi
 Proces je program u izvršenju
 Procesi međusobno putem OS-a mogu da razmjenjuju
poruke na istom računaru (interproces communication)
 Procesi na različitim računarima i različitim OS-ovima mogu
da razmjenjuju poruke putem mreže
 Adresiranje:
 Da bi procesi mogli razmjenjivati poruke preko mreže
moraju imati način da se unikatno identificiraju
 Svaki računar na Internet mreži dobija 32 bitni
identifikacioni broj tzv IP broj, koji predstavlja adresu
računara npr:
 89.146.171.6

Fakultet elektrotehnike Univerziteta u Tuzli


Laboratorij za informacijsko-komunikacijske tehnologije
Procesi i mrežni interface
 IP broj nije dovoljan za unikatno identificiranje procesa na mreži
obzirom da se više procesa istovremeno izvršava na jednoj mašini
 Proces koji želi da komunicira preko mreže mora deklarirati dodatnu
adresu, tzv port, broj pomoću kojeg se proces u kombinaciji sa IP brojem
unikatno identificira na mreži
 npr http server ima port adresu 80
 Bilo koji proces da bi komunicirao sa udaljenim računarom
mora koristiti usluge operativnog sistema eksportovane kroz
API.
proces 1

proces 2 proces 11

OS mrežni interface

Fakultet elektrotehnike Univerziteta u Tuzli


Laboratorij za informacijsko-komunikacijske tehnologije
Klijent server arhitektura
 Sa stanovišta mrežne komunikacije procesi mogu imati
uloge:
 Client
 Proces koji uspostavlja konekciju
 Obično povremeno prisutan na mreži
 Obično ima promjenjivu adresu
 Server
 Pasivno očekuje i prima konkeciju
 Obično konstantno prisutan na mreži
 Obično ima fiksnu adresu
 p2p (peer-to-peer)
 Aplikacija sa procesima u dvostrukoj ulozi

Fakultet elektrotehnike Univerziteta u Tuzli


Laboratorij za informacijsko-komunikacijske tehnologije
Socket
Klijent aplikacija Server aplikacija

socket socket

Operativni sistem Operativni sistem

Mrežna kartica Internet Mrežna kartica

 Socket je jedan kraj dvosmjerne komunikacione veze između


dva procesa na mreži
 Socket se definira i koristi putem OS API-a. API definira:
 kreiranje, zatvaranje, pisanje, čitanje u/iz socketa
 tip transporta udp ili tcp
 komunikacione parametre itd.
 Proces može da koristi više socket-a ali svaki mora biti na
različitom portu
Fakultet elektrotehnike Univerziteta u Tuzli
Laboratorij za informacijsko-komunikacijske tehnologije
Klijent i server socket
 Klijent aplikacija
 kreira socket C
 Preko C ostvaruje konekciju sa aplikacijom na serveru na
specifičnom portu P
 piše i čita (send i receive) podatke u i iz C
 obično u skladu sa nekim aplikacionim protokolom
 zatvara i uništava C
 Server aplikacija
 kreira socket S i veže ga za specifični port na računaru
 prihvata konekciju od klijenta preko socketa S
 piše i čita podatke u i iz socket
 zatvara i uništava socket
Fakultet elektrotehnike Univerziteta u Tuzli
Laboratorij za informacijsko-komunikacijske tehnologije
Worl Wide Web (WWW)
 Razvijen ranih 90-tih
 Baziran na hypertext-u i linkovima
 Veoma uspješan zbog
 jednostavnost HTML jezika
 jednostavnost HTTP protokola
 GUI browseri, mogućnost pretrage itd.
 WWW terminologija
 document: web stranica
 object: web stranica se sastoji: HTML fajl koji je opisuje, proizvoljan broj
slika, Javascript, apleti itd. Object je datoteka.
 url: Uniform Resource Locator adresa objekta
 browser: aplikacija tj. klijent za dobijanje i prikazivanje objekata
 web-server: aplikacija koja čuva objekte i obezbijeđuje pristup za objekte
pomoću HTTP protokola
Fakultet elektrotehnike Univerziteta u Tuzli
Laboratorij za informacijsko-komunikacijske tehnologije
HTTP protokol
 Služi da obezbijedi pristup Web objektima
 Koristi konekcioni protokol na nivou transporta (TCP)
 Princip rada:
 Browser otvara TCP socket te šalje web serveru, koji sluša na
portu 80, HTTP poruku - zahtijev (request)
 Nakon primitka zahtijeva, Web server šalje klijentu HTTP poruku –
odgovor (response)
 Komunikacija se obično odvija kao sekveca zahtijeva i odgovora
 HTTP je tekstualni protokol
 HTTP je stateless protol tj
 ponašanje (semantika) bilo kojeg zahtijeva ne ovisi od prijašnjih
eventualno odaslanih zahtijeva

Fakultet elektrotehnike Univerziteta u Tuzli


Laboratorij za informacijsko-komunikacijske tehnologije
HTTP server i klijent u pseudokod-u
browser
while(surfam)
{
adresa = ucitaj_adresu(tastatura);
socket = otvori_konekciju(adresa);
zahtijev = sastavi_http_zahtijev(adresa);
posalji(zahtijev,socket);
odgovor = procitaj(socket);
prikazi_web_stranicu(odgovor);
}

server
while(serviram)
{
socket = prihvati_konekciju();
zahtijev = procitaj(socket);
odgovor = kreiraj_http_odgovor(zahtijev);
posalji(odgovor,socket);
}

Fakultet elektrotehnike Univerziteta u Tuzli


Laboratorij za informacijsko-komunikacijske tehnologije
Primjer (pseudokod) HTTP
browser
while(surfam)
{
adresa = ucitaj_adresu(tastatura);
socket = otvori_konekciju(adresa);
zahtijev = sastavi_http_zahtijev(adresa);
posalji(zahtijev,socket);
odgovor = procitaj(socket);
prikazi_web_stranicu(odgovor);
}

server
while(serviram)
{
socket = prihvati_konekciju();
zahtijev = procitaj(socket);
odgovor = kreiraj_http_odgovor(zahtijev);
posalji(odgovor,socket);
}

Fakultet elektrotehnike Univerziteta u Tuzli


Laboratorij za informacijsko-komunikacijske tehnologije
Primjer (pseudokod) HTTP
browser
while(surfam)
{
adresa = ucitaj_adresu(tastatura);
socket = otvori_konekciju(adresa);
zahtijev = sastavi_http_zahtijev(adresa);
posalji(zahtijev,socket);
odgovor = procitaj(socket);
prikazi_web_stranicu(odgovor);
}

server
while(serviram)
{
socket = prihvati_konekciju();
zahtijev = procitaj(socket);
odgovor = kreiraj_http_odgovor(zahtijev);
posalji(odgovor,socket);
}

Fakultet elektrotehnike Univerziteta u Tuzli


Laboratorij za informacijsko-komunikacijske tehnologije
Primjer (pseudokod) HTTP
browser
while(surfam)
{
adresa = ucitaj_adresu(tastatura);
socket = otvori_konekciju(adresa);
zahtijev = sastavi_http_zahtijev(adresa);
posalji(zahtijev,socket);
odgovor = procitaj(socket);
prikazi_web_stranicu(odgovor);
}

server
while(serviram)
{
socket = prihvati_konekciju();
zahtijev = procitaj(socket);
odgovor = kreiraj_http_odgovor(zahtijev);
posalji(odgovor,socket);
}

Fakultet elektrotehnike Univerziteta u Tuzli


Laboratorij za informacijsko-komunikacijske tehnologije
Primjer (pseudokod) HTTP
browser
while(surfam)
{
adresa = ucitaj_adresu(tastatura);
socket = otvori_konekciju(adresa);
zahtijev = sastavi_http_zahtijev(adresa);
posalji(zahtijev,socket);
odgovor = procitaj(socket);
prikazi_web_stranicu(odgovor);
}

server
while(serviram)
{
socket = prihvati_konekciju();
zahtijev = procitaj(socket);
odgovor = kreiraj_http_odgovor(zahtijev);
posalji(odgovor,socket);
}

Fakultet elektrotehnike Univerziteta u Tuzli


Laboratorij za informacijsko-komunikacijske tehnologije
Primjer (pseudokod) HTTP
browser
while(surfam)
{
adresa = ucitaj_adresu(tastatura);
socket = otvori_konekciju(adresa);
zahtijev = sastavi_http_zahtijev(adresa);
posalji(zahtijev,socket);
odgovor = procitaj(socket);
prikazi_web_stranicu(odgovor);
}

server
while(serviram)
{
socket = prihvati_konekciju();
zahtijev = procitaj(socket);
odgovor = kreiraj_http_odgovor(zahtijev);
posalji(odgovor,socket);
}

Fakultet elektrotehnike Univerziteta u Tuzli


Laboratorij za informacijsko-komunikacijske tehnologije
Primjer (pseudokod) HTTP
browser
while(surfam)
{
adresa = ucitaj_adresu(tastatura);
socket = otvori_konekciju(adresa);
zahtijev = sastavi_http_zahtijev(adresa);
posalji(zahtijev,socket);
odgovor = procitaj(socket);
prikazi_web_stranicu(odgovor);
}

server
while(serviram)
{
socket = prihvati_konekciju();
zahtijev = procitaj(socket);
odgovor = kreiraj_http_odgovor(zahtijev);
posalji(odgovor,socket);
}

Fakultet elektrotehnike Univerziteta u Tuzli


Laboratorij za informacijsko-komunikacijske tehnologije
Primjer (pseudokod) HTTP
browser
while(surfam)
{
adresa = ucitaj_adresu(tastatura);
socket = otvori_konekciju(adresa);
zahtijev = sastavi_http_zahtijev(adresa);
posalji(zahtijev,socket);
odgovor = procitaj(socket);
prikazi_web_stranicu(odgovor);
}

server
while(serviram)
{
socket = prihvati_konekciju();
zahtijev = procitaj(socket);
odgovor = kreiraj_http_odgovor(zahtijev);
posalji(odgovor,socket);
}

Fakultet elektrotehnike Univerziteta u Tuzli


Laboratorij za informacijsko-komunikacijske tehnologije
Primjer (pseudokod) HTTP
browser
while(surfam)
{
adresa = ucitaj_adresu(tastatura);
socket = otvori_konekciju(adresa);
zahtijev = sastavi_http_zahtijev(adresa);
posalji(zahtijev,socket);
odgovor = procitaj(socket);
prikazi_web_stranicu(odgovor);
}

server
while(serviram)
{
socket = prihvati_konekciju();
zahtijev = procitaj(socket);
odgovor = kreiraj_http_odgovor(zahtijev);
posalji(odgovor,socket);
}

Fakultet elektrotehnike Univerziteta u Tuzli


Laboratorij za informacijsko-komunikacijske tehnologije
Anatomija HTTP zahtijeva
Request linija

Header linije

Prazna linija

Tijelo
 Method:
 GET zahtjeva objekt specificiran sa URL
 HEAD zahtjeva header objekta sa URL
 POST šalje form podatke u tijelu zahtjeva. URL identificira objekat koji će
tretirati poslane podatke
 Version: HTTP/1.0 ili HTTP/1.1
 Header linije nose dodatne parametre zahtjeva
 Tijelo je opciono ovisno od tipa zahtjeva
Fakultet elektrotehnike Univerziteta u Tuzli
Laboratorij za informacijsko-komunikacijske tehnologije
Primjer HTTP zahtijeva

GET /bos/dobrodosli.htm HTTP/1.1


Host: www.siporextuzla.com
User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.11) Gecko/20071204 BonEcho/2.0.0.11
Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Connection: keep-alive

Fakultet elektrotehnike Univerziteta u Tuzli


Laboratorij za informacijsko-komunikacijske tehnologije
Anatomija HTTP odgovora

Status linija

Header linije

Prazna linija
Tijelo

 Tijelo obično uključuje objekat koji je tražen

Fakultet elektrotehnike Univerziteta u Tuzli


Laboratorij za informacijsko-komunikacijske tehnologije
Primjer odgovor
HTTP/1.1 200 OK
Date: Sun, 13 Jan 2008 21:14:24 GMT
Server: Apache/2.0.54 (Fedora)
Last-Modified: Fri, 15 Jun 2007 12:51:59 GMT
Accept-Ranges: bytes
Content-Length: 12863
Connection: close
Content-Type: text/html

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">


<html>
<head>
<title>SIPOREX d.o.o. Tuzla</title>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1250">
<script language="JavaScript" type="text/JavaScript">
.... nastavlja se dalje

 Status kodovi:
 2xx uspješna operacija
 3xx preusmjeravanje
 4xx client greška (404 not found, 400 bad request)
 5xx server greška (503 service overloaded)

Fakultet elektrotehnike Univerziteta u Tuzli


Laboratorij za informacijsko-komunikacijske tehnologije
HTTP zahtijev analiza

Inicijaliziraj TCP konekciju

Zatraži objekat

Vrijeme za transmisiju objekta

prenos objekta

 Ukupno vrijeme:
 2*RTT+vrijeme za prenos objekta

Fakultet elektrotehnike Univerziteta u Tuzli


Laboratorij za informacijsko-komunikacijske tehnologije
Tipovi HTTP konekcija
 non-persistent – nepostojana (HTTP 1.0)
 Maksimalno jedan objekat se šalje na uspostavljenoj TCP
konekciji. Nakon primitka objekta TCP konekcija se prekida.
 npr ukoliko na stranici postoji 10 slika, ukupno 11 TCP
konekcija je potrebno ostvariti da bi se prikazala stranica
 moguće u više niti otvoriti paralelne konekcije sa serverom.
 Značajno troši mrežne i OS resurse
 persistent – postojana (HTTP 1.1 default)
 Više objekata moguće slati po istoj TCP konekciji i to:
 Za slučaj bez pipelining-a, nakon što se primi jedan objekat,
novi HTTP zahtijev se ostvaruje po istoj konekciji
 Za slučaj sa pipelining-om, višestruki zahtijevi se šalju po istoj
TCP konekciji kada se za to ukaže potreba, bez čekanja na
primitak objekata

Fakultet elektrotehnike Univerziteta u Tuzli


Laboratorij za informacijsko-komunikacijske tehnologije
HTTP caching
 Snimanjem prethodno preuzetih objekta moguće je
smanjiti količinu mrežnog saobrećaja i kašnjenja.
 Uslovni GET HTTP zahtijev omogućava klijentu da
provjeri ukoliko je lokalna kopija ujedno i aktuelna
kopija na serveru.
 Skupa sa objektom klijent snima i termin kada je načinjena
lokalna kopija
 Kada načini ponovni GET zahtijev za istim objektom, klijent
uključuje If-Modified-Since polje u header liniji zahtijeva
postavljen na datum od lokalne kopije
 Ukoliko nije došlo do izmjena objekta na serveru, server će
poslati odgovor sa kodom 304 (Not Modified) i praznim
tijelom odgovora
 U suprotnom server šalje odgovor sa kodom 200 (OK) i
trenutnom verzijom objekta u tijelu poruke

Fakultet elektrotehnike Univerziteta u Tuzli


Laboratorij za informacijsko-komunikacijske tehnologije
Uslovni GET primjer
GET /bos/dobrodosli.htm HTTP/1.1
Host: www.siporextuzla.com Prvi GET zahtijev
HTTP/1.1 200 OK
Date: Tue, 26 Feb 2008 22:38:36 GMT
Server: Apache/2.0.54 (Fedora)
Last-Modified: Fri, 15 Jun 2007 12:51:59 GMT
ETag: "98000ac-323f-501679c0"
Accept-Ranges: bytes
Content-Length: 12863
Connection: close
Content-Type: text/html
Prvi Odgovor
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>SIPOREX d.o.o. Tuzla</title>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1250">
<script language="JavaScript" type="text/JavaScript">
<!--
function MM_reloadPage(init) { //reloads the window if Nav4 resized
itd.....

GET /bos/dobrodosli.htm HTTP/1.1


Host: www.siporextuzla.com
If-modified-since: Fri, 15 Jun 2007 12:51:59 GMT
Drugi uslovni GET zahtijev
HTTP/1.1 304 Not Modified
Date: Tue, 26 Feb 2008 22:42:27 GMT
Server: Apache/2.0.54 (Fedora) Drugi Odgovor
Connection: close
ETag: "98000ac-323f-501679c0"

Fakultet elektrotehnike Univerziteta u Tuzli


Laboratorij za informacijsko-komunikacijske tehnologije
Web proxy
 Ideja zadovoljiti zahtijev za određenim objektom bez
kontakta servera na kojem se nalazi objekat
 Korisnik u browser-u može podesiti postavke vezane za Proxy
računar.
 Browser nakon podešavanja sve HTTP zahtijeve preusmjerava
prema Proxy računaru
 Objekti u proxy cache-u se odmah šalju klijentu
 Za objekte koji nisu u proxy cache-u, proxy kontaktira server,
snima u svoj cache preuzeti objekat, nakon čega isti šalje klijentu

Proxy
Klijent
Server

Klijent
Fakultet elektrotehnike Univerziteta u Tuzli
Laboratorij za informacijsko-komunikacijske tehnologije

You might also like