You are on page 1of 114

Chapter 2

Application Layer

A note on the use of these ppt slides:


Were making these slides freely available to all (faculty, students, readers). Computer Networking:
Theyre in PowerPoint form so you can add, modify, and delete slides
(including this one) and slide content to suit your needs. They obviously A Top Down Approach
represent a lot of work on our part. In return for use, we only ask the Featuring the Internet,
following:
If you use these slides (e.g., in a class) in substantially unaltered form,
that you mention their source (after all, wed like people to use our book!) 3rd edition.
Jim Kurose, Keith Ross
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. Addison-Wesley, July
Thanks and enjoy! JFK/KWR 2004.
All material copyright 1996-2004
J.F Kurose and K.W. Ross, All Rights Reserved
2: Application Layer 1
Chapter 2: Application layer
2.1 Principles of 2.6 P2P file sharing
network applications 2.7 Socket programming with
2.2 Web and HTTP TCP
2.3 FTP 2.8 Socket programming with
2.4 Electronic Mail
UDP
2.9 Building a Web server
SMTP, POP3, IMAP
2.5 DNS

2: Application Layer 2
Chapter 2: Application Layer
Our goals: learn about protocols by
conceptual, examining popular
implementation application-level
aspects of network protocols
application protocols HTTP
transport-layer FTP
service models SMTP / POP3 / IMAP
client-server
DNS
programming network
paradigm
applications
peer-to-peer
paradigm
socket API

2: Application Layer 3
Some network apps
E-mail Internet telephone
Web Real-time video conference
Instant messaging Massive parallel computing
Remote login
P2P file sharing
Multi-user network
games
Streaming stored
video clips

2: Application Layer 4
Creating a network app
Write programs that application
transport

run on different end


network
data link

systems and
physical

communicate over a
network.
e.g., Web: Web server
software communicates
with browser software
No software written for application

devices in network core


application transport
transport network
network data link
Network core devices do data link
physical
physical

not function at app layer


This design allows for
rapid app development
2: Application Layer 5
Chapter 2: Application layer
2.1 Principles of 2.6 P2P file sharing
network applications 2.7 Socket programming with
2.2 Web and HTTP TCP
2.3 FTP 2.8 Socket programming with
2.4 Electronic Mail
UDP
2.9 Building a Web server
SMTP, POP3, IMAP
2.5 DNS

2: Application Layer 6
Application architectures
Client-server
Peer-to-peer (P2P)
Hybrid of client-server and P2P

2: Application Layer 7
Client-server archicture
server:
always-on host
permanent IP address
server farms for scaling
clients:
communicate with
server
may be intermittently
connected
may have dynamic IP
addresses
do not communicate
directly with each other

2: Application Layer 8
Pure P2P architecture
no always on server
arbitrary end systems
directly communicate
peers are intermittently
connected and change IP
addresses

Highly scalable

But difficult to manage

2: Application Layer 9
Hybrid of client-server and P2P
Napster
File transfer P2P
File search centralized:
Peers register content at central server
Peers query same central server to locate content
Instant messaging
Chatting between two users is P2P
Presence detection/location centralized:
User registers its IP address with central server
when it comes online
User contacts central server to find IP addresses of
buddies

2: Application Layer 10
Processes communicating
Process: program running Client process: process that
within a host. initiates communication
within same host, two Server process: process that
processes communicate waits to be contacted
using inter-process
communication (defined
by OS).
processes in different Note: applications with
hosts communicate by P2P architectures have
exchanging messages client processes &
server processes

2: Application Layer 11
Sockets
host or host or
process sends/receives server server
messages to/from its
socket controlled by
app developer
socket analogous to door process process

sending process shoves socket socket


message out door TCP with TCP with
buffers, Internet buffers,
sending process relies on variables
variables
transport infrastructure
on other side of door which
brings message to socket controlled
by OS
at receiving process
API: (1) choice of transport protocol; (2) ability to fix
a few parameters (Max buffer size/segment size)
2: Application Layer 12
Transport service available to Apps
Reliable Data Transfer Throughput
(Data loss) (Bandwidth)
some apps (e.g., audio) can
some apps (e.g.,
tolerate some loss
multimedia) require
other apps (e.g., file
minimum amount of
transfer, telnet) require
100% reliable data bandwidth to be
transfer effective
Timing other apps (elastic
some apps (e.g., Internet apps) make use of
telephony, interactive whatever bandwidth
games) require low delay they get
to be effective

2: Application Layer 13
Transport service requirements of common apps

Application Data loss Bandwidth Time Sensitive

file transfer no loss elastic no


e-mail no loss elastic no
Web documents no loss elastic no
real-time audio/video loss-tolerant audio: 5kbps-1Mbps yes, 100s msec
video:10kbps-5Mbps
stored audio/video loss-tolerant same as above yes, few secs
interactive games loss-tolerant few kbps up yes, 100s msec
instant messaging no loss elastic yes and no

2: Application Layer 14
Internet transport protocols services

TCP service: UDP service:


connection-oriented: setup unreliable data transfer between
required between client and sending and receiving process
server processes does not provide: connection
setup, reliability, flow control,
reliable transport between
congestion control, timing, or
sending and receiving process
bandwidth guarantee
flow control: sender wont No timing guarantee
overwhelm receiver Q: why bother? Why is there a
congestion control: throttle UDP?
sender when network
overloaded
does not provide: Delay
guarantee, minimum
bandwidth guarantees
2: Application Layer 15
Internet apps: application, transport protocols

Application Underlying
Application layer protocol transport protocol

e-mail SMTP [RFC 2821] TCP


remote terminal access Telnet [RFC 854] TCP
Web HTTP [RFC 2616] TCP
file transfer FTP [RFC 959] TCP
streaming multimedia proprietary TCP or UDP
(e.g. RealNetworks)
Internet telephony proprietary
(e.g., Dialpad) typically UDP

2: Application Layer 16
Addressing processes
For a process to receive Identifier includes
messages, it must have an both the IP address
identifier and port numbers
A host has a unique32-bit IP associated with the
address process on the host.
Q: does the IP address of the Example port numbers:
host on which the process HTTP server: 80
runs suffice for identifying Mail server: 25
the process? www.iana.org
Answer: No, many processes
can be running on same
host

2: Application Layer 17
App-layer protocol defines
Types of messages Public-domain protocols:
exchanged, eg, request defined in RFCs
& response messages allows for interoperability
Syntax of message eg, HTTP, SMTP
types: what fields in Proprietary protocols:
messages & how fields eg, KaZaA
are delineated
Semantics of the
fields, ie, meaning of
information in fields
Rules for when and
how processes send &
respond to messages 2: Application Layer 18
Chapter 2: Application layer
2.1 Principles of 2.6 P2P file sharing
network applications 2.7 Socket programming with
app architectures TCP
app requirements 2.8 Socket programming with
2.2 Web and HTTP UDP
2.4 Electronic Mail 2.9 Building a Web server
SMTP, POP3, IMAP

2.5 DNS

2: Application Layer 19
Web and HTTP
History
On demand, Publishing
First some jargon
Web page consists of objects
Object can be HTML file, JPEG image, Java
applet, audio file,
Web page consists of base HTML-file which
includes several referenced objects
Each object is addressable by a URL
Example URL:
path name
host name
www.someschool.edu/someDept/pic.gif
2: Application Layer 20
HTTP overview

HTTP: hypertext
transfer protocol HT
TP
r
equ
Webs application layer PC running HT est
TP
protocol Explorer res
pon
se
client/server model
client: browser that
st
requests, receives, q ue
e
TPr on se Server
displays Web objects HT r es
p running
TP Apache Web
server: Web server HT
server
sends objects in
response to requests
Mac running
HTTP 1.0: RFC 1945 Navigator
HTTP 1.1: RFC 2616

2: Application Layer 21
HTTP overview (continued)
Uses TCP: HTTP is stateless
client initiates TCP server maintains no
connection (creates socket) information about past
to server, port 80 client requests
server accepts TCP
connection from client aside
Protocols that maintain
HTTP messages (application-
state are complex!
layer protocol messages) past history (state) must
exchanged between browser
be maintained
(HTTP client) and Web
if server/client crashes,
server (HTTP server)
their views of state may
TCP connection closed
be inconsistent, must be
reconciled

2: Application Layer 22
HTTP connections
C&S commu- extended time Nonpersistent HTTP
At most one object is sent over a
Client making a series of
TCP connection.
requests
HTTP/1.0 uses nonpersistent
Server- responding to each HTTP
request Persistent HTTP
Designer- should Multiple objects can be sent over
request /response sent single TCP connection between
over client and server.
Separate connection? HTTP/1.1 uses persistent
connections in default mode

2: Application Layer 23
Nonpersistent HTTP
(contains text,
Suppose user enters URL references to 10
www.someSchool.edu/someDepartment/home.index jpeg images)

1a. HTTP client initiates TCP


connection to HTTP server (process)
at www.someSchool.edu on port
1b. HTTP server at host
www.someSchool.edu waiting
80
for TCP connection at port 80.
accepts connection,
notifying client
2. HTTP client sends HTTP
request message (containing
URL) into TCP connection 3. HTTP server receives request
socket. Message indicates message, forms response
that client wants object message containing requested
someDepartment/home.index object, and sends message
into its socket

time
2: Application Layer 24
Nonpersistent HTTP (cont.)

4. HTTP server closes TCP


connection.
5. HTTP client receives response
message containing html file,
displays html. Parsing html file,
finds references to 10 jpeg objects

time 6. Steps 1-5 repeated for each


of 10 jpeg objects

Browser receives and displays web page -- Differently


HTTP Only defines the communication protocol
between C& S
2: Application Layer 25
Response time modeling
Definition of RTT: time to
send a small packet to
travel from client to
server and back. initiate TCP
connection
All Delays, 3 way Handshake RTT
Response time: request
file
one RTT to initiate TCP time to
RTT
connection transmit
file
one RTT for HTTP request file
received
and first few bytes of
HTTP response to return time time
file transmission time
total = 2RTT+transmit time
2: Application Layer 26
Persistent HTTP

Nonpersistent HTTP issues: Persistent without pipelining:


requires 2 RTTs per object client issues new request only
OS must work and allocate when previous response has
host resources for each TCP been received
connection one RTT for each referenced object
Persistent with pipelining:
but browsers often open
default in HTTP/1.1
parallel TCP connections to
client sends requests as soon as it
fetch referenced objects
encounters a referenced object
Persistent HTTP as little as one RTT for all the
server leaves connection referenced objects
open after sending response
subsequent HTTP messages
between same client/server
are sent over connection

2: Application Layer 27
HTTP request message

two types of HTTP messages: request, response


HTTP request message:
ASCII (human-readable format)

request line
(GET, POST, GET /somedir/page.html HTTP/1.1
HEAD commands) Host: www.someschool.edu
User-agent: Mozilla/4.0
header Connection: close
lines Accept-language:fr

Carriage return,
(extra carriage return, line feed)
line feed
indicates end
of message
2: Application Layer 28
HTTP request message: general format

2: Application Layer 29
Uploading form input
Post method:
Web page often
includes form input URL method:
Input is uploaded to Uses GET method
server in entity body Input is uploaded in URL
field of request line:

www.somesite.com/animalsearch?monkeys&banana

2: Application Layer 30
Method types
HTTP/1.0 HTTP/1.1
GET GET, POST, HEAD
POST PUT
uploads file in entity
HEAD
body to path specified
asks server to leave in URL field
requested object out of DELETE
response
deletes file specified in
the URL field

2: Application Layer 31
HTTP response message
status line
(protocol
status code HTTP/1.1 200 OK
status phrase) Connection close
Date: Thu, 06 Aug 2016 12:00:15 GMT
header Server: Apache/1.3.0 (Unix)
lines Last-Modified: Mon, 22 Jun 2015 ...
Content-Length: 6821
Content-Type: text/html

data, e.g., data data data data data ...


requested
HTML file

2: Application Layer 32
HTTP response status codes
In first line in server->client response message.
A few sample codes:
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: Application Layer 33
Trying out HTTP (client side) for yourself

1. Telnet to your favorite Web server:


telnet cis.poly.edu 80 Opens TCP connection to port 80
(default HTTP server port) at cis.poly.edu.
Anything typed in sent
to port 80 at cis.poly.edu

2. Type in a GET HTTP request:


GET /~ross/ HTTP/1.1 By typing this in (hit carriage
Host: cis.poly.edu return twice), you send
this minimal (but complete)
GET request to HTTP server

3. Look at response message sent by HTTP server!

2: Application Layer 34
User-server state:cookies(RFC 2965)
Many major Web sites Example:
use cookies Susan access Internet
Four components: always from same PC
She visits a specific e-
1) cookie header line in
commerce site for first
the HTTP response
time
message
When initial HTTP
2) cookie header line in
requests arrives at site,
HTTP request message
site creates a unique ID
3) cookie file kept on and creates an entry in
users host and managed backend database for
by users browser ID
4) back-end database at
Web site

2: Application Layer 35
Cookies: keeping state (cont.)
client server
Cookie file usual http request msg server n e
da try i
t ab n b
usual http response + creates ID as ac
e ke
ebay: 8734 Set-cookie: 1678 1678 for user nd

Cookie file
usual http request msg
amazon: 1678 cookie: 1678 cookie- ss
ebay: 8734 specific acce
usual http response msg action

s
one week later:

s
ce
ac
usual http request msg
Cookie file cookie-
cookie: 1678
amazon: 1678 spectific
ebay: 8734 usual http response msg action

2: Application Layer 36
Cookies (continued)
aside
What cookies can bring: Cookies and privacy:
authorization cookies permit sites to
shopping carts learn a lot about you
recommendations you may supply name
and e-mail to sites
user session state
search engines use
(Web e-mail)
redirection & cookies
to learn yet more
advertising companies
obtain info across
sites

2: Application Layer 37
Web caches (proxy server)
Goal: satisfy client request without involving origin server

user sets browser: Web origin


accesses via cache server

browser sends all HTTP Proxy


HT
requests to cache TP
req server qu est
H u P re
T
client TP est T T n se
object in cache: cache H p o
res
pon P res
returns object se H TT
else cache requests est
u
object from origin P req nse
T po
server, then returns HT r es
T TP
object to client H

client
origin
server

2: Application Layer 38
More about Web caching
Cache acts as both client Why Web caching?
and server Reduce response time for client
Typically cache is installed request.
by ISP (university, Reduce traffic on an institutions
company, residential ISP) access link, Up gradation to
higher link can be postponed
Internet dense with caches enables
poor content providers to
effectively deliver content, thus
reducing web traffic in Internet
as whole

2: Application Layer 39
Caching example
origin
Assumptions
servers
average object size =
100,0000 bits public
Internet
avg. request rate from
institutions browsers to
origin servers = 15/sec
delay from institutional router 15 Mbps
access link
to any origin server and back
to router = 2 sec institutional
network
Consequences 100 Mbps LAN
utilization on LAN = 15%
utilization on access link = 100%
total delay = Internet delay + institutional
access delay + LAN delay cache
= 2 sec + minutes + milliseconds
2: Application Layer 40
Caching example (cont)
origin
Possible solution
servers
increase bandwidth of access
link to, say, 100 Mbps public
Internet
Consequences
utilization on LAN = 15%
utilization on access link = 15%
Total delay = Internet delay + 15 Mbps
access link
access delay + LAN delay
= 2 sec + msecs + msecs institutional
network
often a costly upgrade 100 Mbps LAN

institutional
cache

2: Application Layer 41
Caching example (cont)
origin
servers
Install cache
suppose hit rate is .4 public
Consequence Internet
40% requests will be
satisfied almost immediately
60% requests satisfied by
15 Mbps
origin server
access link
utilization of access link
reduced to 60%, resulting in institutional
negligible delays (say 10 network
100 Mbps LAN
msec)
total avg delay = Internet
delay + access delay + LAN
delay = .4*.01+ .6*(2.01)
secs + milliseconds < 1.4 institutional
secs cache

2: Application Layer 42
Conditional GET

Goal: dont send object if cache server


cache has up-to-date cached HTTP request msg
version If-modified-since:
object
cache: specify date of <date>
not
cached copy in HTTP request modified
HTTP response
If-modified-since:
HTTP/1.0
<date> 304 Not Modified
server: response contains no
object if cached copy is up-
to-date: HTTP request msg
If-modified-since:
HTTP/1.0 304 Not <date> object
Modified modified
HTTP response
HTTP/1.0 200 OK
<data>
2: Application Layer 43
Chapter 2: Application layer
2.1 Principles of 2.6 P2P file sharing
network applications 2.7 Socket programming with
2.2 Web and HTTP TCP
2.3 FTP 2.8 Socket programming with
2.4 Electronic Mail
UDP
2.9 Building a Web server
SMTP, POP3, IMAP
2.5 DNS

2: Application Layer 44
FTP: the file transfer protocol

FTP file transfer


FTP FTP
user client server
interface
user
at host local file remote file
system system

transfer file to/from remote host


client/server model
client: side that initiates transfer (either to/from remote)
server: remote host
HTTP and FTP (2 Parallel connx)
ftp: RFC 959
ftp server: port 21

2: Application Layer 45
FTP: separate control, data connections
TCP control connection
FTP client contacts FTP port 21
server at port 21, specifying
TCP as transport protocol
TCP data connection
Client obtains authorization FTP port 20 FTP
over control connection client server
Client browses remote
Server opens a second TCP
directory by sending
commands over control data connection to transfer
connection. another file.
Control connection: out of
When server receives a
command for a file transfer, band
the server opens a TCP data FTP server maintains state:
connection to client current directory, earlier
After transferring one file, authentication
server closes connection.
2: Application Layer 46
FTP commands, responses

Sample commands: Sample return codes


sent as ASCII text over status code and phrase (as in
control channel HTTP)
USER username 331 Username OK,
PASS password
password required
125 data connection
LIST return list of file in already open;
current directory transfer starting
RETR filename retrieves 425 Cant open data
(gets) file connection
452 Error writing file
STOR filename stores
(puts) file onto remote
host

2: Application Layer 47
Chapter 2: Application layer
2.1 Principles of 2.6 P2P file sharing
network applications 2.7 Socket programming with
2.2 Web and HTTP TCP
2.3 FTP 2.8 Socket programming with
2.4 Electronic Mail
UDP
2.9 Building a Web server
SMTP, POP3, IMAP
2.5 DNS

2: Application Layer 48
Electronic Mail outgoing
message queue
user mailbox
user
Three major components: agent
user agents mail
user
mail servers server
agent
simple mail transfer SMTP mail
protocol: SMTP server user
User Agent SMTP agent

a.k.a. mail reader


SMTP
composing, editing, reading mail user
agent
mail messages server
e.g., Eudora, Outlook, elm,
user
Netscape Messenger agent
outgoing, incoming messages user
stored on server agent

2: Application Layer 49
Electronic Mail: mail servers
user
Mail Servers agent
mailbox contains incoming
mail
user
messages for user server
agent
message queue of outgoing
(to be sent) mail messages
SMTP mail
server user
SMTP protocol between mail
servers to send email SMTP agent

messages
SMTP
client: sending mail user
mail
server server agent

server: receiving mail


user
server agent
user
agent

2: Application Layer 50
Electronic Mail: SMTP [RFC 5321/2821]
uses TCP to reliably transfer email message from client
to server, port 25
direct transfer: sending server to receiving server
three phases of transfer
handshaking (greeting)
transfer of messages
closure
command/response interaction
commands: ASCII text
response: status code and phrase

messages must be in 7-bit ASCII

2: Application Layer 51
Scenario: Alisha sends message to
Bob
1) Alisha uses UA to compose 4) SMTP client sends Alishas
message and to message over the TCP
bob@someschool.edu connection
2) Alishas UA sends message 5) Bobs mail server places the
to her mail server; message message in Bobs mailbox
placed in message queue 6) Bob invokes his user agent to
read message
3) Client side of SMTP opens
TCP connection with Bobs
mail server

1 mail
mail
server user
user server
2 agent
agent 3 6
4 5

2: Application Layer 52
Sample SMTP interaction
S: 220 hamburger.edu
C: HELO crepes.fr
S: 250 Hello crepes.fr, pleased to meet you
C: MAIL FROM: <Alisha@crepes.fr>
S: 250 Alisha@crepes.fr... Sender ok
C: RCPT TO: <bob@hamburger.edu>
S: 250 bob@hamburger.edu ... Recipient ok
C: DATA
S: 354 Enter mail, end with "." on a line by itself
C: Do you like ketchup?
C: How about pickles?
C: .
S: 250 Message accepted for delivery
C: QUIT
S: 221 hamburger.edu closing connection

2: Application Layer 53
Try SMTP interaction for yourself:

telnet servername 25
see 220 reply from server
enter HELO, MAIL FROM, RCPT TO, DATA, QUIT
commands
above lets you send email without using email client
(reader)

2: Application Layer 54
SMTP: final words
SMTP uses persistent Comparison with HTTP:
connections
HTTP: pull
SMTP requires message
SMTP: push
(header & body) to be in 7-
bit ASCII both have ASCII
SMTP server uses command/response interaction,
CRLF.CRLF to determine status codes
end of message HTTP: each object encapsulated in
its own response msg
SMTP: multiple objects sent in
multipart msg

2: Application Layer 55
Mail message format

SMTP: protocol for


exchanging email msgs header
blank
RFC 822: standard for text
line
message format:
header lines, e.g.,
To:
body

From:
Subject:

different from SMTP


commands!
body
the message, ASCII
characters only

2: Application Layer 56
Message format: multimedia extensions
MIME: Multipurpose Internet Mail Extensions multimedia mail
extension, RFC 2045, 2056
additional lines in msg header declare MIME content type

From: Alisha@crepes.fr
MIME version To: bob@hamburger.edu
Subject: Picture of yummy crepe.
method used MIME-Version: 1.0
to encode data Content-Transfer-Encoding: base64
Content-Type: image/jpeg
multimedia data
type, subtype, base64 encoded data .....
parameter declaration .........................
......base64 encoded data
encoded data

2: Application Layer 57
Mail access protocols
SMTP SMTP access user
user
agent protocol agent

senders mail receivers mail


server server
SMTP: delivery/storage to receivers server
Mail access protocol: retrieval from server
POP: Post Office Protocol [RFC 1939]
authorization (agent <-->server) and download
IMAP: Internet Mail Access Protocol [RFC 1730]
more features (more complex)
manipulation of stored msgs on server
HTTP: Hotmail , Yahoo! Mail, etc.

2: Application Layer 58
POP3 protocol,
RFC1939 S:
C:
+OK POP3 server ready
user bob
authorization phase S: +OK
C: pass hungry
client commands:
S: +OK user successfully logged on
user: declare username
C: list
pass: password
S: 1 498
server responses S: 2 912
+OK S: .
C: retr 1
-ERR
S: <message 1 contents>
transaction phase, client: S: .
list: list message numbers C: dele 1
C: retr 2
retr: retrieve message by S: <message 1 contents>
number S: .
dele: delete C: dele 2
quit C: quit
S: +OK POP3 server signing off
2: Application Layer 59
POP3 (more) and IMAP
More about POP3 IMAP
Previous example uses Keep all messages in one place:
download and delete the server
mode. Allows user to organize messages
Bob cannot re-read e- in folders
mail if he changes Obtain component of message
client IMAP keeps user state across
Download-and-keep: sessions:
names of folders and
copies of messages on
mappings between message
different clients IDs and folder name
POP3 is stateless
across sessions

2: Application Layer 60
Web based email
User agent
Web browser

User communicates
with mailbox through
HTTP
Email is sent through
HTTP

2: Application Layer 61
Chapter 2: Application layer
2.1 Principles of 2.6 P2P file sharing
network applications 2.7 Socket programming with
2.2 Web and HTTP TCP
2.3 FTP 2.8 Socket programming with
2.4 Electronic Mail
UDP
2.9 Building a Web server
SMTP, POP3, IMAP
2.5 DNS

2: Application Layer 62
DNS: Domain Name System

People: many identifiers: Domain Name System:


SSN, name, passport # distributed database implemented in
hierarchy of many name servers
Internet hosts, routers: application-layer protocol host,
name, e.g., routers, name servers to
ww.yahoo.com - used by communicate to resolve names
humans (address/name translation)
IP address (32 bit) - note: core Internet
used for addressing function, implemented as
datagrams application-layer protocol
Q: map between IP UDP , port 53

addresses and name ? Example www.gehu.ac.in


complexity at networks
edge
2: Application Layer 63
DNS
DNS services Why not centralize DNS?
Hostname to IP single point of failure
address translation traffic volume
distant centralized database
Host aliasing
maintenance
Canonical and alias
names
Mail server aliasing
doesnt scale!
Load distribution
Replicated Web
servers: set of IP
addresses for one
canonical name

2: Application Layer 64
Distributed, Hierarchical Database
Root DNS Servers

com DNS servers org DNS servers edu DNS servers

pbs.org poly.edu umass.edu


yahoo.com amazon.com
DNS servers DNS serversDNS servers
DNS servers DNS servers

Client wants IP for www.amazon.com; 1st approx:


Client queries a root server to find com DNS server
Client queries com DNS server to get amazon.com DNS
server
Client queries amazon.com DNS server to get IP address for
www.amazon.com

2: Application Layer 65
DNS: Root name servers
contacted by local name server that can not resolve name
root name server:
contacts authoritative name server if name mapping not known
gets mapping
returns mapping to local name server
a Verisign, Dulles, VA
c Cogent, Herndon, VA (also Los Angeles)
d U Maryland College Park, MD
k RIPE London (also Amsterdam,
g US DoD Vienna, VA
Frankfurt) Stockholm (plus 3
i Autonomica,
h ARL Aberdeen, MD
j Verisign, ( 11 locations) other locations)

m WIDE Tokyo
e NASA Mt View, CA
f Internet Software C. Palo Alto,
CA (and 17 other locations)

13 root name
servers worldwide
b USC-ISI Marina del Rey, CA
l ICANN Los Angeles, CA

2: Application Layer 66
TLD and Authoritative Servers
Top-level domain (TLD) servers: responsible
for com, org, net, edu, etc, and all top-level
country domains uk, fr, ca, jp.
Network solutions maintains servers for com TLD
Educause for edu TLD
Authoritative DNS servers: organizations
DNS servers, providing authoritative
hostname to IP mappings for organizations
servers (e.g., Web and mail).
Can be maintained by organization or service
provider

2: Application Layer 67
Local Name Server
Does not strictly belong to hierarchy
Each ISP (residential ISP, company,
university) has one.
Also called default name server
When a host makes a DNS query, query is
sent to its local DNS server
Acts as a proxy, forwards query into hierarchy.

2: Application Layer 68
Example root DNS server

2
Host at cis.poly.edu 3
TLD DNS server
wants IP address for 4
gaia.cs.umass.edu
5

local DNS server


dns.poly.edu
iterated query: 6
7
contacted server 1 8

replies with name of authoritative DNS server


server to contact dns.cs.umass.edu
requesting host
I dont know this cis.poly.edu
name, but ask this
server
gaia.cs.umass.edu

2: Application Layer 69
Recursive queries root DNS server

recursive query:
puts burden of name 2 3
resolution on 6
7
contacted name
TLD DNS serve
server
heavy load?
local DNS server
dns.poly.edu 5 4

1 8

authoritative DNS server


dns.cs.umass.edu
requesting host
cis.poly.edu

gaia.cs.umass.edu
2: Application Layer 70
DNS: caching and updating records
once (any) name server learns mapping, it caches
mapping
cache entries timeout (disappear) after some
time
TLD servers typically cached in local name
servers
Thus root name servers not often visited
update/notify mechanisms under design by IETF
RFC 2136
http://www.ietf.org/html.charters/dnsind-charter.html

2: Application Layer 71
DNS records
DNS: distributed db storing resource records (RR)
RR format: (name, value, type, ttl)

Type=A Type=CNAME
name is hostname name is alias name for some
value is IP address cannonical (the real) name
www.ibm.com is really
Type=NS servereast.backup2.ibm.com
name is domain (e.g. value is cannonical name
foo.com)
value is IP address of Type=MX
authoritative name
value is name of mailserver
server for this domain
associated with name

2: Application Layer 72
DNS protocol, messages
DNS protocol : query and reply messages, both with
same message format

msg header
identification: 16 bit #
for query, reply to query
uses same #
flags:
query or reply
recursion desired
recursion available
reply is authoritative

2: Application Layer 73
DNS protocol, messages

Name, type fields


for a query

RRs in reponse
to query

records for
authoritative servers

additional helpful
info that may be used

Try -nslookup

2: Application Layer 74
Inserting records into DNS
Example: just created startup Network Utopia
Register name networkuptopia.com at a registrar
(e.g., Network Solutions, ICANN, www.internic.net)
Need to provide registrar with names and IP addresses of
your authoritative name server (primary and secondary)
Registrar inserts two RRs into the com TLD server:

(networkutopia.com, dns1.networkutopia.com, NS)


(dns1.networkutopia.com, 212.212.212.1, A)

Put in authoritative server Type A record for


www.networkuptopia.com and Type MX record for
networkutopia.com
How do people get the IP address of your Web site?

2: Application Layer 75
Chapter 2: Application layer
2.1 Principles of 2.6 P2P file sharing
network applications 2.7 Socket programming with
app architectures TCP
app requirements 2.8 Socket programming with
2.2 Web and HTTP UDP
2.4 Electronic Mail 2.9 Building a Web server
SMTP, POP3, IMAP

2.5 DNS

2: Application Layer 76
P2P file sharing
Alisha chooses one of the
Example peers, Bob.
Alisha runs P2P client
File is copied from Bobs PC
to Alishas notebook:
application on her
HTTP
notebook computer
While Alisha downloads,
Intermittently
other users uploading
connects to Internet; from Alisha.
gets new IP address Alishas peer is both a Web
for each connection client and a transient Web
Asks for Hey Jude server.
Application displays All peers are servers = highly
other peers that have scalable!
copy of Hey Jude.
2: Application Layer 77
P2P: centralized directory
Bob
original Napster design centralized
1) when peer connects, it directory server
1
informs central server: peers
IP address 1

content
1 3
2) Alisha queries for Hey
Jude 2 1

3) Alisha requests file


from Bob

Alisha

2: Application Layer 78
P2P: problems with centralized directory

Single point of failure file transfer is


Performance decentralized, but
bottleneck locating content is
Copyright highly centralized
infringement

2: Application Layer 79
BitTorrent

2: Application Layer 80
Query flooding: Gnutella
fully distributed overlay network: graph
no central server edge between peer X and Y if
public domain protocol theres a TCP connection
many Gnutella clients all active peers and edges is
implementing protocol overlay net
Edge is not a physical link
Given peer will typically be
connected with < 10
overlay neighbors

2: Application Layer 81
Gnutella: protocol
File transfer:
Query message
HTTP
sent over existing TCP
connections
Query
peers forward
QueryHit
Query message
QueryHit ery Qu
ery
Qu Hit
sent over ery
Qu
reverse
Query
path
QueryHit

Scalability: Qu
er
y
limited scope
flooding
2: Application Layer 82
Gnutella: Peer joining
1. Joining peer X must find some other peer in
Gnutella network: use list of candidate peers
2. X sequentially attempts to make TCP with peers
on list until connection setup with Y
3. X sends Ping message to Y; Y forwards Ping
message.
4. All peers receiving Ping message respond with
Pong message
5. X receives many Pong messages. It can then
setup additional TCP connections
Peer leaving: see homework problem!

2: Application Layer 83
Exploiting heterogeneity: KaZaA

Each peer is either a


group leader or assigned
to a group leader.
TCP connection between
peer and its group leader.
TCP connections between
some pairs of group
leaders.
Group leader tracks the
content in all its o rd in a ry p e e r

children. g r o u p - le a d e r p e e r

n e ig h o r in g r e la tio n s h ip s
in o v e r la y n e tw o r k

2: Application Layer 84
KaZaA: Querying
Each file has a hash and a descriptor
Client sends keyword query to its group
leader
Group leader responds with matches:
For each match: metadata, hash, IP address
If group leader forwards query to other
group leaders, they respond with matches
Client then selects files for downloading
HTTP requests using hash as identifier sent to
peers holding desired file

2: Application Layer 85
Kazaa tricks
Limitations on simultaneous uploads
Request queuing
Incentive priorities
Parallel downloading

2: Application Layer 86
Chapter 2: Application layer
2.1 Principles of 2.6 P2P file sharing
network applications 2.7 Socket programming with
2.2 Web and HTTP TCP
2.3 FTP 2.8 Socket programming with
2.4 Electronic Mail
UDP
2.9 Building a Web server
SMTP, POP3, IMAP
2.5 DNS

2: Application Layer 87
Socket programming
Network applications
Pair of Program - C/S
Processes and Communicate thru
Sockets
Two types of Net App
RFC based, Propriety

2: Application Layer 88
Socket programming
Goal: learn how to build client/server application that
communicate using sockets

Socket API socket


introduced in BSD4.1 UNIX,
a host-local,
1981 application-created,
explicitly created, used, OS-controlled interface
released by apps (a door) into which
client/server paradigm application process can
two types of transport both send and
service via socket API: receive messages to/from
unreliable datagram another application
reliable, byte stream-
process
oriented

2: Application Layer 89
Socket-programming using TCP
Socket: a door between application process and end-
end-transport protocol (UCP or TCP)
TCP service: reliable transfer of bytes from one
process to another

controlled by
controlled by process application
application process
developer
developer socket socket
TCP with TCP with controlled by
controlled by
buffers, operating
operating buffers, internet system
system variables variables

host or host or
server server

2: Application Layer 90
Socket programming with TCP
Client must contact server When contacted by client, server
server process must first TCP creates new socket for
be running server process to communicate
server must have created with client
socket (door) that allows server to talk with
welcomes clients contact multiple clients
source port numbers
Client contacts server by:
creating client-local TCP
used to distinguish
clients
socket
(draw figure)
specifying IP address, port
application viewpoint
number of server process
When client creates TCP provides reliable, in-order
socket: client TCP transfer of bytes (pipe)
establishes connection to between client and server
server TCP . 3 Way
Handshake 2: Application Layer 91
Stream jargon
A stream is a sequence of
characters that flow into
or out of a process.
An input stream is
attached to some input
source for the process, eg,
keyboard or socket.
An output stream is
attached to an output
source, eg, monitor or
socket.

2: Application Layer 92
Socket programming with TCP
keyboard monitor

Example client-server app:


1) client reads line from
standard input (inFromUser

inFromUser
input
stream
stream) , sends to server via Client
socket (outToServer Process
process
stream)
2) server reads line from socket
3) server converts line to
uppercase, sends back to

inFromServer
outToServer
client
output input
stream stream

4) client reads, prints modified


line from socket client
clientSocket
TCP
(inFromServer stream) socket TCP
socket

to network from network

2: Application Layer 93
Client/server socket interaction: TCP
Server (running on hostid) Client
create socket,
port=x, for
incoming request:
welcomeSocket =
ServerSocket()

TCP create socket,


wait for incoming
connection request connection setup connect to hostid, port=x
connectionSocket = clientSocket =
welcomeSocket.accept() Socket()

send request using


read request from clientSocket
connectionSocket

write reply to
connectionSocket read reply from
clientSocket
close
connectionSocket close
clientSocket
2: Application Layer 94
Example: Java client (TCP)
import java.io.*; Java Package, contains classes
import java.net.*; to create streams, other for net supp
class TCPClient { defines variables,methods

public static void main(String argv[]) throws Exception


{
String sentence; Objects of type
String modifiedSentence;
Create
input stream BufferedReader inFromUser =
new BufferedReader(new InputStreamReader(System.in));
Create
client socket, Socket clientSocket = new Socket("hostname", 6789);
connect to server
Create DataOutputStream outToServer =
output stream new DataOutputStream(clientSocket.getOutputStream());
attached to socket
2: Application Layer 95
Example: Java client (TCP), cont.

Create BufferedReader inFromServer =


input stream new BufferedReader(new
attached to socket InputStreamReader(clientSocket.getInputStream()));

sentence = inFromUser.readLine();
Send line
to server outToServer.writeBytes(sentence + '\n');

Read line modifiedSentence = inFromServer.readLine();


from server
System.out.println("FROM SERVER: " + modifiedSentence);

clientSocket.close();

}
}
2: Application Layer 96
Example: Java server (TCP)
import java.io.*;
import java.net.*;

class TCPServer {

public static void main(String argv[]) throws Exception


{
String clientSentence;
Create String capitalizedSentence;
welcoming socket
ServerSocket welcomeSocket = new ServerSocket(6789);
at port 6789
while(true) {
Wait, on welcoming
socket for contact Socket connectionSocket = welcomeSocket.accept();
by client
BufferedReader inFromClient =
Create input new BufferedReader(new
stream, attached InputStreamReader(connectionSocket.getInputStream()));
to socket

2: Application Layer 97
Example: Java server (TCP), cont

Create output
stream, attached DataOutputStream outToClient =
to socket new DataOutputStream(connectionSocket.getOutputStream());
Read in line
from socket clientSentence = inFromClient.readLine();

capitalizedSentence = clientSentence.toUpperCase() + '\n';


Write out line
outToClient.writeBytes(capitalizedSentence);
to socket
}
}
} End of while loop,
loop back and wait for
another client connection

2: Application Layer 98
Transport Service Primitives

The primitives for a simple transport service.


Berkeley Sockets
The socket primitives for TCP.
SP Ex: IFS

6-6-1

Client code using


sockets.
Server code using
sockets.
Chapter 2: Application layer
2.1 Principles of 2.6 P2P file sharing
network applications 2.7 Socket programming with
2.2 Web and HTTP TCP
2.3 FTP 2.8 Socket programming with
2.4 Electronic Mail
UDP
2.9 Building a Web server
SMTP, POP3, IMAP
2.5 DNS

2: Application Layer 103


Socket programming with UDP

UDP: no connection between


client and server
no handshaking
sender explicitly attaches application viewpoint
IP address and port of
destination to each packet UDP provides unreliable transfer
server must extract IP of groups of bytes (datagrams)
between client and server
address, port of sender
from received packet
UDP: transmitted data may be
received out of order, or
lost

2: Application Layer 104


Client/server socket interaction: UDP
Server (running on hostid) Client

create socket, create socket,


port=x, for clientSocket =
incoming request: DatagramSocket()
serverSocket =
DatagramSocket()
Create, address (hostid, port=x,
send datagram request
using clientSocket
read request from
serverSocket

write reply to
serverSocket
specifying client read reply from
host address, clientSocket
port number close
clientSocket

2: Application Layer 105


Example: Java client (UDP)
keyboard monitor

inFromUser
input
stream

Client
Process
Input: receives
process
packet (TCP
Output: sends received byte
packet (TCP sent stream)

receivePacket
sendPacket
byte stream) UDP UDP
packet packet

client
clientSocket UDP
socket UDP
socket

to network from network

2: Application Layer 106


Example: Java client (UDP)
import java.io.*;
import java.net.*;

class UDPClient {
public static void main(String args[]) throws Exception
{
Create
input stream BufferedReader inFromUser =
new BufferedReader(new InputStreamReader(System.in));
Create
client socket DatagramSocket clientSocket = new DatagramSocket();
Translate
InetAddress IPAddress = InetAddress.getByName("hostname");
hostname to IP
address using DNS byte[] sendData = new byte[1024];
byte[] receiveData = new byte[1024];

String sentence = inFromUser.readLine();


sendData = sentence.getBytes();
2: Application Layer 107
Example: Java client (UDP), cont.
Create datagram
with data-to-send, DatagramPacket sendPacket =
length, IP addr, port new DatagramPacket(sendData, sendData.length, IPAddress, 9876);

Send datagram clientSocket.send(sendPacket);


to server
DatagramPacket receivePacket =
new DatagramPacket(receiveData, receiveData.length);
Read datagram
clientSocket.receive(receivePacket);
from server
String modifiedSentence =
new String(receivePacket.getData());

System.out.println("FROM SERVER:" + modifiedSentence);


clientSocket.close();
}
}

2: Application Layer 108


Example: Java server (UDP)
import java.io.*;
import java.net.*;

class UDPServer {
public static void main(String args[]) throws Exception
Create {
datagram socket
DatagramSocket serverSocket = new DatagramSocket(9876);
at port 9876
byte[] receiveData = new byte[1024];
byte[] sendData = new byte[1024];

while(true)
{
Create space for
DatagramPacket receivePacket =
received datagram
new DatagramPacket(receiveData, receiveData.length);
Receive serverSocket.receive(receivePacket);
datagram
2: Application Layer 109
Example: Java server (UDP), cont
String sentence = new String(receivePacket.getData());
Get IP addr
InetAddress IPAddress = receivePacket.getAddress();
port #, of
sender int port = receivePacket.getPort();

String capitalizedSentence = sentence.toUpperCase();

sendData = capitalizedSentence.getBytes();
Create datagram
DatagramPacket sendPacket =
to send to client new DatagramPacket(sendData, sendData.length, IPAddress,
port);
Write out
datagram serverSocket.send(sendPacket);
to socket }
}
} End of while loop,
loop back and wait for
another datagram
2: Application Layer 110
Chapter 2: Application layer
2.1 Principles of 2.6 P2P file sharing
network applications 2.7 Socket programming with
app architectures TCP
app requirements 2.8 Socket programming with
2.2 Web and HTTP UDP
2.4 Electronic Mail 2.9 Building a Web server
SMTP, POP3, IMAP

2.5 DNS

2: Application Layer 111


Building a simple Web server
handles one HTTP after creating server, you can
request request file using a
accepts the request browser (eg IE explorer)
parses header see text for details
obtains requested file
from servers file
system
creates HTTP response
message:
header lines + file
sends response to client

2: Application Layer 112


Chapter 2: Summary
Our study of network apps now complete!
Application architectures specific protocols:
client-server HTTP

P2P FTP

hybrid SMTP, POP, IMAP


DNS
application service
requirements: socket programming
reliability, bandwidth,
delay
Internet transport
service model
connection-oriented,
reliable: TCP
unreliable, datagrams: UDP
2: Application Layer 113
Chapter 2: Summary
Most importantly: learned about protocols
typical request/reply
control vs. data msgs
message exchange: in-band, out-of-band
client requests info or
centralized vs. decentralized
service
stateless vs. stateful
server responds with
data, status code reliable vs. unreliable msg
transfer
message formats:
complexity at network
headers: fields giving
edge
info about data
data: info being
communicated

2: Application Layer 114

You might also like