1
2: Nivo aplikacije 12: Application Layer 1
2: Nivo aplikacije 2
Nivo aplikacije
Principi protokola nivoa aplikacijeWeb i HTTPFTPElektronska pošta
SMTP, POP3, IMAPDNSP2P file sharing
2
2: Nivo aplikacije 3
Neke mrežne aplikacije
E-mailWeb“Instant messaging”“Remote login”“P2P file sharing”“Multi-user” mrežne igre“Streaming stored”video klipovi
Internet telefon“Real-time” video konferencija“Grid computing”Društvene mreže
2: Nivo aplikacije 4
Kreiranje mrežne aplikacijeNapisati programe koji
se izvršavaju na različitim krajnjim sistemima ikomuniciraju preko mreže.npr., Web: Web server software komunicira prekobrowser software
Ne piše se softver za uređaje na kičmi mreže
mrežni uređaji na kičmi ne funkcionišu na nivou aplikacijeovakav dizajn dozvoljava brzi razvoj aplikacija
applicationtransportnetworkdata linkphysical
applicationtransportnetworkdata linkphysical
applicationtransportnetworkdata linkphysical
3
2: Nivo aplikacije 5
Arhitekture aplikacija
Klijent-serverPeer-to-peer (P2P)Hibrid klijent-server i P2P…
2: Nivo aplikacije 6
Klijent-server arhitekturaServer:
Uvijek uključen i čeka pristup klijenataPermanentna IP adresaFarme servera
Klijenti:Komuniciraju sa serveromPovezan povremenoMože imati dinamičkuIP adresuNe komuniciraju međusobno
klijent/server
4
2: Nivo aplikacije 7
Google Data CentriProcijenjena cijena data centra: 600 miliona $Google je tokom 2007 potrošio 2.4 milijardi $ u nove data centreSvaki data centar troši 50-100 MW električne struje
2: Nivo aplikacije 8
P2P arhitektura
Server nije uvijek uključenProizvoljni krajnji sistemi mogu direktno komuniciratiPeer-ovi su povremeno povezani i mogu mijenjati IP adresePrimjer: Gnutella
Vrlo skalabilni!
Teški za upravljanje!
peer-peer
5
2: Nivo aplikacije 9
Hibrid klijent-server i P2P
Skypevoice-over-IP P2P aplikacijacentralizovani server: pronalaženje adrese udaljene strane: klijent-klijent konekcija je direktna bez posredovanja servera
Instant messagingČatovanje dva korisnika je P2PDetektovanje prisutnosti i lokacije je centralizovano:
• Korisnik registruje svoju IP adresu na centralni server kada hoće da čatuje
• Korisnik kontaktira centralni server da pronađe IP adresekorisnika sa kojima želi da čatuje
2: Nivo aplikacije 10
Komuniciranje procesa
Proces: program koji se izvršava na hostu.U samom hostu, dva procesa komuniciraju na bazi inter-procesnekomunikacije(definisane u OS).Procesi na različitim hostovima komuniciraju razmjenom poruka
Klijent proces: proceskoji inicijalizuje komunikaciju
Server proces: proceskoji čeka da bude kontaktiran
Napomena: aplikacije saP2P arhitekturom imajui klijent i server procese
6
2: Nivo aplikacije 11
Proces komunikacije mrežom
Proces šalje/prima poruke preko svog “socket”-a“socket” je analogan vratima
Proces šalje poruke prekosocketaproces koji šalje se oslanja na transportnuinfrastrukturu na drugoj stani vrata koja prenosi poruku do “socket”prijemnog procesa
proces
TCP sa baferima,variabile
“socket”
host iliserver
proces
TCP sa baferima,variabile
“socket”
host iliserver
Internet
kontolišeOS
Kontrolisano odprogramera apl.
API: (1) izbor transportnog protokola; (2) mogućnost specificiranja nekoliko parametara (maksimalnaveličina bafera i maksimalna veličina segmenta)
2: Nivo aplikacije 12
Proces adresiranja:Za proces koji prima poruke, mora postojati identifikatorSvaki host ima jedinstvenu 32-bitnu IP adresuPrisjetiti se komande ipconfig...P: Da li je IP adresa hosta na kojem se proces izvršava dovoljna za identifikaciju procesa?
Identifikator uključuje i IP adresu i broj porta vezan za proces na hostu.Primjer brojeva porta:
HTTP server: 80Mail server: 25
VIŠE KASNIJE
O: Ne, mnogi procesi se mogu izvršavati na istom hostu
7
2: Nivo aplikacije 13
Protokol nivoa aplikacije definiše
Tipove poruka koje se razmjenjuju, npr., zahtjevi & poruke odgovoraTipove sintaksi poruka: koja su polja & kako su odvojenaSemantika polja, npr., značenje informacija u poljimaPravila vezana kada i kako se šalju poruku i kako se odgovara na njih
Javni (public) protokoli:Definisani u RFC-ovimaDozvoljavaju interoperatibilnostnpr, HTTP, SMTP
Privatni (proprietary) protokoli:npr, Skype,…
2: Nivo aplikacije 14
Koji transportni servisi su potrebni aplikacijama?Gubici podataka
Neke aplikacije (npr., audio) mogu tolerisati određeni nivo gubitakaDruge aplikacije (npr., file transfer, telnet) zahtijevaju 100% pouzdani transfer podataka
VrijemeNeke aplikacije (npr., Internet telefonija, interaktivne igre)zahtijevaju malo kašnjenje
Brzina prenosaNeke aplikacije (npr., multimedija) zahtijevajupreciziranje minimalne dostupne brzine prenosaDruge aplikacije(“elastične aplikacije”) koriste onoliko opsega koliko mogu dobiti
ZaštitaEnkripcija, integritet podataka, …
8
2: Nivo aplikacije 15
Transportni servisni zahjevi zajednički za sve aplikacije
Aplikacija
file transfere-mail
Web dokumentireal-time audio/video
stored audio/videoInteraktivne igre
instant messaging
Gubici
bezbezbeztolerantne
tolerantnetolerantnebez
Brzina prenosa
elastičanelastičanelastičanaudio: 5kb/s-1Mb/svideo:10kb/s-5Mb/sIsti kao gorenekoliko kb/s i višeelastičan
Vrem. osjet.
neneneda, 100-tinak ms
da, nekoliko sda, 100-tinak msda i ne
2: Nivo aplikacije 16
Servisi transportnih protokola Interneta
TCP servisi:konektivnost: uspostavljanjekomunikacije se zahtijeva između klijentskih i serverskih procesapouzdani transport između procesa slanja i prijemakontrola protoka: pošiljalac ne smije da “zaguši” prijemnikkontrola zagušenja: usporava pošiljaoca kada je mreža zagušenaNe obezjeđuje: tajming, garantovanje minimalnog opsega
UDP servisi:Nepouzdani prenos podataka između procesa slanja i prijemaNe obezbjeđuje: uspostavljanje veze, pozdanost, kontrolu protoka, kontrolu zagušenju, tajming, ili garantovani opseg
P: Zašto oba? Zašto UDP?
9
2: Nivo aplikacije 17
Internet aplikacije: aplikacija, transportniprotokoli
Aplikacija
e-mailudaljeni terminal
Web file transfer
streaming multimedia
Internet telefonija
Protokoli nivoaaplikacije
SMTP [RFC 2821]Telnet [RFC 854]HTTP [RFC 2616]FTP [RFC 959]privatni(npr. RealNetworks)privatni(npr., Dialpad, Skype)
Transportniprotokol
TCPTCPTCPTCPTCP ili UDP
UDP (i TCP)
2: Nivo aplikacije 18
Web i HTTPTermini
Web stranica se sastoji od objekataObjekat može biti HTML fajl, JPEG slika, Java “applet”, audio fajl,…Web stranica se sastoji od osnovnog HTML-fajlakoji sadrži više referenci objekataSvaki objekat se adresira sa URL (Uniform Resource Locators)Primjer URL:
http://www.ethereal.com/distribution/win32
ime hosta ime puta
10
2: Nivo aplikacije 19
HTTP pregled
HTTP: hypertext transfer protokolWeb-ov protokol nivoa aplikacijeklijent/server model
klijent: “browser” koji zahtijeva, prima, prikazuje Web objekteserver: Web server šalje objekte kao odgovor na zahtjeve
HTTP 1.0: RFC 1945HTTP 1.1: RFC 2616 (1998)
PC saExplorer-om
Server sa
Apache Webserverom
Mac saNavigator-om
HTTP zahtjev
HTTP zahtjev
HTTP odgovor
HTTP odgovor
2: Nivo aplikacije 20
HTTP pregled (nastavak)Koristi TCP:
klijent inicijalizuje TCP vezu(kreira socket) prema serveru, port 80server prihvata TCP vezu odklijentaHTTP poruke zahtjeva i odgovora (poruke protokola nivoa aplikacije) se razmjenjuju između “browser”-a (HTTP klijent) i Web servera (HTTP server)TCP veza se zatvara
HTTP je “stateless”server ne čuva informacije o prethodnim korisnikovim zahtjevima (ne raspoznaje korisnike)
Protokoli koji nadziru“stanje” su kompleksni!Ranije stanje mora biti nadziranoako server/klijent “padne”, njihovi uvidi u “stanje”mogu biti inkonzistentni,moraju biti ponovo razmotreni
Pored toga
11
2: Nivo aplikacije 21
HTTP veze
Neperzistentni (neistrajan)HTTPNajviše jedan objekat je poslat preko TCP konekcije.HTTP/1.0 koristineperzistentni HTTP
Perzistentni HTTPViše objekata može biti poslato preko jedne TCP veze između klijenta i servera.HTTP/1.1 koristiperzistentne veze u default modu
2: Nivo aplikacije 22
Neperzistentni HTTPPretpostavimo korisnik unese sledeći URL
http://www.cftmn.com/index.html
1a. HTTP klijent inicijalizuje TCP vezu do HTTP servera (procesa) na www.cftmn.com po portu 80
2. HTTP klijent šalje HTTP poruku zahtjeva (sadrži URL) u socket TCP veze. Poruka indicira da klijent želi objekat/index.phtml
1b. HTTP server na hostuwww.cftmn.com čeka na TCP konekcije na portu 80. “Prihvata” vezu, obaveštava klijenta
3. HTTP server prima poruku zahtjeva, formira poruku odgovora koja sadrži zahtijevani objekat i šalje poruku svom socketu
vrijeme
12
2: Nivo aplikacije 23
Neperzistentni HTTP (nastavak)
5. HTTP klijent prima poruku odgovora koja sadrži html fajl, prikazuje html, tumači html fajl, pronalazi upućene objekte
6. Koraci 1-5 se ponavljaju za svaki objekat
4. HTTP server zatvara TCP vezu.
Vrijeme
2: Nivo aplikacije 24
Modelovanje vremena odgovaraDefinicija RTT (Round Trip Time): vrijeme prenosa malog paketa od klijenta do servera i nazad.Vrijeme odgovora:
jedan RTT za inicijalizaciju TCP veze
jedan RTT za HTTP zahtjev i vraćanje prvih nekoliko bajtovaHTTP odgovora
Vrijeme prenosa fajlaukupno = 2RTT+vrijeme prenosa fajla
Vrijeme zaPrenosfajla
InicijalizacijaTCP veze
RTT
Fajl zahtjeva
RTT
Fajl primljen
vrijeme vrijeme
13
2: Nivo aplikacije 25
Perzistentni HTTPProblemi neperzistentnog HTTP-a:
zahtjeva 2 RTT po objektuOS mora raditi i dodijeliti resurse hosta za svaku TCP vezuProblem je što browser-i često otvaraju paralelne TCP veze za povlačenje zahtijevanihobjekata
Perzistentni HTTPserver zadržava vezu otvorenu poslije slanja odgovorasekvencijalne HTTP poruke između istog klijent/servera se šalju istom vezomZatvara konekciju poslijeodređenog vremena neaktivnosti
Perzistentni bez “pipelining”:Klijent šalje novi zahtjev samo kada je prethodni odgovor primljenjedan RTT za svaki upućeni objekatKada nema zahtjeva TCP konekcija je slobodna
Perzistentni sa “pipelining”:default u HTTP/1.1klijent šalje zahtjeve odmah po dobijanju referenci objekataVeličine svega po jedanRTT za svaki referenciraniobjekat
2: Nivo aplikacije 26
HTTP poruka zahtjeva
Dva tipa HTTP poruka: zahtjev, odgovorHTTP poruka zahtjeva:
ASCII (format čitljiv čovjeku)
GET /somedir/page.html HTTP/1.1Host: www.someschool.eduUser-agent: Mozilla/4.0Connection: close Accept-language:fr
linija zahtjeva(GET, POST,
HEAD komande)
linijezaglavlja
Prazna linija indicira kraj poruke
Tri polja: komandaURL polje i polje
HTTP verzije
Ovo polje koristiproxy server, bez
obzira na postojećuTCP konekciju
Želi da zatvori vezu pošto primi odgovor.
Verzija objekta prilagodjenog Netscape.
Francuska verzijaobjekta
14
2: Nivo aplikacije 27
Tipovi
HTTP/1.0GETPOSTHEAD
Pita servera da pusti traženi sadržaj (otklanjanje grešaka)
HTTP/1.1GET, POST, HEADPUT
Uploaduje fajl na mjesto u Web serveru definisano u URL polju
DELETEBriše fajl definisan uURL polju
2: Nivo aplikacije 28
HTTP poruka odgovora
HTTP/1.1 200 OK Connection closeDate: 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 ...
statusna linija(protokolski kod
statusa -statusna fraza)
linijezaglavlja
podaci, npr., traženi
HTML fajl
Verzija protokola, statusni kod
i statusna porukaKada je generisan
odgovor!
15
2: Nivo aplikacije 29
HTTP kodovi statusa odgovora
200 OKZahtjev uspješan, zahtijevani objekat se nalazi u poruci
301 Moved PermanentlyZahtijevani objekat preseljen, nova lokacija specificirana u poruci (Lokacija:)
400 Bad RequestServer ne razumije poruku zahtijeva
404 Not FoundZahtijevani dokument nije pronađen na ovom serveru
505 HTTP Version Not Supported
U prvoj liniji u server->klijent poruci odgovora.Nekoliko primjera kodova statusa i odgovarajućih poruka:
2: Nivo aplikacije 30
Cookies: vode računa o “stanju”(RFC 2109)
Mnogi Web sajtovi koriste cookies
Četiri komponente:1) Linija zaglavlja cookie u
HTTP poruci odgovora2) Linija zaglavlja cookie u
HTTP poruci zahtjeva3) cookie fajl se čuva na
korisnikovom hostu i održava se od strane korisnikovog browser-a
4) Baza podataka na Web sajtu
Primjer:Neko pristupaInternetu uvijek preko istog PC-aPosjećuje specifične e-commerce sajtove po prvi putKada inicijalni HTTP zahtjevi dođu na sajt,sajt kreira jedinstveniID i kreira odgovarajuću informaciju u bazi podataka za ID
16
2: Nivo aplikacije 31
Cookies: vode računa o “stanju”(nastavak)
klijent server
uobičajen http odgovor
uobičajen http odgovor
cookie fajl
Nedjelju dana kasnije!
obična http por. zahtjevacookie: 1678 cookie-
definisana akcija
pristup
ebay 8734obična http por. zahtjeva Amazon server
kreira ID1678 za korisnikaKreiranje
upisa
uobičajen http odgovorSet-cookie: 1678
ebay 8734amazon 1678
obična http por. zahtjevacookie: 1678 cookie-
definisana akcija
pristupebay 8734amazon 1678
Baza podataka
2: Nivo aplikacije 32
Cookies: (nastavak)
Šta cookies donose:autorizaciju“shopping cards”preporukestanje korisnikove sesije (Web e-mail)
Cookies i privatnost:Cookies dozvoljavaju sajtu da dosta nauči o korisnikuMogu se dostaviti imenai e-mail sajtovimaPretraživači koriste cookies da nauče više o korisnicimaKompanije dobijaju dodatne informacije preko weba
Pored toga
17
2: Nivo aplikacije 33
Web “caches” (proxy server)
Korisnik setuje browser: Web pristup preko proxy serverabrowser šalje sve HTTP zahtjeve proxy serveru
objekat u proxy-u: proxy šalje objekatili proxy zahtjeva objekat od željenog servera, tada vraća objekat klijentu
Cilj: zadovoljenje klijentovog zahtjeva bez uključivanja originalnog servera
client
Proxyserver
client
HTTP request
HTTP response
HTTP request HTTP request
origin server
origin server
HTTP response HTTP response
2: Nivo aplikacije 34
Više o proxy serveru
Proxy server radi i kao klijent i kao serverTipično proxy instalira ISP (univerzitet, kompanija, rezidencijalni ISP)
Zašto proxy server?Smanjuje vrijeme odziva na zahtjev.Smanjuje saobraćaj na linku institucije prema Internetu.Internet sa proxy serverom omogućava“slabim” provajderima sadržaja efikasniju predaju sadržaja
18
2: Nivo aplikacije 35
Primjer (1)Pretpostavke
Srednja veličina objekta = 100,000 bSrednja brzina zahtjeva za željeni servere = 20zahtj/sKašnjenje od rutera institucije do željenog servera i nazad = 2s
PoslediceIskorišćenje na LAN-u = 20%Iskorišćenje veze prema I = 100%Ukupno kašnjenje = Internet kašnjenje + kašnjenje pristupa + LAN kašnjenje
= 2s + minuti + milisekunde
Željeni serveri
javniInternet
Mreža institucije10 Mb/s LAN
2Mb/s Veza na Internet
Intenzitet saobraćaja u LAN mreži(20zahtj/s*100kb/zahtj)/10Mb/s=0.2Intenzitet saobraćaja na linku(20zahtj/s*100kb/zahtj)/2Mb/s=1
2: Nivo aplikacije 36
Primjer (2)Moguće rješenje
Povećanje propusnosi veza na Internet na npr, 10 Mb/s
PosledicaIskorišćenje na LAN-u = 20%Iskorišćenje veze na I. = 20%Ukupno kašnjenje = Internet kašnjenje + kašnjenje pristupa + LAN kašnjenje
= 2 s + ms-e + ms-eNadogradnja košta
Željeni serveri
Javni Internet
Mreža institucije10 Mb/s LAN
10 Mb/s Veza na Internet
19
2: Nivo aplikacije 37
Primjer (3)Instaliranje proxy servera
Pretpostavimo da je vjerovatnoća pogađanja 0.4 (0.2-0.7 u praksi)
Posledice40% zahtjeva će skoro odmah biti zadovoljeno60% zahtjeva zadovoljava željeni serverIskorišćenje veze na Internet je smanjeno na 60%, rezultujući zanemarljiva kašnjenja (npr10ms)Ukupno kašnjenje = Internet kašnjenje + kašnjenje pristupa + LAN kašnjenje
Srednje kašnjenje=.6*2 s + .4*.01 s + ms-e < 1.3s
Manje kašnjenje nego u prethodnom slučaju, uz značajno manje troškove (PC sa javnim softverom).
Željeniserveri
JavniInternet
Mreža institucije10 Mb/s LAN
2Mb/s Veza na Internet
Proxy institucije
2: Nivo aplikacije 38
“Conditional” GET
Cilj: ne slati objekat ako cache ima up-to-date sačuvanu verzijucache: specificira datum čuvanja kopije u HTTP zaglavljuIf-modified-since:
<date>
server: odgovor ne sadrži objekat ako je sačuvana kopija up-to-date: HTTP/1.0 304 Not
Modified
cache serverHTTP poruka GET
If-modified-since: <date>
HTTP odzivHTTP/1.0
304 Not Modified
Objekatnije
modifikovan
HTTP poruka zahtjevaIf-modified-since:
<date>
HTTP odzivHTTP/1.0 200 OK
<data>
objekat modifikovan
20
2: Nivo aplikacije 39
FTP: the file transfer protocol
transfer fajla od/do udaljenog hostaklijent/server model
klijent: strana koja inicijalizuje prenos (ili od/doudaljenog hosta)server: udaljeni host
ftp: RFC 959ftp server: port 21
fajl transfer FTPserver
FTPkorisn.
interfejs
FTPklijent
lokalnifajlsistem
udaljeni fajlsistem
Korisnik na
hostu
2: Nivo aplikacije 40
FTP: odvojene kontrolne veze i veze za prenos podataka
FTP klijent kontaktira FTP server na port 21, definišućiTCP kao transportni protokolKlijent dobija autorizaciju preko kontrolne vezeKlijent pregleda udaljene direktorijume slanjem komandi preko kontrolne veze. Slično važi i za komande get i put.Kada server primi komandu za prenos fajla, server otvara TCP vezu za prenos podataka do klijenta (port 20)Poslije slanja jednog fajla server zatvara vezu.
FTPklijent
FTPserver
TCP kontrolna vezaport 21
TCP konekcija podatakaport 20
Server otvara drugu TCPvezu podataka za prenos drugog fajla.Kontrola veze: “out of band”, kao kod RTSP.FTP server nadzire “state”: trenutni direktorijum, ranija identifikacija. “statefull”Kontrola HTTP veze: “inband”?
21
2: Nivo aplikacije 41
FTP komande, odgovori
Primjeri komandi:Šalje kao 7 bitni ASCII tekst preko kontrolnog kanala, identično kao HTTP.USER imePASS lozinka
LIST vraća spisak fajlova u direktorijumuRETR imefajla povlači fajlSTOR imefajla smješta fajl na udaljeni host
Primjer kodova odgovorastatus kodovi i fraze (kao uHTTP)331 Username OK, password required125 data connection already open; transfer starting425 Can’t open data connection452 Error writing file
2: Nivo aplikacije 42
Elektronska Pošta
Tri glavne komponente:korisnički agentimail serveriSMTP (simple mail transfer protocol)
Korisnički Agent“mail reader”sastavljanje, editovanje, čitanje mail porukanpr., Eudora, Outlook, Netscape Messengerodlazne, dolazne poruke se čuvaju na hostu
kor. mailbox
izlaznired čekanja poruka
mailserver
Kor.agent
Kor.agent
Kor.agent
mailserver
koragent
koragent
mailserver
Kor.agent
SMTP
SMTP
SMTP
22
2: Nivo aplikacije 43
Elektronska Pošta: mail serveri
Mail Serverimailbox sadrži dolazne poruke korisnikaRed čekanja odlaznih porukakoje trebaju da se pošaljuSMTP protokol između mail servera za slanje email poruka
klijent: slanje mail serveru“server”: prijem sa mail servera
mailserver
Kor.agent
Kor.agent
Kor.agent
mailserver
Kor.agent
Kor.agent
mailserver
Kor.agent
SMTP
SMTP
SMTP
2: Nivo aplikacije 44
Elektronska Pošta: SMTP [RFC 2821]
koristi TCP za pouzdani transfer email poruke od klijenta do servera po portu 25direktan transfer: od servera pošiljaoca do servera primaocaTri faze transfera
handshaking (upoznavanje)prenos porukezatvaranje
komanda/odgovor interakcijekomande: ASCII tekstodgovor: status kod ili fraza
Poruke moraju u kompletu biti 7-bitne ASCII.
Zašto?Zašto je ovo danas problematično? Što mislite kako je kod HTTP-a?
23
2: Nivo aplikacije 45
Scenario: Ana šalje poruku Bobanu1) Ana koristi KA da sastavi
poruku i adresira je [email protected]
2) Anin KA šalje poruku njenom mail serveru;poruka se smješta u red čekanja
3) Klijentska strana SMTP otvara TCP vezu sa Bobanovim mail serverom
4) SMTP klijent šalje Aninu poruku preko TCP veze
5) Bobanov mail server prima poruku i SMTP-ov serverski dio smješta poruku u Bobanov mailbox
6) Bob aktivira svoj KA da pročita poruku
Kor. agent
mailserver
mailserver Kor.
agent
1
2 3 4 56
2: Nivo aplikacije 46
Primjer SMTP interakcijeS: 220 mail.cg.yuC: HELO crepes.frS: 250 Hello crepes.fr, pleased to meet you C: MAIL FROM: <[email protected]>S: 250 [email protected]... Sender ok C: RCPT TO: <[email protected]>S: 250 [email protected] ... Recipient ok C: DATAS: 354 Enter mail, end with "." on a line by itself C: Do you like ketchup? C: How about pickles? C: . S: 250 Message accepted for delivery C: QUITS: 221 cg.yu closing connection
24
2: Nivo aplikacije 47
SMTP: kraj
SMTP koristi perzistentnekonekcijeSMTP zahtijeva poruke u 7-bit ASCII formatuSMTP server koristiCRLF.CRLF da odredi kraj poruke
Upoređenje sa HTTP:HTTP: “pull”SMTP: “push”
Oba imaju ASCII komande/odgovore, kodove statusa, ali se razlikuju po tijelima poruke.
HTTP: svaki objekat se smješta u sopstvenoj poruci odgovoraSMTP: više objekata se šalje u višedjelnoj (multipart) poruci
2: Nivo aplikacije 48
Format mail poruke (RFC 822)
SMTP: protokol za razmjenu email porukaRFC 822: standard zaformat tekstualnih porukaZaglavlja linija, npr.,
To:From:Subject:
Različito od SMTP komandi!tijelo
poruka, samo ASCII karakteri
zaglavlje
tijelo
Praznalinija
25
2: Nivo aplikacije 49
Format poruke: multimedijaMIME: multimedia mail extension, RFC 2045, 2046Dodatne linije u zaglavlju poruke deklarišu tip MIME sadržaja
From: [email protected]: [email protected]: Picture of yummy crepe. MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Type: image/jpeg
base64 encoded data ..... ......................... ......base64 encoded data
Tip multimedijalnih podataka, podtip,
deklaracija parametara
Metod korišćen za kodiranje podataka
MIME verzija
Kodirani podaci
2: Nivo aplikacije 50
MIME tipoviTip sadržaja: tip/podtip; parametri
TekstPrimjeri podtipova: plain, html
SlikePrimjeri podtipova : jpeg, gif
AudioPrimjeri podtipova : basic(8-bit mu-law kodiranje), 32kadpcm (32 kb/s kodiranje)
VideoPrimjeri podtipova : mpeg, quicktime
AplikacijeDrugi podaci koji moraju biti obrađeni odgovarajućim programom prije “gledanja”Primjeri podtipova : msword, octet-stream
26
2: Nivo aplikacije 51
Višedjelni tipFrom: [email protected]: [email protected]: Picture of me. MIME-Version: 1.0 Content-Type: multipart/mixed; boundary=StartOfNextPart
--StartOfNextPartDear Bob, Please find a picture of me.--StartOfNextPartContent-Transfer-Encoding: base64Content-Type: image/jpegbase64 encoded data ..... ......................... ......base64 encoded data --StartOfNextPartDo you want the recipe?
2: Nivo aplikacije 52
Protokoli Mail pristupa
SMTP: predaja/smještanje na serveru primaocaProtokol mail pristupa: povlačenja sa servera
POP: Post Office Protocol [RFC 1939]• autorizacija (agent <-->server) i povlačenje
sadržaja• Port 110
IMAP: Internet Mail Access Protocol [RFC 1730]• Više funkcija (složeniji)• Port 143• Manipulacija sa sačuvanim porukama na serveru
HTTP: Hotmail , Yahoo! Mail, itd.
Koragent
mail server pošiljaoca
Koragent
SMTP SMTP Protokolpristupa
mail server primaoca
27
2: Nivo aplikacije 53
POP3 protokolFraza autorizacije
Klijentove komande: user: deklariše imepass: lozinka
Serverovi odgovori+OK
-ERR
Faza transakcije, klijent:list: lista poruka i njihovih brojevaretr: povlačenje poruke na osnovu brojadele: brisanjeQuit
Faza update, poslije završetka sesije mail server briše poruke koje su označene za brisanje.
C: listS: 1 498 S: 2 912 S: . C: retr 1S: <message 1 contents>S: . C: dele 1 C: retr 2S: <message 1 contents>S: . C: dele 2C: quitS: +OK POP3 server signing off
S: +OK POP3 server ready C: user bobanS: +OK C: pass hungryS: +OK user successfully logged on
2: Nivo aplikacije 54
DNS: Domain Name System
Ljudi: imaju mnogo dokumenata za identifikaciju:
ime, broj pasoša,...Internet hostovi, ruteri:
IP adresa (32 bit) – koristi se za adresiranje datagrama“ime”, npr., server1.cis.cg.ac.yu –koriste ga ljudi
P: Kako mapirati IP adrese i imena?
Domain Name System:Distribuirana baza podatakaimplementirana kao hijerarhija velikog brojaservera imenaProtokol nivoa aplikacije host, ruteri, serveri imena komuniciraju za utvrđivanjeimena (adresa/ime translacija)
napomena: ključnaInternet funkcija, implementirana kao protokol nivoa aplikacijeKompleksnost na “ivici”mreže
Port 53, UDP, RFC 1034 i 1035.
28
2: Nivo aplikacije 55
DNSDNS servisi
Translacija imena hosta u IP adresuHost “aliasing”
Kanonska (www.yahoo.akadns.com) i alias imena (www.yahoo.com)
Mail server “aliasing”“mail.cg.yu” u “cg.yu”Distribucija opterećenja
Replikacija Web servera: setovanje IP adresa za jedno kanoničko ime
Zašto ne centralizovani DNS?Jedna tačka otkazaObim saobraćajaCentralizovana baza podatakaNadzor
Ne odgovara!
2: Nivo aplikacije 56
Root DNS Serveri
com DNS serveri org DNS serveri edu DNS serveri
poly.eduDNS serveri
umass.eduDNS serveriyahoo.com
DNS serveriamazon.comDNS serveri
pbs.orgDNS serveri
Distribuirana, Hijerarhijska Baza Podataka
Klijent želi IP adresu za www.amazon.com; prvaaproksimacija:Klijent pita root server da nađe com DNS serverKlijent pita jedan od com DNS servera da nađeamazon.com DNS serverKlijent pita amazon.com DNS server da mu pošaljeIP adresu www.amazon.com
29
2: Nivo aplikacije 57
DNS: “Root” serveri imenaKontaktiraju ih lokalni serveri imena kada ne mogu da pronađu imeroot server imena:
kontaktira autoritativni server imena ako mapiranje nije poznatodobija mapiranjevraća mapiranje lokalnom serveru imena
b USC-ISI Marina del Rey, CAl ICANN Marina del Rey, CA
e NASA Mt View, CAf Internet Software C. Palo Alto, CA
i NORDUnet Stockholmk RIPE London
m WIDE Tokyo
a NSI Herndon, VAc PSInet Herndon, VAd U Maryland College Park, MDg DISA Vienna, VAh ARL Aberdeen, MDj NSI (TBD) Herndon, VA
postoji 13 svetskih “root” servera imena
www.root-servers.org
2: Nivo aplikacije 58
TLD i Autorizacioni serveri
Top-level domain (TLD) serveri: odgovorni zacom, org, net, edu, etc, i sve “top-level”domene zemalja uk, fr, ca, jp.
“Network solutions” nadzire servere za com TLD“Educause” za edu TLD
Autoritativni DNS serveri: DNS serveri organizacije obezbjeđuju mapiranja imena hostova u IP adrese za servere organizacije(npr., Web i mail).
Može biti nadziran od strane organizacije ili servis provajdera
30
2: Nivo aplikacije 59
“Local Name Server”
Striktno ne pripada hijerarhijiSvaki ISP (rezidencijalni ISP, kompanijski, univerzitet) ima jedan.
Još se zove “default name server”Kada host napravi DNS upit, upit se šalje na njegov lokalni DNS server
Ponaša se kao proxy, prosleđuje upite u hijerarhiju.
2: Nivo aplikacije 60
cis.poly.edu
gaia.cs.umass.edu
root DNS server
lokalni DNS serverdns.poly.edu
1
23
4
5
6
autoritativni DNS serverdns.cs.umass.edu
78
TLD DNS server
Primjer
Host cis.poly.edu želiIP adresu zagaia.cs.umass.edu
Iterativni upit:Kontaktirani server odgovara sa imenom servera kojeg treba kontaktirati“Neznam ovo ime, ali pitaj ovajserver”
31
2: Nivo aplikacije 61
cis.poly.edu
gaia.cs.umass.edu
root DNS server
lokalni DNS serverdns.poly.edu
1
2
45
6
autoritativni DNS serverdns.cs.umass.edu
7
8
TLD DNS server
3
Rekurzivni upitiRekurzivni upit:
Stavlja problem utvrđivanja imena na kontaktirani DNSVeliko opterećenje?
2: Nivo aplikacije 62
DNS: “caching” i “updating”Kada server imena definiše mapiranje on ga čuva:
Pri čemu se sačuvani podaci posle izvjesnog timeout perioda brišuTLD serveri su tipično sačuvani u lokalnim DNSovima
• Na taj način se root name serveri rijetko posjećuju“update/notify” mehanizmi su definisani od IETF
RFC 2136http://www.ietf.org/html.charters/dnsind-charter.html
32
2: Nivo aplikacije 63
DNS zapisiDNS:distribuirana baza podataka koja sadrži zapise resursa (resource records (RR))
Type=NSname je domenvalue je IP adresa autoritativnog name servera za ovaj domen
RR format: (name, value, type, ttl)
Type=Aname je ime hostavalue je IP adresa
Type=CNAMEname je alias ime nekog“kanoničkog” (stvarnog) imenavalue je kanoničko imewww.ibm.com je u stvariservereast.backup2.ibm.com
Type=MXvalue je kanonično ime mailservera čiji je name alias ime.
2: Nivo aplikacije 64
DNS protokol, porukeUpiti i odgovori, imaju isti format
Zaglavlje porukeidentifikacija: 16 bitni # za upit, odgovor na upit koristi isti #oznake:
Upit ili odgovorPoželjne rekurzijeDostupne rekurzijeOdgovor (brojpojavljivanja tipova )
33
2: Nivo aplikacije 65
DNS protokol, poruke
Ime, tip polja za upit
RR-ovi u odgovoru naupit
Podaci zaautoritativne servere
Dodatna korisnainformacija
2: Nivo aplikacije 66
Ubacivanje zapisa u DNSPrimjer: baš je kreiran “Network Utopia”Registracija imena networkuptopia.com u registar (npr., Network Solutions koja više nema monopol www.intenic.net)
Potrebno je dostaviti registru imena i IP adrese vašeg autoritativnog name server (primarnog i sekundarnog )Registar ubacuje dva RR u sve com TLD servere:
(networkutopia.com, dns1.networkutopia.com, MX)(dns1.networkutopia.com, 212.212.212.1, NS)
Postavlja u autoritativni server Type MX zapis zawww.networkuptopia.com i Type NS zapis za networkutopia.comKako ljudi mogu saznati IP adresu nekog Web sajta?
Kako poslati DNS poruku upita direktno DNS serveru?nslookup komanda sa MSDOS comand promptaPomoću odgovarajućih sajtova
34
2: Nivo aplikacije 67
“P2P file sharing”
Generiše najveći saobraćaj na Iternetu, čak veći od Weba.Razmjenjuju se ne samo MP3 fajlovi već i video klipovi, slike, tekstovi i softveri. Fokus će biti na protokolima i arhitekturi, dok ostala pitanja (sigurnost, privatnost, anonimnost, autorska prava) mogu biti predmet samostalnih istraživanja.
2: Nivo aplikacije 68
“P2P file sharing”Primjer
Ana aktivira P2P klijent aplikaciju na svom laptopuSvakog dana se povezuje naInternet putem ADSL-a : dobija IP adresu za svaku konekcijuTraži “Balkan”Aplikacija prikazuje druge “peers” koji imaju kopiju“Balkan”.Ti peer uređaji su obično PC računari, slično kao u Aninom slučaju.Ana bira jednog od “peers”, npr Bobana i uspostavlja TCP konekciju između njihovih računara.
Fajl se kopira sa BobanovogPC računara na Anin laptop: koristi se HTTPDok Ana povlači, drugi korisnici povlače od Ane.Ako Boban isključi računar Anin P2P klijent će pokušati ostatak povući sa drugog peer-a.P2P sistemu je na raspolaganju ogroman računarski kapacitet.Anin “peer” je i Web klijent i privremeni Web server.
Svi peerovi su serveri = vrlo skalabilno!
Ostaje pitanje kako se željeni sadržaj nalazi?
35
2: Nivo aplikacije 69
P2P: centralizovan direktorijum
originalni “Napster” dizajn1) Kada se “peer” poveže,
informiše centralni server o:
IP adresisadržaju
2) Ana pita za “Balkan”3) Ana zahtijeva fajl od
BobanaPovremeno server kontaktira peer radi utvrđivanja prisutnosti.
server centralnogdirektorijuma
peers
Ana
Boban
1
1
1
12
3
2: Nivo aplikacije 70
P2P: problemi sa centralizovanim direktorijumom
Jedna tačka otkazaUsko grlo za performanseProblemi sa pravima
file transfer je decentralizovan, ali je lociranje sadržaja vrlo centralizovano
36
2: Nivo aplikacije 71
Query flooding (poplava upita): Gnutella
Potpuno distribuirannema centralnog servera
Protokol javnog domenaMnogi Gnutella klijenti implementiraju protokol i formiraju apstraktnu logičku mrežu ili overlay network
overlay network: grafLinija između peer X i Y ako postoji TCP konekcijaSvi aktivni peerovi i linije čine overlay mrežuLinija nije fizički link. U stvari ona predstavlja više fizičkih linkova.Posmatrani peer će tipično biti povezan na manje od 10 overlay susjeda.
2: Nivo aplikacije 72
Gnutella: protokol
Query
QueryHit
Query
Query
QueryHit
Query
Query
QueryHit
File transfer:HTTPPoruke upita (Query)
se šalju preko postojećihTCP konekcija
peerovi prosleđuju poruke upita
QueryHit (ime fajla i veličina) se šalje usuprotnom smjeru preko postojećih TCP konekcija
Bira se jedan QueryHiti uspostavlja se direktna TCP konekcija, tako da na scenustupa HTTP.
Problem skalabilnosti!
Limited scope query flooding
37
2: Nivo aplikacije 73
Gnutella: Pridruživanje peera
1. Peer X, koji želi da se pridruži, mora naći neki drugipeer u Gnutella mreži: koristi listu kandidata bootstrap peerova (iz softvera ili sa sajta)
2. X sekvencijalno pokušava napraviti TCP konekciju sa peerovima sa liste dok je ne uspostavi sa Y
3. X šalje Ping poruku Y; Y prosleđuje Ping dalje. 4. Svi peerovi koji prime Ping poruku odgovaraju sa Pong
porukom, koja pored IP adrese sadrži broj fajlova i njihovu veličinu izraženu u kB.
5. X prima mnogo Pong poruka. Tada može napraviti izbor i uspostaviti dodatne TCP konekcije. Pored toga se može povezati na još nekoliko bootstrap peerova. Koliko konekcija se uspostavlja je izbor programera.
2: Nivo aplikacije 74
Korišćenje heterogenosti: KaZaA
FastTrack (Holandija, 2004)Koristi dobre strane prethodna dva pristupa.Proizvodila je više saobraćaja nego bilo koja druga aplikacija.Protokol je privatno vlasništvo, tako da je kontrolni saobraćaj kodiran.Slično kao Gnutella nema servera koji bi pratio lokacije sadržaja, ali za razliku od nje peerovi nijesu iste ravnopravnosti.
38
2: Nivo aplikacije 75
Korišćenje heterogenosti: KaZaA
Svaki peer je ili vođa grupe ili je dodijeljen vođi grupe.
TCP konekcija između peera i njegovog vođe grupe.TCP konekcija između nekog para vođa grupa.
Vođa grupe prati promjene na svojim običnim peerovima tako da postaje mini Napster server.
2: Nivo aplikacije 76
P2P Primjer: BitTorrent
tracker: prati peer-ove Koji pristupaju torrent-u
torrent: grupa peer-ova kojirazmjenjuju djelovefajla
Dobijanje listePeer-ova
“Trgovina”djelovima fajla
peer
P2P distribucija fajla
39
2: Nivo aplikacije 77
BitTorrent (1)Fajl se dijeli na chunk-ove veličine 256kB.peer se pridružuju torrent:
nema chunk-ove, ali ih vremenom akumuliraregistruje se na tracker radi dobijanja liste peer-ova, i povezuje se na grupu peer-ova (“susjeda”)
Dok povlači, peer šalje chunk-ove drugim peer-ovima. Peer-ovi se sporadično povezuju na torrentJednom kada peer povuče kompletan fajl, može napustiti (sebično) ili ostati (altruistično) na torrentu
2: Nivo aplikacije 78
BitTorrent (2)Primanje Chunk-ova
U svakom trenutku različiti peer-ovi imaju različite grupe chunk-ovaperiodično, peer provjerava kod svojih susjeda listu chunk-ova koju posjeduju.Peer postavlja zahtjeve za nedostajućim chunk-ovima tražeći prvo one koji su najrjeđi
Slanje Chunk-ova:Peer šalje chunk-ove četvorici susjeda sanajvećom brzinom
Svakih 10s se utvrđujetop 4
svakih 30s: slučajno se bira drugi peer, počinje slanje chunk-ova
Novoizabrani peer može ući u top 4
40
2: Nivo aplikacije 79
P2P primjer 2: Skype
P2P (pc-to-pc, pc-to-phone, phone-to-pc) Voice-Over-IP (VoIP) aplikacija
Takođe IM i video“proprietary” protokol nivoa aplikacijeHijerarhijaska mreža
Skype klijent (SC)
Supernode(SN)
Skype login server
2: Nivo aplikacije 80
Skype: ostvarivanje pozivaKorisnik startuje Skype
Skype login server
SK se registruje na SNLista bootstrap SN
SK se loguje(autentifikacija)
Poziv: SK kontaktira SN i šalje mu broj pozvane strane
SN kontaktira druge SN-ove(nepoznato je kako) radi pronalaženja adrese pozvane strane koja se po dobijanju šalje klijentu
SK direktno kontaktira pozvanu stranu, prekoTCPNakon uspostavljanja konekcije medijsku sadržaj se prenosi preko UDP
Top Related