chap2_2ed_5July02
Download
Report
Transcript chap2_2ed_5July02
Kapitel 2
Applikationslaget
En dansk udgave af:
Computer Networking: A Top Down Approach.
note:
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.
Thanks and enjoy! JFK/KWR
All material copyright 1996-2002
J.F Kurose and K.W. Ross, All Rights Reserved
Computer Networking:
A Top Down Approach
Featuring the Internet,
2nd edition.
Jim Kurose, Keith Ross
Addison-Wesley, July
2002.
2: Applikationslaget
1
Kapitel 2: Applikationslaget
Mål:
Begrebsmæssigt,
implementationsaspekter af netværk,
applikationsprotokoller
transport-lags service
modeller
client-server
paradigmet
peer-to-peer paradigmet
Lære om protokoller ved
at undersøge populære
applikations-lags
protokoller
HTTP
FTP
SMTP / POP3 / IMAP
DNS
Programmering af
netværks-applikationer
socket API
2: Applikationslaget
2
Kapitel 2 oversigt
2.1 Principper for
applikationslagsprotokoller
klienter og servere
applikationskrav
2.2 Web og HTTP
2.3 FTP
2.4 Elektronisk post
SMTP, POP3, IMAP
2.5 DNS
2.6 Socket
programmering med TCP
2.7 Socket
programmering med UDP
2.8 Opbygning af en
Web-server
2.9 Materialedistribution
Netværks Web-caching
Materialedistributionsnetværk
Peer-to-Peer fildeling
2: Applikationslaget
3
Netværks-applikationer: jargon
Proces: program, der
brugeragent: interfacer
kører i en maskine.
med brugeren “ovenover”
og nettet “nedenunder”.
i samme maskine kan to
processer kommunikere implementerer brugerved interproces
grænsseflade og
applikations-lags
kommunication
protokol
(defineret af OS).
Web: browser
Processer, der kører i
E-mail: postlæseprogram
forskellige maskiner,
streaming audio/video:
kan kommunikere med
medieafspiller
en applikationslagsprotokol
2: Applikationslaget
4
Applikationer og applikations-lags protokoller
Applikation: kommunikerende
distributerede processer
f.eks. e-mail, Web, Peer-topeer fildeling, instant
messaging
kører i maskiner (hosts)
udveksler beskeder for at
implementere applikationen
application
transport
network
data link
physical
Applikations-lags protokoller
en “del” af en applikation
definerer beskeder, der
udveksles af applikationerne
og aktioner, der foretages
bruger kommunikationstjenester, der ydes af
laverelags protokoller (TCP,
UDP)
application
transport
network
data link
physical
application
transport
network
data link
physical
2: Applikationslaget
5
Applikations-lags protokoller definerer
Typer af beskeder, der
udveksles, f.eks anmodningsog svar-beskeder
Syntaks af besked-typer:
hvilke felter i beskeder og
hvordan felter afgrænses
Felternes semantik, d.v.s.
betydningen af informationen
i felterne
Regler for, hvornår og
hvordan processer sender og
besvarer beskeder
Public-domain protokoller:
defineres i RFC’er
tillader interoperabilitet
f.eks. HTTP, SMTP
Proprietære protokoller:
f.eks. KaZaA
2: Applikationslaget
6
Client-server paradigmet (mønstret)
En typisk netværksapplikation har
to dele: en klient og en server
Klient:
application
transport
network
data link
physical
indleder kontakten med
serveren (“taler først”)
typisk beder den om service
fra serveren,
Web: klienten implementeres i
browseren; e-mail: postlæseren
Serveren:
yder forlangt service til klienten
request
reply
application
transport
network
data link
physical
f.eks. sender Webserveren udbedte
Websider, mailserveren afleverer e-mail
2: Applikationslaget
7
Proces-kommunikation over netværk
proces sender/modtager
beskeder til/fra dens
socket (“sokkel”)
en socket svarer til en dør
afsenderprocessen smider
beskeden ud af døren
afsenderprocessen antager en
transportinfrastruktur på den
anden side af døren, som
bringer beskeden til
modtagerprocessens socket
klient eller
server
klient eller
server
styres af
app udvikler
proces
proces
socket
socket
TCP med
buffere og
variable
Internet
TCP med
Buffere og
variable
styres
af OS
API: (1) valg af transportprotokol; (2) mulighed for at
sætte nogle få parametre (mere herom senere)
2: Applikationslaget
8
Adressering af processer:
For at en proces kan
modtage beskeder må
den have identifikation
hver maskine har en
unik 32-bit IP-adresse
Spm: er IP-adressen på
maskinen, på hvilken
processen kører, nok til
at identificere
processen ?
Svar: Nej, mange
processer kan køre på
samme maskine
Identifikationen
indeholder både IPadressen og portnumre knyttet til
processen på maskinen.
Eks. på port-numre:
HTTP server: 80
Mail server: 25
Mere herom senere
2: Applikationslaget
9
Hvilken transportservice behøver en applikation ?
Data-tab
nogle applikationer (f.eks.
audio) kan klare noget tab
andre applikationer
(f.eks., fil-overførsel og
telnet) kræver 100%
pålidelig dataoverførsel
Timing
nogle applikationer
(f.eks. Internettelefoni og interaktive
spil) kræver lille
forsinkelse for at
være “effektive”
Båndbredde
nogle applikationer
(f.eks. multimedie)
kræver et minimum af
båndbredde for at
være “effektive”
andre applikationer
(“elastiske
applikationer”) bruger
den til rådighed
værende båndbredde
2: Applikationslaget
10
Transportservice krav til almindelige applikationer
Data-tab
Båndbredde
Tidsfølsom
filoverførsel
e-mail
Web dokumenter
real-time audio/video
intet tab
intet tab
intet tab
tabs-tolerant
nej
nej
nej
ja, 100dele ms
lagret audio/video
interaktive spil
instant messaging
tabs-tolerant
tabs-tolerant
intet tab
elastisk
elastisk
elastisk
audio: 5kbps-1Mbps
video:10kbps-5Mbps
samme som ovenfor
få kb/s opefter
elastisk
Applikation
ja, få sek
ja, 100dele ms
ja og nej
2: Applikationslaget
11
Internet transportprotolol tjenester
TCP service:
forbindelses-orienteret:
opsætning kræves mellem
klient- og server-processer
pålidelig transport mellem
afsendende og modtagende
proces
flow control: afsender vil ikke
oversvømme modtageren
congestion control: neddrosl
afsender, når netværket
overbelastes
giver ikke: timing, minimum
båndbredde garantier
UDP service:
upålidelig dataoverførsel
mellem afsendende og
modtagende proces
giver ikke: forbindelsesopsætning, pålidelighed,
flow control, congestion
control, timing eller
båndbredde garantier
Spm: hvorfor er der en UDP?
2: Applikationslaget
12
Internettet: applikationer og transportprotokoller
Applikation
e-mail
remote terminal access
Web
filoverførsel
streaming multimedie
Internet-telefoni
Applikationslags protokol
Underliggende
transport protokol
SMTP [RFC 2821]
Telnet [RFC 854]
HTTP [RFC 2616]
FTP [RFC 959]
proprietær
(f.eks. RealNetworks)
proprietær
(f.eks. Dialpad)
TCP
TCP
TCP
TCP
TCP eller UDP
typisk UDP
2: Applikationslaget
13
Kapitel 2 oversigt
2.1 Principper for
applikationslagsprotokoller
klienter og servere
applikationskrav
2.2 Web og HTTP
2.3 FTP
2.4 Elektronisk post
SMTP, POP3, IMAP
2.5 DNS
2.6 Socket
programmering med TCP
2.7 Socket
programmering med UDP
2.8 Opbygning af en
Web-server
2.9 Materialedistribution
Netværks Web-caching
Materialedistributionsnetværk
Peer-to-peer fildeling
2: Applikationslaget
14
Web og HTTP
Først nogle definitioner
En Web-side består af objekter
Objekter kan være en HTML-fil, et JPEG-billede,
en Java-applet, en audio fil, o.s.v.
En Web-side består af en basis HTML-fil, som
inkluderer flere refererede objekter
Hvert objekt kan adresseres med en URL-adresse
Eksempel på en URL-adresse:
www.diku.dk/undervisning/pic.jpg
maskinnavn
stinavn
2: Applikationslaget
15
HTTP-oversigt
HTTP: hypertext
transfer protokol
Webbens applikationslags-
protokol
en client/server model
client: browser som
beder om og får samt
“viser” Web-objekter
server: Web-serveren
sender objekter som
svar på anmodninger
HTTP 1.0: RFC 1945
HTTP 1.1: RFC 2068
PC der kører
Explorer
Server
Der kører
Apache Webserver
Mac der kører
Navigator
2: Applikationslaget
16
HTTP-oversigt (fortsat)
Bruger TCP:
klienten indleder TCP-
forbindelsen (opretter
socket) til serveren, port 80
serveren accepterer TCPforbindelsen fra klienten
HTTP-beskeder (applikationslags protokol beskeder)
udveksles mellem browser
(HTTP klient) og Web-server
(HTTP server)
TCP-forbindelsen lukkes
HTTP er “tilstandsløs”
Serveren vedligeholder ingen
information om tidligere
klient-anmodninger
Sidebem.
Protokoller der vedligeholder
en “tilstand” er komplekse!
forhistorien (tilstanden)
skal huskes
hvis server eller klient går
ned kan deres opfattelse
af “tilstanden” blive
inkonsistente og skal
genoprettes
2: Applikationslaget
17
HTTP-forbindelser
Ikke-persistent HTTP
Højst et objekt
sendes over en TCPforbindelse.
HTTP/1.0 bruger ikkepersistent HTTP
Persistent HTTP
flere objekter kan
sendes over en enkelt
TCP-forbindelse
mellem klient og
server.
HTTP/1.1 bruger
persistente
forbindelser i default
mode
2: Applikationslaget
18
Ikke-persistent HTTP
(indeholder tekst
Bruger indtaster en URL
og referencer til 10
www.someSchool.edu/someDepartment/home.index
jpeg-billeder)
1a. HTTP-klienten indleder en TCPforbindelse til HTTP-serveren
(processen) i
www.someSchool.edu på port 80
2. HTTP-klienten sender en
HTTP request message
(indeholdende URL) ind i TCPforbindelses-soklen. Beskeden
angiver, at klienten ønsker
objektet
someDepartment/home.index
tid
1b. HTTP-serveren på maskinen
www.someSchool.edu venter
på TCP-forbindelser på port
80, “accepterer” forbindelse
og giver klienten besked
3. HTTP-serveren modtager
request beskeden og laver en
response besked indeholdende
det forlangte objektet og
sender beskeden ind i dens
socket
2: Applikationslaget
19
Ikke-persistent HTTP (fortsat)
4. HTTP serveren lukker TCP5. HTTP-klienten modtager svar-
tid
forbindelsen.
beskeden indeholdende htmlfilen og viser html-filen. Den
skanner html-filen og finder
10 refererede jpeg-objekter
6. Trin 1-5 gentages for hvert af
de 10 jpeg-objekter
2: Applikationslaget
20
Svartids-modellering
Definition af RoundTripTime:
tiden det tager at sende en lille
pakke fra klienten til serveren
og tilbage igen.
indled TCPSvartid:
forbindelsen
én RTT for at initiere TCPRTT
forbindelsen
Bed om
fil
én RTT for HTTP-anmodningen
RTT
og de første få bytes af HTTPsvaret kommer tilbage
fil
filtransmissionstid
modtaget
total = 2RTT+filtransmissionstid
tid
tid for
forsendelse
af fil
tid
2: Applikationslaget
21
Persistent HTTP
Ikke-persistent HTTP:
kræver 2 RTT pr. objekt
OS skal arbejde og tildele
maskinressourcer for hver
TCP-forbindelse
men browserne åbner ofte
parallele TCP-forbindelse
for at hente refererede
objekter
Persistent HTTP
serveren lader forbindelsen
stå åben efter afsendelse
af svaret.
de efterfølgende HTTPbeskeder mellem samme
client-server sendes over
forbindelsen
Persistent uden pipelining:
klienten udsender først en
ny forespørgsel, når det
tidligere forlangte svar er
blevet modtaget
en RTT for hvert
refereret objekt
Persistent med pipelining:
default i HTTP/1.1
klienten sender
forespørgsel, så snart den
møder et refereret objekt
så lidt som én RTT for alle
de refererede objekter
2: Applikationslaget
22
HTTP request besked
to typer HTTP beskeder:
request, response
HTTP request besked:
ASCII (person-læsbart format)
request linie
(GET, POST,
HEAD kommandoer)
GET /somedir/page.html HTTP/1.1
Host: www.someschool.edu
User-agent: Mozilla/4.0
header Connection: close
linier Accept-language:fr
Carriage return,
line feed
angiver slut på
beskeden
(extra carriage return, line feed)
2: Applikationslaget
23
HTTP request besked: generelt format
2: Applikationslaget
24
Uploading af formular-input
Post metoden:
Websider indeholder
ofte formularinput
Input uploades til
serveren i “entity
body” (foregående
slide)
URL metoden:
Bruger GET metoden
Input uploades i URLfeltet i request -linien:
www.somesite.com/animalsearch?monkeys&banana
2: Applikationslaget
25
Metodetyper
HTTP/1.0
GET
POST
HEAD
beder serveren om at
udelade udbedte
objekter fra svaret
HTTP/1.1
GET, POST, HEAD
PUT
uploader filen i “entity
body” til stien angvet i
URL-feltet
DELETE
sletter fil angivet i URL
feltet
2: Applikationslaget
26
HTTP svarbesked
statuslinie
(protokol
statuskode
statussætn.)
header
linier
data, f.eks.
udbedt
HTML-fil
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 ...
2: Applikationslaget
27
HTTP-svar statuskoder
I første linie i server->klient svarbesked.
Nogle få eksempelkoder:
200 OK
request succeeded, requested object later in this message
301 Moved Permanently
requested object moved, new location specified later in
this message (Location:)
400 Bad Request
request message not understood by server
404 Not Found
requested document not found on this server
505 HTTP Version Not Supported
2: Applikationslaget
28
Prøv selv HTTP (klientsiden)
1. Telnet til din favorit Web-server:
telnet www.eurecom.fr 80 Åbner TCP-forbindelse til port 80
(default HTTP server port) i www.eurecom.fr.
Alt, der indtastes, sendes til
port 80 i www.eurecom.fr
2. Indtast GET HTTP request:
GET /~ross/index.html HTTP/1.0
Ved at indtaste dette (efterfulgt af
2 “carriage return”) sendes
denne minimale (men komplette)
GET request til HTTP-serveren
3. Se på svarbeskeden, der sendes af HTTP-serveren !
2: Applikationslaget
29
Bruger-server interaktion: autorisation
Autorisation : styrer adgangen
server
klient
til server-indholdet
sædv. http request msg
autorisationsinformation:
typisk navn og password
401: authorization req.
WWW authenticate:
tilstandsløs: klienten skal give
autorisation ved hver request
sædv. http request msg
autorisation: headerlinie i
+ Authorization: <info>
hver request
hvis ingen autorisationssædv. http svarbesked
header afslår serveren
adgangen og sender:
WWW authenticate:
svarlinie som svar
sædv. http request msg
+ Authorization: <info>
sædv. http svarbesked
2: Applikationslaget
tid
30
Cookies: husker “tilstanden”
Mange store Web-sites
bruger cookies
Der er fire dele:
1) cookie header-linie i
HTTP-svarbeskeden
2) cookie header linie i
HTTP request-beskeden
3) cookie fil på brugerens
maskine passes af
brugerens browser
4) back-end database på
Web-siten
Eksampel:
Susan går altid på
Internettet fra samme
PC
hun besøger en bestemt
e-handels site for
førstegang
Når den første HTTPrequest ankommer til
sitet, laver det en unik
ID og en post i backend
databasen til ID
2: Applikationslaget
31
Cookies: husker “tilstanden” (fortsat)
klient
Cookie file
ebay: 8734
Cookie file
amazon: 1678
ebay: 8734
server
sædv. http req. msg
server
sædv. http svar +
laver ID
Set-cookie: 1678 1678 for brugeren
sædv. http req. msg
cookie: 1678
sædv. http svarbesked
En uge senere:
Cookie file
amazon: 1678
ebay: 8734
sædv. http req. msg
cookie: 1678
sædv. http svarbesked
cookiespecifik
aktion
cookiespecifik
aktion
2: Applikationslaget
32
Cookies (fortsat)
Hvad cookies kan bringe:
autorisation
indkøbsvogn
anbefalinger
bruger sessionstilstand (Web e-mail)
apropos
Cookies og privatliv:
cookies tillader sites
at finde ud af meget
om dig
du kan give navn og email til sites
søgemaskiner bruger
redirection og cookies
for at finde ud af
endnu mere
annonceselskaber får
info på tværs af sites
2: Applikationslaget
33
Conditional GET: klient-side caching
Mål: send ikke objekt, hvis
klient har opdateret cached
udgave
klient: angiv dato for cached
kopi i HTTP-requesten
If-modified-since:
<date>
server: svaret indeholder
intet objekt, hvis den
cachede kopi er up-to-date:
HTTP/1.0 304 Not
Modified
server
klient
HTTP request msg
If-modified-since:
<date>
HTTP response
objekt
ikke
ændret
HTTP/1.0
304 Not Modified
HTTP request msg
If-modified-since:
<date>
HTTP response
objekt
ændret
HTTP/1.0 200 OK
<data>
2: Applikationslaget
34
Kapitel 2 oversigt
2.1 Principper for
applikationslagsprotokoller
klienter og servere
applikationskrav
2.2 Web og HTTP
2.3 FTP
2.4 Elektronisk post
SMTP, POP3, IMAP
2.5 DNS
2.6 Socket
programmering med TCP
2.7 Socket
programmering med UDP
2.8 Opbygning af en
Web-server
2.9 Materialedistribution
Netværks Web-caching
Materialedistributionsnetværk
Peer-to-peer fildeling
2: Applikationslaget
35
FTP: file transfer protocol
bruger ved
maskine
FTP
FTP
bruger- klient
interface
filoverførsel
lokalt filsystem
FTP
server
remote filsystem
overfør fil til-fra fjern maskine
client/server model
client: den side, der indleder overførslen (enten til
eller fra den fjerne maskine)
server: fjerne maskine
ftp: RFC 959
ftp-server: port 21
2: Applikationslaget
36
FTP: separate kontrol- og data-forbindelser
TCP kontrolforbindelse
port 21
FTP-klienten kontakter FTP-
serveren på port 21 og angiver
TCP som transport- protokol
Klienten får autorisation over
kontrolforbindelsen
Klienten browser det fjerne
katalog ved at sende
kommandoer over kontrolforbindelsen.
Når serveren modtager en
kommando om fil-overførsel,
åbner serveren en TCP dataforbindelse til klienten
Efter overførsel af en fil lukker
serveren forbindelsen.
FTP
klient
TCP dataforbindelse
port 20
FTP
server
Serveren åbner en anden TCP
data-dataforbindelse for at
overføre en anden fil.
Kontrolforbindelsen er: “out
of band”
FTP serveren vedligeholder
en “tilstand”: aktuelle katalog
og tidligere autentifikation
2: Applikationslaget
37
FTP kommandoer og svar
Nogle kommander:
Nogle retur-koder
sendes som ASCII-tekst
statuskode og sætning
over kontrolkanalen
USER username
PASS password
LIST returnerer en liste
over filer i det aktuelle
katalog
RETR filename retriever
(henter) filen
STOR filename storer
(gemmer) filen på den
fjerne maskine.
(som i HTTP)
331 Username OK,
password required
125 data connection
already open;
transfer starting
425 Can’t open data
connection
452 Error writing
file
2: Applikationslaget
38
Kapitel 2 oversigt
2.1 Principper for
applikationslagsprotokoller
klienter og servere
applikationskrav
2.2 Web og HTTP
2.3 FTP
2.4 Elektronisk post
SMTP, POP3, IMAP
2.5 DNS
2.6 Socket
programmering med TCP
2.7 Socket
programmering med UDP
2.8 Opbygning af en
Web-server
2.9 Materialedistribution
Netværks Web-caching
Materialedistributionsnetværk
Peer-to-peer fildeling
2: Applikationslaget
39
Elektronisk post
outgoing
message queue
user mailbox
brugeragent
Tre hoveddele:
brugeragenter
mail
server
mail servere
SMTP
simple mail transfer protocol:
SMTP
SMTP
Brugeragent
en slags “mail reader”
lav, rediger, læs postbeskeder
f.eks. Eudora, Outlook, elm,
Netscape Messenger
udgående og indkommende
beskeder gemmes på serveren
mail
server
bruger
agent
SMTP
brugeragent
mail
server
brugeragent
brugeragent
brugeragent
2: Applikationslaget
40
Elektronisk post: mail-servere
user
agent
Mail-servere
mailbox indeholder
indkommende beskeder til
brugeren
message queue af udgående
(at sende) postbeskeder
SMTP protocol mellem mail
servere for at sende emailbeskeder
klienten: den afsendende
mail server
“serveren”: den
modtagende mail server
mail
server
SMTP
SMTP
mail
server
user
agent
SMTP
user
agent
mail
server
user
agent
user
agent
user
agent
2: Applikationslaget
41
Elektronisk post: SMTP [RFC 2821]
bruger TCP til pålidelig overførsel af email-beskeder fra
klient til server på port 25
direkte overførsel: afsendende server til modtagende server
tre faser i overførslen
handshaking (oprettelse af forbindelsen)
overførsel af beskeder
nedlukning
Kommand-svar interaktion
kommander: ASCII tekst
svar: statuskode og -sætning
Beskeder skal være i 7-bit ASCII
2: Applikationslaget
42
Scenario: Alice sender besked til Bob
4) SMTP-klienten sender
Alice’s besked over TCPforbindelsen
5) Bob’s mail server anbringer
beskeden i Bob’s mailbox
6) Bob starter sin
brugeragent for at læse
beskeden
1) Alice starter sin
brugeragent (UA) for at
skrive besked og “til”
[email protected]
2) Alice’s UA sender besked
til hendes mail server;
beskeden anbringes i
beskedkø.
3) Klient-siden af SMTP åbner
en TCP-forbindelse til
Bob’s mail server
1
user
agent
2
mail
server
3
mail
server
4
5
6
user
agent
2: Applikationslaget
43
Eksempel på SMTP interaktion
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
Do you like ketchup?
How about pickles?
.
250 Message accepted for delivery
QUIT
221 hamburger.edu closing connection
2: Applikationslaget
44
Prøv selv SMTP-interaktion:
telnet servername 25
se 220 svar fra serveren
indtast HELO, MAIL FROM, RCPT TO, DATA,
QUIT kommandoer
sådan kan du sende email uden at bruge en emailclient (læser)
2: Applikationslaget
45
SMTP: slutord
SMTP bruger persistente
forbindelser
SMTP kræver besked
(header og body) i 7-bit
ASCII
SMTP serveren bruger
CRLF.CRLF for at opdage
“end of message”
Sammenligning med HTTP:
HTTP: pull (træk)
SMTP: push (skub)
begge har ASCII kommando-
svar interaktion og statuskoder
HTTP: hvert objekt indkapsles
i sin egen svarbesked
SMTP: flere objekter sendes i
multipart-beskeder
2: Applikationslaget
46
Mail beskedformat
SMTP: protokol til udveksling
af email-beskeder
RFC 822: standard for tekst
beskedformat:
Header-linier, f.eks.
To:
From:
Subject:
header
blank
linie
body
forskelligt fra SMTP
kommandoer !
body
“beskeden”, Kun ASCIItegn
2: Applikationslaget
47
Beskedformat: multimedie udvidelse
MIME: multimedia mail extension, RFC 2045, 2056
ekstra linier i beskedheaderen erklærer MIME
indholdstypen
MIME version
metoden brugt
til indkodning af data
multimedie datatype, subtype,
parametererklæring
indkodede data
From: [email protected]
To: [email protected]
Subject: Picture of yummy crepe.
MIME-Version: 1.0
Content-Transfer-Encoding: base64
Content-Type: image/jpeg
base64 encoded data .....
.........................
......base64 encoded data
2: Applikationslaget
48
MIME typer
Content-Type: type/subtype; parameters
Text
Video
eksempler på undertyper:
eksempler på undertyper:
plain, html
Image
eksempler på undertyper:
jpeg, gif
Audio
eksempler på undertyper:
mpeg, quicktime
Applikation
andre data, som skal
behandles af læseren, før
de kan “ses”.
eksempler på undertyper:
msword, octet-stream
basic (8-bit my-lov
indkodet), 32kadpcm (32
kb/s kodning)
2: Applikationslaget
49
Multipart Type
From: [email protected]
To: [email protected]
Subject: Picture of yummy crepe.
MIME-Version: 1.0
Content-Type: multipart/mixed; boundary=StartOfNextPart
--StartOfNextPart
Dear Bob, Please find a picture of a crepe.
--StartOfNextPart
Content-Transfer-Encoding: base64
Content-Type: image/jpeg
base64 encoded data .....
.........................
......base64 encoded data
--StartOfNextPart
Do you want the reciple?
2: Applikationslaget
50
Mail adgangsprotokoller
user
agent
SMTP
SMTP
afsenderens mail
server
adgangs
protokol
user
agent
modtagerens mail
server
SMTP: aflevering/lagring til modtagerens server
Mail adgangsprotokol: nedhentning fra serveren
POP: Post Office Protocol [RFC 1939]
• autorisation (agent <-->server) og download
IMAP: Internet Mail Access Protocol [RFC 1730]
• flere features (mere kompleks)
• manipulation af lagrede beskeder på serveren
HTTP: Hotmail , Yahoo! Mail, osv.
2: Applikationslaget
51
POP3 protokol
autorisationsfase
klient kommandoer:
user: giv username
pass: password
server svarer
+OK
-ERR
transaktionsfase, klient:
list: list beskednumre
retr: hent besked efter
nummer
dele: slet
quit
S:
C:
S:
C:
S:
+OK POP3 server ready
user bob
+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
<message 1 contents>
.
dele 1
retr 2
<message 1 contents>
.
dele 2
quit
+OK POP3 server signing off
2: Applikationslaget
on
52
POP3 (mere) og IMAP
Mere om POP3
Foregående eksempel
bruger “download and
delete” mode.
Bob kan ikke genlæse
e-mail, hvis han skifter
klient
“Download-and-keep”:
kopier af beskeder på
forskellige klienter
POP3 er tilstandsløs
over sessioner
IMAP
Behold alle beskeder
på et sted: i serveren
Tillader brugeren at
organisere beskeder i
foldere
IMAP opretholder
brugertilstanden over
sessioner:
navne på foldere og
afbildning mellem
besked-ID’er og folder
navne
2: Applikationslaget
53
Kapitel 2 oversigt
2.1 Principper for
applikationslagsprotokoller
klienter og servere
applikationskrav
2.2 Web og HTTP
2.3 FTP
2.4 Elektronisk post
SMTP, POP3, IMAP
2.5 DNS
2.6 Socket
programmering med TCP
2.7 Socket
programmering med UDP
2.8 Opbygning af en
Web-server
2.9 Materialedistribution
Netværks Web-caching
Materialedistributionsnetværk
Peer-to-peer fildeling
2: Applikationslaget
54
DNS: Domain Name System
Personer: mange
identifikatorer:
distribueret database
applikation-lags protokol
CPR, navn, pasnr.
Internetmakiner og
routere:
Domain Name System:
IP-address (32 bit) –
bruges til at adressere
datagrammer
“navn”, f.eks.
gaia.cs.umass.edu –
bruges af personer
Spm: afbildning mellem
IP-adresser og navn ?
implementeret i hierarki af
mange name servere
maskiner, routere og name
servere kommunikerer for at
resolve navne (oversætte
mellem adresser og navne)
NB: kærne Internet
funktion, implementeret som
applikation-lags protokol
kompleksitet ved nettets
“kant”
2: Applikationslaget
55
DNS name servere
ingen server har alle navne-
Hvorfor ikke central DNS?
til-IP adresse afbildninger
enkelt fejlpunkt
lokal name server:
hver ISP og firma har lokal
trafikvolumen
(default) name server
fjern central database
maskine DNS forespørgsel går
vedligeholdelse
først til den lokale name
server
skalerer ikke !
autoritativ name server:
for en maskine: gemmer
maskinens IP-adresse og navn
kan udføre navn-adresse
oversættelse for denne
maskines navn
2: Applikationslaget
56
DNS: Root name servere
kontaktes af lokal name server, som ikke kan resolve (oversætte)
et navn
root name server:
kontakter autoritativ NS hvis navneafbildningen ikke kendes
får afbildningen
returnerer afbildningen til den lokale name server
a NSI Herndon, VA
c PSInet Herndon, VA
d U Maryland College Park, MD
g DISA Vienna, VA
h ARL Aberdeen, MD
j NSI (TBD) Herndon, VA
k RIPE London
i NORDUnet Stockholm
m WIDE Tokyo
e NASA Mt View, CA
f Internet Software C. Palo Alto,
CA
b USC-ISI Marina del Rey, CA
l ICANN Marina del Rey, CA
13 root name
servere i verden
2: Applikationslaget
57
Simpelt DNS eksempel
maskinen
surf.eurecom.fr
ønsker IP adressen på
root name server
2
4
5
3
gaia.cs.umass.edu
1. den kontakter sin lokale DNS
server, dns.eurecom.fr
lokal name server
dns.eurecom.fr
2. dns.eurecom.fr
kontakter root name
1
6
server, hvis nødvendigt
3. root name server kontakter
authoritative name server,
spørgende maskine
dns.umass.edu, hvis
surf.eurecom.fr
nødvendigt
authorititive name server
dns.umass.edu
gaia.cs.umass.edu
2: Applikationslaget
58
DNS eksempel
root name server
Root name server:
kender måske ikke
7
authoritative name
server
kender måske
intermediate name
server: hvem skal
kontaktes for at
finde authoritative
name server
6
2
local name server
dns.eurecom.fr
1
8
requesting host
3
intermediate name server
dns.umass.edu
4
5
authoritative name server
dns.cs.umass.edu
surf.eurecom.fr
gaia.cs.umass.edu
2: Applikationslaget
59
DNS: itererede forespørgsler
root name server
rekursiv forespørgsel:
lægger byrden ved
name resolution på
den kontaktede name
server
kraftig belastning ?
itereret forespørgsel:
den kontaktede
server svarer med
navnet på serveren
der skal kontaktes
“Jeg kender ikke
dette navn, men spørg
denne server”
itereret forespørgsel
2
3
4
7
local name server
dns.eurecom.fr
1
8
requesting host
intermediate name server
dns.umass.edu
5
6
authoritative name server
dns.cs.umass.edu
surf.eurecom.fr
gaia.cs.umass.edu
2: Applikationslaget
60
DNS: caching og opdatering af
poster
når (en vilkårlig) name server lærer en mapping,
cacher den mapningen (afbildningen)
Cache-værdier
timer ud (forsvinder) efter
nogen tid
Opdaterings-notifikations mekanismer er under
design af IETF
RFC 2136
http://www.ietf.org/html.charters/dnsind-charter.html
2: Applikationslaget
61
DNS poster (records)
DNS: distribueret database med resource records (RR)
RR format: (name,
Type=A
name er maskinnavn
value er IP-adresse
value, type,ttl)
Type=CNAME
name er alias navn for en
“kanonisk” (det rette) navn
www.ibm.com er egentlig
Type=NS
servereast.backup2.ibm.com
name er domæne (f.eks.
value is kanonisk navn
foo.com)
value er IP-adresse på
Type=MX
autoritativ name server
value er navnet på
for dette domæne
mailserver knyttet til name
2: Applikationslaget
62
DNS protokol og beskeder
DNS protokol : query og reply beskeder, begge med
samme beskedformat
besked header
identifikation: 16 bit nr.
for forespørgsel, svaret
på denne bruger samme
nr.
flag:
forespørgsel el. svar
rekursion ønskes
rekursion findes
svaret er autoritativt
2: Applikationslaget
63
DNS protokol og beskeder
Navn, type felter
for en forespørgsel
RR’er som svar
på forespørgslen
records for
autoritative servere
yderligere “hjælpe”
info som kan bruges
2: Applikationslaget
64
Kapitel 2 oversigt
2.1 Principper for
applikationslagsprotokoller
klienter og servere
applikationskrav
2.2 Web og HTTP
2.3 FTP
2.4 Elektronisk post
SMTP, POP3, IMAP
2.5 DNS
2.6 Socket
programmering med TCP
2.7 Socket
programmering med UDP
2.8 Opbygning af en
Web-server
2.9 Materialedistribution
Netværks Web-caching
Materialedistributionsnetværk
Peer-to-peer fildeling
2: Applikationslaget
65
Socket programmering
Mål: at lære hvorledes man opbygger client/server
applikationer, der kommunikerer v.h.a. sockets
Socket API
indført i BSD4.1 UNIX 1981
skal eksplicit oprettes,
bruges og frigives af appl.
client/server paradigme
to typer transportservice
via socket API:
upålidelig datagram
pålidelig byte streamorienteret
socket
en maskin-lokal,
applications-skabt,
OS-kontrolleret interface
(en “dør”) ad hvilken
applikationsprocesser kan
både sende og
modtage beskeder til/fra
en anden applikationsproces
2: Applikationslaget
66
Socket-programmering med TCP
Socket: en dør mellem applikationsprocess og endend-transport protokol (UCP eller TCP)
TCP service: pålidelig overførsel af bytes fra en
proces til en anden
kontrolleres af
applikationsudvikler
kontrolleres af
operativ
systemet
process
process
socket
TCP med
buffere
variable
maskine eller
server
internet
socket
TCP med
buffere
variable
kontrolleres as
applikations
udvikler
kontrolleres af
operativ
systemet
maskine eller
server
2: Applikationslaget
67
Socket programmering med TCP
Klient vil kontakte server
Når den kontaktes af klienten
opretter server TCP’en en ny
serverproces skal først køre
socket til serverprocessen for
server skal have lave socket
at kommunikere med klienten
(dør) som accepterer
dette tillader serveren at
klientens kontakt
tale med mange klienter
Klient kontakter server ved:
source port numre bruges
at oprette klient-lokal TCP
til at skelne klienter (mere
socket
i kap. 3)
angive IP-adresse og port
nummer på serverprocessen
applikationssynspunkt
Når klienten opretter
TCP giver pålidelig, in-order
socket: klient TCP establerer
overførsel af bytes (“pipe”)
forbindelse til server TCP
mellem klient og server
2: Applikationslaget
68
Stream jargon
En stream er en sekvens af
tegn der flyder ind i eller
ud af en proces.
En input stream knyttes til
en inputkilde for
processen, f.eks, tastatur
eller socket.
En output stream knyttes
til en output kilde, f.eks,
monitor eller socket.
2: Applikationslaget
69
Socket programmering med TCP
o u tp u t
s tre a m
i n F ro m U s e r
Klient
P ro ce ss
proces
in p u t
s tre a m
o u tT o S e rv e r
1) klient læser linier fra
standard input (inFromUser
stream) , sender til server via
socket (outToServer
stream)
2) server læser linie fra socket
3) server konverterer linie til
uppercase og sender den
tilbage til klienten
4) klienten læser og viser den
ændrede linie fra socket
(inFromServer stream)
m o n ito r
i n F ro m S e rv e r
Eksempel client-server app:
k e y b o a rd
in p u t
s tre a m
client
TCP
c lie n tS o c k e t
socket
to n e tw o rk
TCP
socket
fro m n e tw o rk
2: Applikationslaget
70
Client/server socket interaktion: TCP
Server (kører på hostid)
Klient
opret socket,
port=x, for
Indkommende forespørgsler:
welcomeSocket =
ServerSocket()
TCP
Vent på indkommende
forb.opsætn.
connection request
connectionSocket =
welcomeSocket.accept()
læs request fra
connectionSocket
skriv svar til
connectionSocket
luk
connectionSocket
Opret socket,
knyttet til hostid, port=x
clientSocket =
Socket()
send request v.h.a.
clientSocket
læs svar fra
clientSocket
luk
clientSocket
2: Applikationslaget
71
Eksempel: Java klient (TCP)
import java.io.*;
import java.net.*;
class TCPClient {
public static void main(String argv[]) throws Exception
{
String sentence;
String modifiedSentence;
Opret
input stream
Opret
client socket,
knyttet til server
Opret
output stream
knyttet til socket
BufferedReader inFromUser =
new BufferedReader(new InputStreamReader(System.in));
Socket clientSocket = new Socket("hostname", 6789);
DataOutputStream outToServer =
new DataOutputStream(clientSocket.getOutputStream());
2: Applikationslaget
72
Eksempel: Java client (TCP), forts.
Opret
input stream
knyttet til socket
BufferedReader inFromServer =
new BufferedReader(new
InputStreamReader(clientSocket.getInputStream()));
sentence = inFromUser.readLine();
Send linie
til server
outToServer.writeBytes(sentence + '\n');
Læs linie
fra server
modifiedSentence = inFromServer.readLine();
System.out.println("FROM SERVER: " + modifiedSentence);
clientSocket.close();
}
}
2: Applikationslaget
73
Eksempel: Java server (TCP)
import java.io.*;
import java.net.*;
class TCPServer {
Opret
velkomst socket
på port 6789
Vent på velkomstsocket’en på kontakt
fra klienten
Opret input
stream knyttet
til socket
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()));
2: Applikationslaget
74
Eksempel: Java server (TCP), fort.
Opret output
stream knyttet
til socket
DataOutputStream outToClient =
new DataOutputStream(connectionSocket.getOutputStream());
Indlæs linie
fra socket
clientSentence = inFromClient.readLine();
capitalizedSentence = clientSentence.toUpperCase() + '\n';
Udskriv linie
til socket
outToClient.writeBytes(capitalizedSentence);
}
}
}
Slut på while-løkke,
Hop tilbage og vent på
en anden klient-forbindelse
2: Applikationslaget
75
Kapitel 2 oversigt
2.1 Principper for
applikationslagsprotokoller
klienter og servere
applikationskrav
2.2 Web og HTTP
2.3 FTP
2.4 Elektronisk post
SMTP, POP3, IMAP
2.5 DNS
2.6 Socket
programmering med TCP
2.7 Socket
programmering med UDP
2.8 Opbygning af en
Web-server
2.9 Materialedistribution
Netværks Web-caching
Materialedistributionsnetværk
Peer-to-peer fildeling
2: Applikationslaget
76
Socket programmering med UDP
UDP: ingen “forbindelse”
mellem klient og server
ingen handshaking
afsenderen knytter IPadresse og port i
destinationen til hver
pakke
serveren skal uddrage IPadressen og port i
afsenderen fra modtagne
pakker
applikationssynspunkt
UDP giver upålidelig overførsel
af grupper af bytes (“datagrammer”)
mellem klient og server
UDP: transmitterede data kan
ankomme i gal rækkefølge
eller mistes
2: Applikationslaget
77
Client/server socket interaktion: UDP
Server (kører på hostid)
opret socket,
port=x, for
indkommende request:
serverSocket =
DatagramSocket()
læs request fra
serverSocket
skriv svar til
serverSocket
der giver klient
maskinadresse
og port nummer
Klient
opret socket,
clientSocket =
DatagramSocket()
Opret adresse (hostid, port=x,
send datagram request
v.h.a. clientSocket
læs svar fra
clientSocket
luk
clientSocket
2: Applikationslaget
78
Eksempel: Java klient (UDP)
in p u t
s tre a m
Klientproces
m o n ito r
in F ro m Use r
k e y b o a rd
P ro c e s s
Input: modtager pakke
(TCP modtog “byte
stream”)
UDP
packet
re ce ive P a cke t
(TCP sendte “byte
stream”)
se n d P a ck e t
Output: sender pakke
UDP
packet
client
UDP
c lie n tS o c k e t
socket
to n e tw o rk
UDP
socket
fro m n e tw o rk
2: Applikationslaget
79
Eksempel: Java klient (UDP)
import java.io.*;
import java.net.*;
Opret
input stream
Opret
klient socket
Oversæt
maskinnavn til IPadresse v.h.a. 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();
2: Applikationslaget
80
Eksempel: Java klient (UDP), fort.
Opret datagram
med data, længde,
IP-addr, port
Send datagrammet
til serveren
DatagramPacket sendPacket =
new DatagramPacket(sendData, sendData.length, IPAddress, 9876);
clientSocket.send(sendPacket);
DatagramPacket receivePacket =
new DatagramPacket(receiveData, receiveData.length);
Læs datagrammet
fra serveren
clientSocket.receive(receivePacket);
String modifiedSentence =
new String(receivePacket.getData());
System.out.println("FROM SERVER:" + modifiedSentence);
clientSocket.close();
}
}
2: Applikationslaget
81
Eksempel: Java server (UDP)
import java.io.*;
import java.net.*;
Opret
datagram socket
på port 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)
{
Opret plads til
modtagne datagram
Modtag
datagram
DatagramPacket receivePacket =
new DatagramPacket(receiveData, receiveData.length);
serverSocket.receive(receivePacket);
2: Applikationslaget
82
Eksempel: Java server (UDP), fort.
String sentence = new String(receivePacket.getData());
Få IP-adr
portnr på
afsender
InetAddress IPAddress = receivePacket.getAddress();
int port = receivePacket.getPort();
String capitalizedSentence = sentence.toUpperCase();
sendData = capitalizedSentence.getBytes();
Opret datagram
at sende til klient
DatagramPacket sendPacket =
new DatagramPacket(sendData, sendData.length, IPAddress,
port);
Udskriv
datagram
til socket
serverSocket.send(sendPacket);
}
}
}
Slut på while-løkke,
hop tilbage og vent på
et andet datagram
2: Applikationslaget
83
Opbygning af en simpel Web-server
behandler en HTTP
request
accepterer request
parser header
får ønskede fil fra
serverens filsystem
opretter HTTP
svarbesked:
efter oprettelsen af
serveren kan du bede
om en fil v.h.a. en
browser (f.eks. IE=
explorer)
se detaljer i bogen
header lines + fil
sender svaret til klient
2: Applikationslaget
84
Socket programmering: referencer
C-language tutorial (audio/slides):
“Unix Network Programming” (J. Kurose),
http://manic.cs.umass.edu/~amldemo/courseware/intro.
Java-tutorials:
“All About Sockets” (Sun tutorial),
http://www.javaworld.com/javaworld/jw-12-1996/jw-12sockets.html
“Socket Programming in Java: a tutorial,”
http://www.javaworld.com/javaworld/jw-12-1996/jw-12sockets.html
2: Applikationslaget
85
Kapitel 2 oversigt
2.1 Principper for
applikationslagsprotokoller
klienter og servere
applikationskrav
2.2 Web og HTTP
2.3 FTP
2.4 Elektronisk post
SMTP, POP3, IMAP
2.5 DNS
2.6 Socket
programmering med TCP
2.7 Socket
programmering med UDP
2.8 Opbygning af en
Web-server
2.9 Materialedistribution
Netværks Web-caching
Materialedistributionsnetværk
Peer-to-peer fildeling
2: Applikationslaget
86
Web caches (proxy server)
Mål: opfyld klientforespørgsler uden at inddrage den
oprindelige server
bruger indstiller
browseren: Web-tilgang
via cache
browseren sender alle
HTTP requests til cachen
hvis objektet er i
cachen så returnerer
cachen objektet
ellers beder cachen om
objektet fra originalserveren og returnerer
objektet til klienten
original
server
klient
klient
Proxy
server
original
server
2: Applikationslaget
87
Mere om Web-caching
Cachen virker både som
klient og server
Cachen kan foretage up-todate check v.h.a. Ifmodified-since HTTP
headeren
Spm: skal cachen tage
risikoen og aflevere
cachede objekter uden
check ?
Der bruges heuristikker.
Hvorfor Web-caching?
Det reducerer svartiden
for klientforspørgsler.
Reducerer trafikken på en
institutions adgangslink.
Et Internet fyldt med
caches gør det muligt for
“fattige” indholdsleverandører at levere
indholdet effektivt
Typisk installeres cachen
af ISP (edb-afd., firma,
bolig ISP)
2: Applikationslaget
88
Caching eksempel (1)
Antagelser
gns. objektstørrelse = 100,000
bit
gns. request rate fra
institutionens browser til
originalserver = 15/sec
forsinkelse fra institutionel
router til enhver originalserver
og tilbage til routeren = 2 sec
Konsekvencer
originalservere
off.
Internet
1.5 Mb/s
access link
institutionelt
netværk
10 Mb/s LAN
udnyttelse på LAN = 15%
udnyttelse på access link = 100%
total forsinkelse
=
Internetforsinkelse + access fors. +
LAN fors.
= 2 sek + minutter + millisekunder
institutionel
cache
2: Applikationslaget
89
Caching eksempel (2)
Mulig løsning
forøg båndbredden på access
link til f.eks. 10 Mb/s
Konsekvencer
originale
servere
off.
Internet
udnyttelse af LAN = 15%
udnyttelse af access link = 15%
= Internet-fors. +
access fors. + LAN fors.
= 2 sek + msek + msek
ofte en kostbar opgradering
10 Mb/s
access link
Total fors.
institutionelt
netværk
10 Mb/s LAN
institutionel
cache
2: Applikationslaget
90
Caching eksempel (3)
originale
servere
Installér cache
antag en hit rate på 0.4
Konsekvens
off.
Internet
40% requests opfyldes næsten
=
øjeblikkeligt
60% requests opfyldes af
original-serveren
udnyttelsen af access-link
reduceres til 60%, resulterende
i forsvindende små forsinkelser
(f.eks. 10 msek)
total fors. = Internet-fors. +
access fors. + LAN fors.
0.6*2 sek + .6*0.01 sek +
millisekunder < 1.3 sek
1.5 Mb/s
access link
institutionelt
netværk
10 Mb/s LAN
institutionel
cache
2: Applikationslaget
91
Materialedistributions-netværk (CDNs)
Materiale-udbyderne er
CDN-kunderne.
Materiale-replikation
Et CDN-firma installerer
hundredevis af CDN-servere
i Internettet
hos lavniveau ISP’ere tæt
på brugerne
CDN replikerer kundernes
materiale i CDN-servere. Når
udbyderen opdaterer
indholdet, så opdaterer CDN
serverne
original server
i Nordamerika
CDN distributionsknude
CDN server
i Sydamerika
CDN server
i Europa
CDN server
i Asien
2: Applikationslaget
92
CDN eksempel
1
HTTP anmodning om
www.foo.com/sports/sports.html
Originalserver
2
3
DNS foresp. om www.cdn.com
CDNs autoritativ
DNS-server
HTTP anmodning om
www.cdn.com/www.foo.com/sports/ruth.gif
Nærliggende
CDN server
originalserver
www.foo.com
distributerer HTML
Erstatter:
http://www.foo.com/sports.ruth.gif
med
http://www.cdn.com/www.foo.com/sports/ruth.gif
CDN firma
cdn.com
distributerer gif-filer
bruger dets
autoritative DNSserver til at
omdirigere
requests 93
2: Applikationslaget
Mere om CDN’ere
routningsforespørgsler
ikke blot Web-sider
CDN opretter et “kort” streaming gemt
der giver afstande fra
audio/video
blad-ISP’ere og CDN streaming real-time
knuder
audio/video
når en forespørgsel
CDN knuder opretter
applikations-lags
kommer til en
overlay netværk
autoritativ DNS-server:
serveren finder ISP fra
hvilken spm. stammer
bruger “kortet” for at
finde bedste CDN server
2: Applikationslaget
94
Peer-to-peer (P2P) fildeling
Alice vælger en af
Eksempel
Alice kører P2P klientapplikation på sin
notebook computer
Af og til forbinder hun
sig til Internettet og
får en ny IP-adresse
for hver forbindelse
Beder om “Hey Jude”
Applikationen viser
andre peers som har
kopi af Hey Jude.
peers, Bob.
Filen kopieres fra
Bob’s PC til Alice’s
notebook: HTTP
Mens Alice downloader
uploader andre
brugere fra Alice.
Alice’s peer er både en
Web-klient og en
transient Web-server.
Alle peers er servere =
skalerer yderst godt!
2: Applikationslaget
95
P2P: centraliseret katalog
det originale “Napster”design
1) når peer forbinder sig
får den centrale server:
IP-adresse
materiale
2) Alice spørger om “Hey
Jude”
3) Alice beder om filen fra
Bob
Bob
centraliseret
katalog-server
1
peers
1
3
1
2
1
Alice
2: Applikationslaget
96
P2P: problemer med centralt katalog
Enkelt fejlpunkt
Ydelses-flaskehals
Copyright-krænkelse
fil-overførslen er
decentral, men
lokalisering af
indhold er meget
centraliseret
2: Applikationslaget
97
P2P: decentraliseret katalog
Hver peer er enten
gruppeleder eller
knyttet til en gruppeleder.
Gruppelederne holder
styr på indholdet i alle
dets børn.
Peers spørger
gruppeledere; gruppeledere kan spørge
andre gruppeledere.
ordinary peer
group-leader peer
neighoring relationships
in overlay network
2: Applikationslaget
98
Mere om decentraliserde kataloger
overlay netværk
peers er knuder
kanter mellem peers og
deres gruppeledere
kanter mellem nogle par
af gruppeledere
virtuelle naboer
bootstrap knude
en tilkoblet peer er
enten knyttet til en
gruppeleder eller
udpeges til leder
ved tilgangen
ingen centraliseret
katalog-server
localiserings-service
distribueres over peers
vanskeligere at lukke ned
ulemper ved tilgangen
brug for bootstrapknude
gruppeledere kan blive
overbelastede
2: Applikationslaget
99
P2P: Query flooding
Gnutella
Send forespørgsel til naboer
intet hierarki
bruger bootstrapknude
til at erfare om andre
gå ind (join) besked
Naboer videresender
forespørgslen
Hvis en forespurgt peer har
objektet, sender den besked
tilbage til den spørgende peer
join
2: Applikationslaget
100
P2P: mere om query flooding
For
peers har samme
ansvar: ingen
gruppeledere
yderst decentraliseret
ingen peer har kataloginfo
Imod
stor query trafik
query radius: maskiner
indenfor har måske
ikke materialet, når de
er på
bootstrap-knude
vedligeholdelse af
overlay netværk
2: Applikationslaget
101
Kapitel 2: Resumé
Studiet af netværksapplikationer komplet!
applikationsydelser,
specifikke protokoller:
krav:
HTTP
pålidelighed, båndbredde
FTP
og forsinkelse
SMTP, POP, IMAP
client-server paradigmet
DNS
Internet transport
service model
socket programmering
materiale-distribution
forbindelses-orienteret og
caches, CDN’ere
pålidelig: TCP
P2P
upålidelig og datagram: UDP
2: Applikationslaget
102
Kapitel 2: Resumé
Vigtigst: vi har lært om protokoller
typisk request/reply
beskedudveksling:
klienten beder om info
eller ydelse
serveren svarer med
data og statuskode
besked-formater:
headere: felter, der
giver info om data
data: info der
kommunikeres
kontrol- kontra data-beskeder
in-band, out-of-band
centraliserede/decentraliserede
tilstandsløse kontra med tilstand
pålidelig kontra upålidelig
beskedoverførsel
“kompleksitet ved nettets kant”
sikkerhed: autentifikation
2: Applikationslaget
103