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