Transcript Kapittel 2
Kapittel 2
Application Layer
Computer Networking:
A Top Down Approach
Featuring the Internet,
Slides adapted from the slides accompanying
the book of Kurose & Ross.
© 1996-2004
J.F Kurose and K.W. Ross, All Rights Reserved
Norsk versjon: © Christian F Heide, 2004.
Versjon 2.0 / 14.09.04
3rd edition.
Jim Kurose, Keith Ross
Addison-Wesley, July
2004.
Kap 2: Applikasjonslaget
1
Kapittel 2: Application layer
2.1 Principles of
network applications
2.2 Web and HTTP
2.3 FTP
2.4 Electronic Mail
SMTP, POP3, IMAP
2.5 DNS
2.6 P2P file sharing
2.7 Socket programming
with TCP
2.8 Socket programming
with UDP
2.9 Building a Web
server
Versjon 2.0 / 14.09.04
Kap 2: Applikasjonslaget
2
Noen nettverksapplikasjoner
E-post
Internettelefoni
Web
Sanntids video-
Instant messaging (f.
eks. MSN)
Remote login
P2P fildeling
Multi-user
nettverksspill
Streaming av lagret
video
konferanse
Massive parallel
computing
Versjon 2.0 / 14.09.04
Kap 2: Applikasjonslaget
4
Kapittel 2 – Hvor er vi?
2.1 Principles of
network applications
2.2 Web and HTTP
2.3 FTP
2.4 Electronic Mail
SMTP, POP3, IMAP
2.5 DNS
2.6 P2P file sharing
2.7 Socket programming
with TCP
2.8 Socket programming
with UDP
2.9 Building a Web
server
Versjon 2.0 / 14.09.04
Kap 2: Applikasjonslaget
5
Lage nettverksapplikasjoner
Skriv programmer som
kjører på ulike endesystemer
og
kommuniserer over et
nettverk
f.eks. Web: Web server
programvare kommuniserer
med nettleserprogramvare
applikasjon
transport
nettverk
link
fysisk
Ingen
applikasjonsprogramvare
skrives for noder i kjernen
Noder i nettets kjerne
opererer ikke på
applikasjonslaget
Dette designet muliggjør
hurtig applikasjonsutvikling
Versjon 2.0 / 14.09.04
applikasjon
transport
nettverk
link
fysisk
applikasjon
transport
nettverk
link
fysisk
Kap 2: Applikasjonslaget
7
Applikasjoner og applikasjonslagsprotokoller
Applikasjon: kommuniserende,
distribuerte prosesser
f.eks. e-post, Web, P2P
fildeling, meldingsformidling
kjører i endesystemer
(vertsmaskiner, hosts)
utveksler meldinger
appl
transport
nettverk
link
fysisk
Applikasjonslagsprotkoller
en del av en applikasjon
definerer meldinger som
utveksles og handlinger som
skal utføres
bruker kommunikasjonstjenester som tilbys av
protokoller på laget under
(transportlaget), TCP og UDP
Versjon 2.0 / 14.09.04
appl
transport
nettverk
link
fysisk
appl
transport
nettverk
link
fysisk
Kap 2: Applikasjonslaget
8
Applikasjonsarkitekturer
Klient-tjener (client-server)
Peer-to-peer (P2P)
Hybrid av klient-tjener og P2P
Versjon 2.0 / 14.09.04
Kap 2: Applikasjonslaget
9
Klient-tjener arkitektur
tjener (server):
“always-on” maskin
permanent IP-adresse
“server farmer” for
skalering
klienter:
Versjon 2.0 / 14.09.04
kommuniserer med
tjener
kan være sporadisk
tilkoblet
kan ha dynamisk IPadresse
kommuniserer ikke
direkte med hverandre
Kap 2: Applikasjonslaget
10
Ren P2P arkitektur
ingen “always on” server
nødvendig
endesystemer kommuniserer
direkte med hverandre
maskiner er sporadisk
tilkoblet og kan endre IPadresser
eksempel: Gnutella
Skalerer godt
Noe vanskelig å drifte
Versjon 2.0 / 14.09.04
Kap 2: Applikasjonslaget
11
Hybrid av klient-tjener og P2P
Napster
Filoverføring er P2P
Filsøk er sentralisert:
• Peers registrerer objekter de vil dele i sentral server
• Peers benytter samme server for å finne ønskede objekter
Instant messaging
Chatting mellom to brukere er P2P
Deteksjon av tilstedeværelse og adresse er sentralisert:
• Brukere registrerer sin IP-adresse i en sentral server når
de logger på
• Brukere kontakter sentral server for å finne venners IPadresser
Versjon 2.0 / 14.09.04
Kap 2: Applikasjonslaget
12
Klient-tjener paradigmet
klient
appl
transport
nettverk
link
fysisk
request
reply
appl
transport
nettverk
link
fysisk
tjener
Versjon 2.0 / 14.09.04
Kap 2: Applikasjonslaget
13
Kommuniserende prosesser
Prosess: program som
kjører på en maskin
innen samme maskin
kommuniserer to
prosesser ved
interprosesskommunikasjon
(definert av OS).
prosesser på ulike
maskiner kommuniserer
ved en applikasjonslagsprotokoll
Klientprosess: prosessen
som initierer
kommunikasjonen
Tjenerprosess:
prosessen som venter
på å bli kontaktet
Merk: applikasjoner
Versjon 2.0 / 14.09.04
med P2P-arkitektur har
både klientprosesser og
tjenerprosesser
Kap 2: Applikasjonslaget
14
Prosesskommunikasjon over et nettverk
prosess
kontrollert av
applikasjonsutvikleren
socket
socket
TCP med
buffere og
variable
prosess
Internett
TCP med
buffere og
variable
kontrollert
av OS
Versjon 2.0 / 14.09.04
Kap 2: Applikasjonslaget
15
Krav til transporttjenester fra noen
applikasjoner
Applikasjon
Følsom for
forsinkelse
Tap
Båndbredde
filoverføring
e-post
Web
sanntidsaudio/-video
ingen tap
ingen tap
ingen tap
tapstolerant
lagret audio/video
interaktive spill
tapstolerant
tapstolerant
elastisk
elastisk
elastisk
audio: 5kb/s-1Mb/s
video:10kb/s-5Mb/s
som over
noen kb/s og høyere
Versjon 2.0 / 14.09.04
nei
nei
nei
ja, noen 100 ms
ja, noen s
ja, noen 100 ms
Kap 2: Applikasjonslaget
19
Internett apps: applikasjon- og transportprotokoll
Applikasjon
e-post
remote terminalaksess
Web
filoverføring
streaming av multimedia
Internetttelefoni
Applikasjonslagsprotokoll
Underliggende
transportprotokoll
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
Versjon 2.0 / 14.09.04
oftest UDP
Kap 2: Applikasjonslaget
21
Kapittel 2 – Hvor er vi?
2.1 Principles of
network applications
app architectures
app requirements
2.2 Web and HTTP
2.4 Electronic Mail
SMTP, POP3, IMAP
2.5 DNS
2.6 P2P file sharing
2.7 Socket programming
with TCP
2.8 Socket programming
with UDP
2.9 Building a Web
server
Versjon 2.0 / 14.09.04
Kap 2: Applikasjonslaget
22
HTTP oversikt
HTTP: hypertext
transfer protocol
Webs applikasjonslags-
protokoll
klient/tjener modell
klient: browser som
forespør, mottar og
viser web-objekter
tjener: web-tjeneren
sender objekter som
repsons på forespørsler
HTTP 1.0: RFC 1945
HTTP 1.1: RFC 2616
Versjon 2.0 / 14.09.04
PC med
Explorer
Tjener som
kjører
Apache Web
server
Mac med
Navigator
Kap 2: Applikasjonslaget
24
HTTP oversikt (fortsatt)
HTTP er tilstandsløs
Benytter TCP:
klient initierer TCP-
forbindelse (åpner socket)
til tjener, port 80
tjener aksepterer TCPforbindelsen fra klienten
HTTP meldinger (applikasjonslagets protokollmeldinger) utveksles mellom
browser (HTTP klient) og
web-server (HTTP tjener)
TCP-forbindelsen lukkes
Versjon 2.0 / 14.09.04
tjener tar ikke vare
på informasjon om
tidligere forespørsler
fra klienten
på siden
Protokoller som har tilstandsinformasjon er komplekse!
må huske hva som har
skjedd
hvis tjener eller klient
krasjer, kan deres syn på
tilstanden bli inkonsistent
Kap 2: Applikasjonslaget
25
Ikkepersistent HTTP
Bruker skriver inn URL
www.ia.hiof.no/cfh/tullogtoys/index.html
(inneholder tekst
og referanser til
10 jpeg bilder)
1a. HTTP klienten initierer en
TCP- forbindelse til HTTP
serveren (eller prosessen) på
www.ia.hiof.no på port 80
2. HTTP klienten sender en
HTTP request melding (som
URL) over TCP-forbindelsen.
Meldingen indikerer at
klienten ønsker objektet
/cfh/tullogtoys/index.html
1b. HTTP server på maskinen
www.ia.hiof.no venter på en
TCP-forbindelse på port 80.
Aksepterer forbindelsen og
gir beskjed til klienten
3. HTTP serveren mottar fore-
spørselen, lager en response
melding som inneholder det
forespurte objektet og sender
meldingen inn på socket
tid
Versjon 2.0 / 14.09.04
Kap 2: Applikasjonslaget
27
Ikkepersistent HTTP (forts.)
4. HTTP server lukker TCP5. HTTP klienten mottar respons-
tid
forbindelsen
meldingen som inneholder
html-filen og viser denne. Ved
“parsing” av html-fil finner
den ti refererte jpegobjekter
6. Trinn 1-5 repeteres for hvert
av de ti jpeg-objektene
Versjon 2.0 / 14.09.04
Kap 2: Applikasjonslaget
28
Estimering av responsetid
Definisjon av RTT: tiden
det tar for en liten
pakke å vandre fra
klienten til tjeneren og
initiere TCPtilbake.
forbindelse
RTT
Responstid:
én RTT for å initiere en
request
TCP-forbindelse
RTT
én RTT for en HTTP
fil
request med ankomst av
mottatt
den første byte av HTTP
responsen
tid
sendetiden for fila
totalt: 2RTT + sendetid
Versjon 2.0 / 14.09.04
sendetiden
for
fil
tid
Kap 2: Applikasjonslaget
29
Persistent HTTP
Persistent uten pipelining:
Ulemper med ikkepersistent
HTTP:
klient sender ny
forespørsel først når
trenger 2 RTT pr objekt
respons er mottatt
OS må allokere ressurser
en RTT for hvert referert
for hver TCP-forbindelse
objekt
men nettlesere åpner ofte
parallelle TCP-forbindelser
Persistent med pipelining:
for å hente refererte
default i HTTP/1.1
objekter
klient sender forespørsel
Persistent HTTP
med en gang den kommer
tjener lar forbindelsen
over et referert objekt
være åpen etter å ha sendt
bare en RTT for alle de
sin respons
refererte objekter
etterfølgende HTTPmeldinger mellom samme
klient og tjener sendes over
samme forbindelse
Versjon 2.0 / 14.09.04
Kap 2: Applikasjonslaget
30
HTTP request-meldinger
HTTP request-melding:
Tekst (lesbart for mennesker)
request linje
(GET, POST,
HEAD kommandoer)
GET /somedir/page.html HTTP/1.1
Host: www.someschool.edu
User-agent: Mozilla/4.0
header Connection: close
linjer Accept-language:fr
“Carriage return,
line feed”
indikerer slutten
på meldingen
Versjon 2.0 / 14.09.04
Kap 2: Applikasjonslaget
31
HTTP request-melding: generelt format
Versjon 2.0 / 14.09.04
Kap 2: Applikasjonslaget
32
HTTP respons-melding
statuslinje
(protokoll,
statuskode,
statusfrase)
headerlinjer
data, f eks
etterspurt
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 ...
Versjon 2.0 / 14.09.04
Kap 2: Applikasjonslaget
34
HTTP respons-melding: generelt format
Versjon 2.0 / 14.09.04
Kap 2: Applikasjonslaget
35
Noen HTTP responsstatuskoder
200 OK
forespørsel lyktes, etterspurt objekt følger senere i
meldingen
301 Moved Permanently
etterspurt objekt er flyttet, ny lokasjon spesifisert
senere i meldingen (Location:)
400 Bad Request
forespørsel ikke forstått av serveren
404 Not Found
etterspurt dokument ikke funnet på serveren
505 HTTP Version Not Supported
Versjon 2.0 / 14.09.04
Kap 2: Applikasjonslaget
36
Cookies
klient
Cookie-fil
ebay: 8734
Cookie-fil
amazon: 1678
ebay: 8734
server
vanlig http request
server
vanlig http respons +
genererer ID
Set-cookie: 1678 1678 for bruker
vanlig http request
cookie: 1678
vanlig http respons
en uke senere:
Cookie-fil
vanlig http request
amazon: 1678
ebay: 8734
vanlig http respons
cookie: 1678
Versjon 2.0 / 14.09.04
cookiespesifikk
aksjon
cookiespesifikk
aksjon
Kap 2: Applikasjonslaget
38
Web caching (proxy server)
Mål: oppfylle klientens forespørsel uten å involvere
opprinnelsesserver
opprinnelsesserver
bruker setter nettleser:
Web-aksess via cache
nettleser sender alle
HTTP-forespørsler til
cache
klient
objektet finnes i cache:
cache returnerer
objektet
objektet finnes ikke i
cache: cache forespør
objektet fra
opprinnelses-serveren, og
returnerer objektet til
klienten
klient
Versjon 2.0 / 14.09.04
Proxy
server
opprinnelsesserver
Kap 2: Applikasjonslaget
40
Mer om web-caching
Cache opptrer som
både klient og tjener
Cache installeres ofte
av ISP (høgskole,
bedrift, privat ISP)
Hvorfor web-caching?
redusere responstid for
klientforespørsler.
redusere trafikken på
institusjonens aksesslink.
cacher gjør at “fattige”
innholdsleverandører kan gi
gode leveranser
Versjon 2.0 / 14.09.04
Kap 2: Applikasjonslaget
41
Caching eksempel
Antagelser
gjennomsnittlig
objektstørrelse = 100,000 bit
gjennomsn. foresp. rate fra
nettlesere = 15 pr sekund
forsinkelse fra institusjonens
ruter til opprinnelsesservere
og tilbake = 2 sekunder
Konsekvenser
utnyttelse av LAN = 15%
opprinnelses
servere
Internett
1.5 Mb/s
aksesslink
institusjonens
nettverk
10 Mb/s LAN
utnyttelse av aksesslink = 100%
total forsinkelse = Internett-
forsinkelse + aksessforsinkelse +
LAN forsinkelse
= 2 s + minutter + ms
Versjon 2.0 / 14.09.04
institusjonell
cache
Kap 2: Applikasjonslaget
42
Caching eksempel (forts.)
opprinnelses
servere
Mulig løsning
øke aksesslinkens båndbredde
til f eks 10 Mb/s
Konsekvenser
Internett
utnyttelse av LAN = 15%
utnyttelse av aksesslink = 15%
10 Mb/s
aksesslink
Total forsinkelse = Internett-
forsinkelse + aksessforsinkelse +
LAN forsinkelse
= 2 s + ms + ms
ofte en kostbar oppgradering
institusjonens
nettverk
10 Mb/s LAN
institusjonell
cache
Versjon 2.0 / 14.09.04
Kap 2: Applikasjonslaget
43
Caching eksempel (forts.)
opprinnelses
servere
Installere cache
anta at treffraten er 0.4
Konsekvenser
Internet
40% av forespørslene vil
besvares umiddelbart av
cache
60% av forespørslene
besvares av opprinnelsesserver
utnyttelse av aksesslink
reduseres til 60%, noe som
resulterer i neglisjerbare
forsinkelser (størrelse 10 ms)
gjennomsnittlig forsinkelse =
Internettforsinkelse +
aksessforsinkelse + LAN
forsinkelse = 0.6 * 2.01 s +
noen ms < 1.4 s
1.5 Mb/s
aksesslink
institusjonens
nettverk
Versjon 2.0 / 14.09.04
10 Mb/s LAN
institusjonell
cache
Kap 2: Applikasjonslaget
44
Kapittel 2 – hvor er vi?
2.1 Principles of app
layer protocols
2.2 Web and HTTP
2.3 FTP
2.4 Electronic Mail
SMTP, POP3, IMAP
2.5 DNS
2.6 Socket programming
with TCP
2.7 Socket programming
with UDP
2.8 Building a Web
server
2.9 Content distribution
Versjon 2.0 / 14.09.04
Network Web caching
Content distribution
networks
P2P file sharing
Kap 2: Applikasjonslaget
46
FTP: the file transfer protocol
bruker
FTP
brukergrensesnitt
FTP
klient
filoverføring
lokalt
filsystem
Versjon 2.0 / 14.09.04
FTP
server
fjerntliggende
filsystem
Kap 2: Applikasjonslaget
47
FTP: the file transfer protocol
TCP kontrollforbindelse
port 21
FTP
klient
TCP dataforbindelse
port 20
Versjon 2.0 / 14.09.04
FTP
server
Kap 2: Applikasjonslaget
48
FTP kommandoer og responser
Noen kommandoer:
Noen responser
USER username
331 Username OK,
PASS password
password required
125 data connection
already open;
transfer starting
425 Can’t open data
connection
452 Error writing
file
LIST returnerer liste av
filer i katalogen
RETR filename henter fil
til lokal maskin
STOR filename lagrer
(laster opp) fil på
fjernliggende maskin
Versjon 2.0 / 14.09.04
Kap 2: Applikasjonslaget
50
Kapittel 2 – hvor er vi?
2.1 Principles of
network applications
2.2 Web and HTTP
2.3 FTP
2.4 Electronic Mail
SMTP, POP3, IMAP
2.5 DNS
2.6 P2P file sharing
2.7 Socket programming
with TCP
2.8 Socket programming
with UDP
2.9 Building a Web
server
Versjon 2.0 / 14.09.04
Kap 2: Applikasjonslaget
51
Elektronisk post
utgående
meldingekø
brukerens postkasse
bruker
agent
Tre hovedkomponenter:
brukeragenter
mail
server
mail-servere
simple mail transfer
SMTP
protocol: SMTP
Brukeragent
SMTP
samme som “epost-leser”
SMTP
skrive og lese epostmail
meldinger
server
Eksempler: Eudora, Outlook,
pine, Netscape Messenger
bruker
agent
utgående og innkommende
bruker
meldinger lagres på server
bruker
agent
mail
server
bruker
agent
bruker
agent
agent
Versjon 2.0 / 14.09.04
Kap 2: Applikasjonslaget
52
Elektronisk post: SMTP [RFC 2821]
benytter TCP for pålitelig overføring av epost fra klient
til tjener, port 25
direkte overføring: fra avsenders mailserver til
mottakers mailserver
overføringens tre faser
hilsing (“handshaking”)
overføring av melding
nedkobling (closure)
kommando/respons interaksjon
kommandoer: ASCII tekst
respons: statuskode og -frase
meldinger må være 7-bits ASCII
Versjon 2.0 / 14.09.04
Kap 2: Applikasjonslaget
54
Scenario: Alice sender melding til Bob
1) Alice benytter UA for å
skrive melding og legger
adressen
[email protected] og
trykker “send”
2) Alices UA sender meldingen
til hennes mailserver;
melding legges i meldingskø
3) Klientsiden av SMTP åpner
en TCP-forbindelse til Bobs
mailserver
1
user
agent
2
mail
server
3
4) SMTP-klienten “hilser på”
SMTP-serveren og sender
deretter Alices melding
over TCP-forbindelsen
5) Bobs mailserver legger
meldingen i Bobs postkasse
(mailbox)
6) Bob bruker sin UA (epostprogram) for å lese
meldingen
mail
server
4
Versjon 2.0 / 14.09.04
5
6
user
agent
Kap 2: Applikasjonslaget
55
Meldingsformat: multimedia-utvidelser
MIME versjon
kodingsmetode
multimedia-data
type, subtype,
parameterdeklarering
kodede data
From: [email protected]
To: [email protected]
Subject: Fint bilde
MIME-Version: 1.0
Content-Transfer-Encoding: base64
Content-Type: image/jpeg
base64-kodede data .....
.........................
......base64-kodede data
Versjon 2.0 / 14.09.04
Kap 2: Applikasjonslaget
60
Multipart Type
From: [email protected]
To: [email protected]
Subject: Fint bilde
MIME-Version: 1.0
Content-Type: multipart/mixed; boundary=StartOfNextPart
--StartOfNextPart
Hei Christian!
Sjekk disse blomstene!
--StartOfNextPart
Content-Transfer-Encoding: base64
Content-Type: image/jpeg
base64-kodede data .....
.........................
......base64-kodede data
--StartOfNextPart
Fine å ha på kontoret?
Versjon 2.0 / 14.09.04
Kap 2: Applikasjonslaget
62
Epost aksessprotokoller
bruker
agent
SMTP
SMTP
senders
mailserver
aksess
protokoll: bruker
• POP3
agent
• IMAP
mottakers
mailserver
Versjon 2.0 / 14.09.04
Kap 2: Applikasjonslaget
63
POP3 protokoll
autorisasjonsfase
klient-kommandoer:
user: brukernavn
pass: passord
server-responser
+OK
-ERR
transaksjonsfase, klient:
list: liste meldinger
retr: hente meldinger
dele: slette
quit: avslutte
Versjon 2.0 / 14.09.04
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
Kap 2: Applikasjonslaget
on
64
POP3 og IMAP
Mer om POP3
Forrige eksempel
benyttet “download
and delete” modus.
Kan da ikke lese epost
på ny dersom man
bytter lokasjon/klient
“Download-and-keep”:
kopier av meldinger på
ulike klienter
POP3 er tilstandsløs
mellom sesjoner
IMAP
Beholder meldinger på
mail-serveren
Tillater brukeren å
organisere meldinger i
mapper
IMAP tar vare på
tilstand mellom
sesjoner:
Versjon 2.0 / 14.09.04
navn på mapper og
kobling mellom
meldings-ID og
mappenavn
Kap 2: Applikasjonslaget
65
Kapittel 2 – hvor er vi?
2.1 Principles of
network applications
2.2 Web and HTTP
2.3 FTP
2.4 Electronic Mail
SMTP, POP3, IMAP
2.5 DNS
2.6 P2P file sharing
2.7 Socket programming
with TCP
2.8 Socket programming
with UDP
2.9 Building a Web
server
Versjon 2.0 / 14.09.04
Kap 2: Applikasjonslaget
66
DNS
DNS tjenester
Maskinnavn til IPadresse oversetting
Host aliasing
Kanoniske og alias navn
Mail server aliasing
Lastdeling
Replikerte webservere:
sett av IP-adresser
tilhørende ett kanonisk
navn
Hvorfor ikke sentralisere
DNS?
“single point of failure”
trafikkvolum
stor avstand til
sentralisert database for
mange
vedlikehold
skalerer ikke!
Versjon 2.0 / 14.09.04
Kap 2: Applikasjonslaget
68
TLD og autoritative servere
Top-level domain (TLD) servere: ansvarlige
for com, org, net, edu osv., samt alle top-nivå
landdomener som uk, fr, ca og no
Norid er ansvarlig for no-domenet (www.norid.no)
Autoritative DNS-servere: en organisasjons
DNS-servere, gir autoritative maskinnavn til
IP mappinger for organisasjonens servere
(f.eks. web- og mail-server).
Kan vedlikeholdes av organisasjonen eller en
tjenestetilbyder (“service provider”)
Versjon 2.0 / 14.09.04
Kap 2: Applikasjonslaget
70
Lokal navnetjener
Ikke noe strengt hierarki
Hver ISP (ISP-firma, bedrift, universitet)
har en
kalles også “default navnetjener”
Når en maskin sender en DNS query,
sendes den til dens lokale navnetjener
(DNS server)
Fungerer som en proxy, videresender
forespørsel inn i hierarkiet
Versjon 2.0 / 14.09.04
Kap 2: Applikasjonslaget
71
Distribuert, hierarkisk database
Rot DNS-Servere
com DNS-servere
yahoo.com
amazon.com
DNS-servere DNS-servere
org DNS-servere
ietf.org
DNS-servere
edu DNS-servere
poly.edu
umass.edu
DNS-servereDNS-servere
Klient ønsker IP for www.amazon.com:
Klient spør en rot-tjener om DNS-server for
“com”
Klient spør “com” DNS-server om amazon.com sin
DNS-server
Klient spør amazon.com sin DNS-server om IPadressen til www.amazon.com
Versjon 2.0 / 14.09.04
Kap 2: Applikasjonslaget
72
DNS: Rot-navnetjener
a NSI Herndon, VA
c PSInet Herndon, VA
d U Maryland College Park, MD
g DISA Vienna, VA
h ARL Aberdeen, MD
k RIPE London
i NORDUnet Stockholm
j NSI (TBD) Herndon, VA
m WIDE Tokyo
e NASA Mt View, CA
f Internet Software C. Palo Alto,
CA
13 rot-navnetjenere i verden
b USC-ISI Marina del Rey, CA
l ICANN Marina del Rey, CA
Versjon 2.0 / 14.09.04
Kap 2: Applikasjonslaget
73
DNS - Domain Name System
RFC1034, RFC1035
Navnløs rot
Top Level
Domains
(TLD)
Second Level
Domains
ARPA
COM
INADDR
YAHOO
HIOF
36
PEOPLE
IT
136
NO
69
196
EDU
GOV
MIL
NET
ORG
Generiske domener
ARPA - spesielt domene for adresse-til-navn
mapping
Versjon 2.0 / 14.09.04
AE
NO
ZW
Landdomener
Kap 2: Applikasjonslaget
74
Eksempel
rot DNS-server
Maskin på
2
cis.poly.edu ønsker
IP-adressen til
gaia.cs.umass.edu
rekursiv forespørsel
(query):
3
7
6
TLD DNS-server
lokal DNS-server
dns.poly.edu
1
legger byrden med
5
4
8
navneoppslag på
kontaktet navnetjener
spørrende maskin
kan gi stor belastning
cis.poly.edu
autoritativ DNS-server
dns.cs.umass.edu
gaia.cs.umass.edu
Versjon 2.0 / 14.09.04
Kap 2: Applikasjonslaget
75
Iterativ forespørsel
rot DNS-server
2
iterativ forespørsel:
3
kontaktet navnetjener
svarer med adressen til
navnetjener som kan
kontaktes
TLD DNS-server
4
5
lokal DNS-server
dns.poly.edu
1
8
spørrende maskin
7
6
autoritativ DNS-server
dns.cs.umass.edu
cis.poly.edu
gaia.cs.umass.edu
Versjon 2.0 / 14.09.04
Kap 2: Applikasjonslaget
76
DNS: caching og recordoppdatering
når en navnetjener får kjennskap til en
“mapping”, vil den cache den
mappinger i cache vil fjernes etter en tid
TLD servere vil typisk caches i lokale
navnetjenere
• Trenger derfor sjelden å kontakte rotnavnetjenere
“update/notify” mekanismer designes nå av IETF
RFC 2136, RFC 3007
Versjon 2.0 / 14.09.04
Kap 2: Applikasjonslaget
77
DNS records
RR format: (navn,
Type=A
navn er maskinnavn
verdi er IP-adresse
verdi, type, ttl)
Type=CNAME
navn er alias-navn for et
“kanonisk” (et virkelig) navn
www.ibm.com is really
Type=NS
servereast.backup2.ibm.com
navn er domene (f eks
verdi er kanonisk navn
foo.com)
verdi er IP-adressen til Type=MX
autoritativ navnetjener
verdi er navn på mailfor dette domenet
serveren assosiert med navn
Versjon 2.0 / 14.09.04
Kap 2: Applikasjonslaget
78
DNS-meldinger
DNS protokollen : query (forespørsel) og reply (svar)
meldinger har samme meldingsformat
meldingsheader
identification: 16 bits id-
nummer for forespørsel,
svar på spørsmål
benytter samme nummer
flagg:
query (0) eller reply
(1)
rekursjon ønsket
rekursjon tilgjengelig
svar er autoritativt
Versjon 2.0 / 14.09.04
Kap 2: Applikasjonslaget
79
DNS-meldinger (forts)
Navn- og type-felt
for en query
RR som svar
på query
records for andre
autoritative tjenere
tilleggsinfo som
kan benyttes
Versjon 2.0 / 14.09.04
Kap 2: Applikasjonslaget
80
Innlegging av records i DNS
Eksempel: har laget “Network Utopia”
Registrerer navnet networkuptopia.com hos en
registrar (liste hos Internic (.com) eller Norid (.no))
Gir registraren navn og IP-adresser til dine autoritative
navnetjenere (primær og sekundær)
Registrar legger inn to RRs i com TLD-server:
(networkutopia.com, dns1.networkutopia.com, NS)
(dns1.networkutopia.com, 212.212.212.1, A)
Legger inn autoritativ server Type A record for
www.networkuptopia.com og Type MX record for
networkutopia.com
Versjon 2.0 / 14.09.04
Kap 2: Applikasjonslaget
81
Kapittel 2 – Hvor er vi?
2.1 Principles of
network applications
app architectures
app requirements
2.2 Web and HTTP
2.4 Electronic Mail
SMTP, POP3, IMAP
2.5 DNS
2.6 P2P file sharing
2.7 Socket programming
with TCP
2.8 Socket programming
with UDP
2.9 Building a Web
server
Versjon 2.0 / 14.09.04
Kap 2: Applikasjonslaget
82
P2P fildeling
Alice velger en av dem,
Eksempel
Alice kjører en P2P
klient applikasjon på
sin PC
Av og til knytter hun
seg til Internett; får
ny IP-adresse hver
gang
Spør etter “Beautiful”
Applikasjonen viser
andre peers som har
en kopi av Beautiful
Bob
Filen kopieres fra
Bobs PC til Alices PC
v.hj.a HTTP
Men Alice laster ned
sangen kan andre
brukere hente filer
fra Alice
Alices peer er både en
web-klient og en
midlertidig webserver
Alle peers er servere =
skalerer bra!
Versjon 2.0 / 14.09.04
Kap 2: Applikasjonslaget
83
P2P: sentralisert katalog
det originale “Napster”designet
1) når peer knytter seg
opp, informerer den en
sentral server om:
Bob
sentralisert
katalogserver
IP-adresse
innhold den vil dele
2) Alice spør serveren om
“Beautiful”
3) Alice ber Bob om å
overføre filen
Versjon 2.0 / 14.09.04
1
peers
1
3
1
2
1
Alice
Kap 2: Applikasjonslaget
84
P2P: problemer med sentralisert katalog
“Single point of failure”
Flaskehals for ytelsen
Problemer med
opphavsrett (copyright)
Filoverføringen er
desentralisert, men å
finne innhold er
sentralisert
Versjon 2.0 / 14.09.04
Kap 2: Applikasjonslaget
85
Query flooding: Gnutella
helt distribuert
ingen sentral server
offentlige (public
domain) protokoller
many Gnutella clients
implementing protocol
“overlay network”: graf
kant mellom peer X og
Y hvis det eksisterer
en TCP-forbindelse
alle aktive peers og
kanter utgjør “overlay
nettet”
Kant er ikke en fysisk
link
Hver peer vil typisk
være knyttet til
færre enn 10 naboer
Versjon 2.0 / 14.09.04
Kap 2: Applikasjonslaget
86
Gnutella: protokoll
Forespørsel sendes
over eksisterende
TCP-forbindelser
peers videresender
forespørsler
QueryHit
sendes over
tilbake
Query
samme vei
Filoverføring:
HTTP
Query
QueryHit
QueryHit
Skalerbarhet:
begrense rekkevidde på flooding
Versjon 2.0 / 14.09.04
Kap 2: Applikasjonslaget
87
Gnutella: Tilknytning av ny peer
1.
2.
3.
4.
5.
Når peer X ønsker å knytte seg til, må den finne
en annen peer i Gnutella nettet: bruker liste av
mulige peers
X forsøker å etablere TCP-forbindelse etter tur
med nodene på listen inntil den får kontakt med
en node, Y
X sender ”ping”-melding til Y; Y videresender den
Alle peers som mottar ”ping”-melding svarer med
en ”pong”-melding
X mottar mange ”pong”-meldinger og kan da sette
opp flere TCP-forbindelser
Versjon 2.0 / 14.09.04
Kap 2: Applikasjonslaget
88
Utnyttelse av heterogenitet:
KaZaA
Hver peer er enten en
gruppeleder eller
tilordnet et en
gruppeleder
TCP-forbindelse mellom
peer og dens gruppeleder
TCP-forbindelse mellom
noen gruppeledere
Gruppeleder har info om
innhold hos alle sine
“barn”
vanlig deltager (peer)
gruppeleder
naborelasjon i ”overlay”-nett
Versjon 2.0 / 14.09.04
Kap 2: Applikasjonslaget
89
KaZaA: Forespørsel
Hver fil har en “hash” og en deskriptor
Klient sender nøkkelord-forespørsel til sin
gruppeleder
Gruppeleder svarer med de treff den har
funnet:
For hvert treff: metadata, hash og IP-adresse
Hvis gruppeleder videresender forespørsel til
andre gruppeledere, vil de svare med sine
treff
Klient velger de filer den ønsker å laste ned
HTTP-forespørsel med hash som identifikator
sendes til de som har den ønskede filen
Versjon 2.0 / 14.09.04
Kap 2: Applikasjonslaget
90
KaZaA-teknikker
Begrensninger i samtidige opplastinger
Forespørselskø
Incentiv-prioriteringer
Parallell nedlasting
Versjon 2.0 / 14.09.04
Kap 2: Applikasjonslaget
91
Kapittel 2 – hvor er vi?
2.1 Principles of
network applications
2.2 Web and HTTP
2.3 FTP
2.4 Electronic Mail
SMTP, POP3, IMAP
2.5 DNS
2.6 P2P file sharing
2.7 Socket programming
with TCP
2.8 Socket programming
with UDP
2.9 Building a Web
server
Versjon 2.0 / 14.09.04
Kap 2: Applikasjonslaget
92
Socketprogrammering
Mål: lære hvordan man lager klient/tjenerapplikasjoner som kommuniserer via sockets
Socket API
introdusert i BSD4.1 UNIX,
1981
genereres, brukes og
fjernes av applikasjoner
klient/tjener paradigme
to typer transporttjenester via socket API:
upålitelig datagram
pålitelig, byte-strømorientert
Versjon 2.0 / 14.09.04
socket
et maskin-lokalt,
applikasjonsgenerert,
OS-kontrollert
grensesnitt (en “dør”) som
applikasjonsprosesser kan
sende og motta meldinger
gjennom, meldinger til
eller fra andre
applikasjonsprosesser
Kap 2: Applikasjonslaget
93
Socketprogrammering med TCP
Socket: en dør mellom applikasjonsprosess og endetil-ende protokoll (UCP eller TCP)
TCP tjeneste: pålitelig overføring av byte fra en
prosess til en annen
styrt av
applikasjonsutvikler
styrt av
operativsystemet
prosess
prosess
socket
TCP med
buffere,
variable
internett
socket
TCP med
buffere,
variable
styrt av
applikasjonsutvikler
styrt av
operativsystemet
maskin eller
tjener
maskin eller
tjener
Versjon 2.0 / 14.09.04
Kap 2: Applikasjonslaget
94
Oppretting av forbindelse
Versjon 2.0 / 14.09.04
Kap 2: Applikasjonslaget
96
Klient/tjener socket-interaksjon: TCP
Tjener (kjører på maskinen hostid)
Klient
generér socket,
port = x, for
innkommende forespørsel:
welcomeSocket =
ServerSocket()
TCP oppsetting
forbindelse
vent på innkommde
foresp. om forbindelse av
connectionSocket =
welcomeSocket.accept()
generér socket, etablér
forbindelse til hostid, port x
clientSocket =
Socket()
send foresp.
clientSocket
les foresp. fra
connectionSocket
skriv svar til
connectionSocket
les svar fra
clientSocket
lukk
connectionSocket
Versjon 2.0 / 14.09.04
lukk
clientSocket
Kap 2: Applikasjonslaget
99
Eksempel: Java-klient (TCP)
import java.io.*;
import java.net.*;
class TCPClient {
public static void main(String argv[]) throws Exception
{
String sentence;
String modifiedSentence;
Lag
input-strøm
Generér
klient-socket,
kontakt tjener
Lag output-strøm
forbundet med
socket
BufferedReader inFromUser =
new BufferedReader(new InputStreamReader(System.in));
Socket clientSocket = new Socket("hostname", 6789);
DataOutputStream outToServer =
new DataOutputStream(clientSocket.getOutputStream());
Versjon 2.0 / 14.09.04
Kap 2: Applikasjonslaget
100
Eksempel: Java-klient (TCP), forts.
Lag inputstrøm forbundet
med socket
BufferedReader inFromServer =
new BufferedReader(new
InputStreamReader(clientSocket.getInputStream()));
sentence = inFromUser.readLine();
Send linje
til tjener
outToServer.writeBytes(sentence + '\n');
Les linje
fra tjener
modifiedSentence = inFromServer.readLine();
System.out.println("FROM SERVER: " + modifiedSentence);
clientSocket.close();
}
}
Versjon 2.0 / 14.09.04
Kap 2: Applikasjonslaget
101
Eksempel: Java-server (TCP)
import java.io.*;
import java.net.*;
class TCPServer {
Generér
velkomst-socket
på port 6789
Vent ved velkomstsocket på å bli
kontaktet av klient
Lag inputstrøm 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()));
Versjon 2.0 / 14.09.04
Kap 2: Applikasjonslaget
103
Eksempel: Java-server (TCP), forts.
Lag outputstrøm knyttet
til socket
DataOutputStream outToClient =
new DataOutputStream(connectionSocket.getOutputStream());
Les inn linje
fra socket
clientSentence = inFromClient.readLine();
capitalizedSentence = clientSentence.toUpperCase() + '\n';
Skriv ut linje
til socket
outToClient.writeBytes(capitalizedSentence);
}
}
}
enden av while-løkke,
vent på neste kontakt
(fra annen klient)
Versjon 2.0 / 14.09.04
Kap 2: Applikasjonslaget
104
Kapittel 2 – hvor er vi?
2.1 Principles of
network applications
2.2 Web and HTTP
2.3 FTP
2.4 Electronic Mail
SMTP, POP3, IMAP
2.5 DNS
2.6 P2P file sharing
2.7 Socket programming
with TCP
2.8 Socket programming
with UDP
2.9 Building a Web
server
Versjon 2.0 / 14.09.04
Kap 2: Applikasjonslaget
105
Klient/tjener socket-interaksjon: UDP
Tjener (kjører på hostid)
generér socket,
port = x, for innkommende forespørsel:
serverSocket =
DatagramSocket()
Klient
generér socket
clientSocket =
DatagramSocket()
Lag datagram med data og adresse
(hostid, port=x) og send datagram
ved hjelp av clientSocket
les foresp. fra
serverSocket
skriv svar til
serverSocket
med angivelse av
klientens adresse og
portnummer
les svar fra
clientSocket
lukk
clientSocket
Versjon 2.0 / 14.09.04
Kap 2: Applikasjonslaget
107
Eksempel: Java-klient (UDP)
import java.io.*;
import java.net.*;
Lag
input-strøm
Generér
klient-socket
Oversett maskinnavn til IP-adresse
v.hj.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();
Versjon 2.0 / 14.09.04
Kap 2: Applikasjonslaget
108
Eksempel: Java-klient (UDP), forts.
Lag datagram med
data som skal
sendes, lengde,
IP-adr, port
Send datagram
til tjener
DatagramPacket sendPacket =
new DatagramPacket(sendData, sendData.length, IPAddress, 9876);
clientSocket.send(sendPacket);
DatagramPacket receivePacket =
new DatagramPacket(receiveData, receiveData.length);
Les datagram
fra tjener
clientSocket.receive(receivePacket);
String modifiedSentence =
new String(receivePacket.getData());
System.out.println("FROM SERVER:" + modifiedSentence);
clientSocket.close();
}
}
Versjon 2.0 / 14.09.04
Kap 2: Applikasjonslaget
109
Eksempel: Java-klient (UDP)
Klient
prosess
input
strøm
skjerm
inFromUser
tastatur
Input: mottar
pakke (TCP
mottok “byte
stream”)
UDP
pakke
receivePacket
pakke (TCP sendte
“byte stream”)
sendPacket
Output: sender
UDP
pakke
klient UDPsocket
til nettet
UDP
socket
fra nettet
Versjon 2.0 / 14.09.04
Kap 2: Applikasjonslaget
110
Eksempel: Java-tjener (UDP)
import java.io.*;
import java.net.*;
Generér
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)
{
Lag plass for
mottatt datagram
Motta
datagram
DatagramPacket receivePacket =
new DatagramPacket(receiveData, receiveData.length);
serverSocket.receive(receivePacket);
Versjon 2.0 / 14.09.04
Kap 2: Applikasjonslaget
111
Eksempel: Java-tjener (UDP), forts
String sentence = new String(receivePacket.getData());
Få IP-adr
og portnr fra
avsender
InetAddress IPAddress = receivePacket.getAddress();
int port = receivePacket.getPort();
String capitalizedSentence = sentence.toUpperCase();
sendData = capitalizedSentence.getBytes();
Lag datagram for
sending til klient
DatagramPacket sendPacket =
new DatagramPacket(sendData, sendData.length, IPAddress,
port);
Skriv ut
datagram
til socket
serverSocket.send(sendPacket);
}
}
}
Enden av while-løkke,
vent på neste datagram
Versjon 2.0 / 14.09.04
Kap 2: Applikasjonslaget
112
Kapittel 2 – Hvor er vi?
2.1 Principles of
network applications
app architectures
app requirements
2.2 Web and HTTP
2.4 Electronic Mail
SMTP, POP3, IMAP
2.5 DNS
2.6 P2P file sharing
2.7 Socket programming
with TCP
2.8 Socket programming
with UDP
2.9 Building a Web
server
Versjon 2.0 / 14.09.04
Kap 2: Applikasjonslaget
113
Kapittel 2: Oppsummering
Vårt studium av nettverksapplikasjoner er nå ferdig
Applikasjonsarkitekturer
klient-tjener
P2P
hybrid
tjenestekrav fra
på:
applikasjonene:
protokoller vi har sett
pålitelighet, båndbredde,
forsinkelse
HTTP
FTP
SMTP, POP, IMAP
DNS
socket programmering
Internetts transport-
tjenester
forbindelsesorientert,
pålitelig: TCP
upålitelig, datagram: UDP
Versjon 2.0 / 14.09.04
Kap 2: Applikasjonslaget
115
Kapittel 2: Oppsummering
Viktigste: lært om protokoller
typisk request/reply
meldingsutveksling:
klient ber om info eller
tjeneste
tjener (server) svarer
med data og/eller
statuskode
meldingsformater:
headere: felter med
info om data
data: info som skal
oversendes
kontroll- vs. datameldinger
in-band, out-of-band
sentralisert vs.
desentralisert
tilstandsløs vs.
tilstandsorientert
pålitelig vs. upålitelig
meldingsoverføring
“kompleksitet i kanten av
nettet”
Versjon 2.0 / 14.09.04
Kap 2: Applikasjonslaget
116