Chapter 2
Application Layer
A note on the use of these ppt slides:
We’re making these slides freely available to all (faculty, students, readers).
They’re in PowerPoint form so you can add, modify, and delete slides
(including this one) and slide content to suit your needs. They obviously
Computer Networking:
represent a lot of work on our part. In return for use, we only ask the A Top Down Approach,
following:
If you use these slides (e.g., in a class) in substantially unaltered form, 4th edition.
that you mention their source (after all, we’d like people to use our book!) 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 Addison-Wesley, July
note our copyright of this material. 2007.
Thanks and enjoy! JFK/KWR
All material copyright 1996-2007
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 applications
network applications 2.7 Socket programming
2.2 Web and HTTP with TCP
2.3 FTP 2.8 Socket programming
2.4 Electronic Mail with UDP
SMTP, POP3, IMAP
2.5 DNS
2: Application Layer 2
Chapter 2: Application Layer
Our goals: learn about protocols
conceptual, by 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
peer-to-peer applications
socket API
paradigm
2: Application Layer 3
Some network apps
e-mail voice over IP
web real-time video
instant messaging conferencing
remote login grid computing
P2P file sharing
multi-user network
games
streaming stored video
clips
2: Application Layer 4
Creating a network app application
transport
network
data link
write programs that physical
run on (different) end
systems
communicate over network
e.g., web server software
communicates with
browser software application
transport
No need to write software network
data link
for network-core devices
application
physical
transport
network
Network-core devices do data link
physical
not run user applications
applications on end systems
allows for rapid app
development, propagation
2: Application Layer 5
Chapter 2: Application layer
2.1 Principles of 2.6 P2P applications
network applications 2.7 Socket programming
2.2 Web and HTTP with TCP
2.3 FTP 2.8 Socket programming
2.4 Electronic Mail with UDP
SMTP, POP3, IMAP 2.9 Building a Web
2.5 DNS server
2: Application Layer 6
Application architectures
Client-server
Peer-to-peer (P2P)
Hybrid of client-server and P2P
2: Application Layer 7
Client-server architecture
server:
always-on host
permanent IP address
server farms for
scaling
clients:
communicate with server
client/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 peer-peer
peers are intermittently
connected and change IP
addresses
Highly scalable but
difficult to manage
2: Application Layer 9
Hybrid of client-server and P2P
Skype
voice-over-IP P2P application
centralized server: finding address of remote
party:
client-client connection: direct (not through
server)
Instant messaging
chatting between two users is P2P
centralized service: client presence
detection/location
• 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
within a host. that initiates
within same host, two communication
processes communicate Server process: process
using inter-process that waits to be
communication (defined contacted
by OS).
processes in different Note: applications with
hosts communicate by P2P architectures have
exchanging messages client processes &
server processes
2: Application Layer 11
App-layer protocol defines
Types of messages Public-domain protocols:
exchanged, defined in RFCs
e.g., request, response allows for
Message syntax: interoperability
what fields in messages &
e.g., HTTP, SMTP
how fields are delineated
Message semantics Proprietary protocols:
e.g., Skype
meaning of information in
fields
Rules for when and how
processes send &
respond to messages
2: Application Layer 12
What transport service does an app need?
Data loss Throughput
some apps (e.g., audio) can some apps (e.g., multimedia)
tolerate some loss require minimum amount of
other apps (e.g., file throughput to be
transfer, telnet) require “effective”
100% reliable data other apps (“elastic apps”)
transfer make use of whatever
Timing throughput they get
some apps (e.g., Security
Internet telephony, Encryption, data integrity, …
interactive games)
require low delay to be
“effective”
2: Application Layer 13
Transport service requirements of common apps
Application Data loss Throughput 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, 100’s msec
video:10kbps-5Mbps
stored audio/video loss-tolerant same as above yes, few secs
interactive games loss-tolerant few kbps up yes, 100’s 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
required between client and between sending and
server processes receiving process
reliable transport between does not provide:
sending and receiving process connection setup,
flow control: sender won’t reliability, flow control,
overwhelm receiver congestion control, timing,
throughput guarantee, or
congestion control: throttle
security
sender when network
overloaded
does not provide: timing, Q: why bother? Why is
minimum throughput there a UDP?
guarantees, security
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 HTTP (eg Youtube), TCP or UDP
RTP [RFC 1889]
Internet telephony SIP, RTP, proprietary
(e.g., Skype) typically UDP
2: Application Layer 16
Chapter 2: Application layer
2.1 Principles of 2.6 P2P applications
network applications 2.7 Socket programming
app architectures with TCP
app requirements 2.8 Socket programming
2.2 Web and HTTP
with UDP
2.4 Electronic Mail
SMTP, POP3, IMAP
2.5 DNS
2: Application Layer 17
Web and HTTP
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:
[Link]/someDept/[Link]
host name path name
2: Application Layer 18
HTTP overview
HTTP: hypertext
transfer protocol HT
TP
req
Web’s application layer PC running HT ues
TP t
protocol Explorer re sp
ons
client/server model e
client: browser that
st
que
requests, receives, Pr
e
n se Server
T o
“displays” Web objects HT r es
p running
TP Apache Web
server: Web server HT
server
sends objects in
response to requests
Mac running
Navigator
2: Application Layer 19
HTTP overview (continued)
Uses TCP: HTTP is “stateless”
client initiates TCP server maintains no
connection (creates socket) information about
to server, port 80 past 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 20
HTTP connections
Nonpersistent HTTP Persistent HTTP
At most one object is Multiple objects can
sent over a TCP be sent over single
connection. TCP connection
between client and
server.
2: Application Layer 21
Nonpersistent HTTP
(contains text,
Suppose user enters URL [Link]/someDepartment/[Link]
references to 10
jpeg images)
1a. HTTP client initiates TCP
connection to HTTP server
(process) at
1b. HTTP server at host
[Link] waiting
[Link] on port 80
for TCP connection at port 80.
“accepts” connection,
notifying client
2. HTTP client sends HTTP request message
(containing URL) into TCP connection
socket. Message indicates that client
wants object someDepartment/[Link] 3. HTTP server receives request
message, forms response
message containing requested
object, and sends message
into its socket
time
2: Application Layer 22
Nonpersistent HTTP (cont.)
4. HTTP server closes TCP
connection.
5. HTTP client receives response
message containing html file,
displays html. Parsing html
file, finds 10 referenced jpeg
objects
time 6. Steps 1-5 repeated for each
of 10 jpeg objects
2: Application Layer 23
Non-Persistent HTTP: Response time
Definition of RTT: time for a
small packet to travel
from client to server and
back. initiate TCP
connection
Response time:
RTT
one RTT to initiate TCP
request
connection file
time to
one RTT for HTTP request RTT
transmit
and first few bytes of file
file
HTTP response to return received
file transmission time
time time
total = 2RTT+transmit time
2: Application Layer 24
Persistent HTTP
Nonpersistent HTTP issues: Persistent HTTP
requires 2 RTTs per object server leaves connection
OS overhead for each TCP open after sending
connection response
browsers often open parallel subsequent HTTP messages
TCP connections to fetch between same
referenced objects client/server sent over
open connection
client sends requests as
soon as it encounters a
referenced object
as little as one RTT for all
the referenced objects
2: Application Layer 25
HTTP request message
two types of HTTP messages: request, response
HTTP request message:
ASCII (human-readable format)
request line
(GET, POST, GET /somedir/[Link] HTTP/1.1
HEAD commands) Host: [Link]
User-agent: Mozilla/4.0
header Connection: close
lines Accept-language:fr
Carriage return,
line feed (extra carriage return, line feed)
indicates end
of message
2: Application Layer 26
HTTP request message: general format
2: Application Layer 27
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:
[Link]/animalsearch?monkeys&banana
2: Application Layer 28
Method types
HTTP/1.0 HTTP/1.1
GET GET, POST, HEAD
POST PUT
HEAD uploads file in entity
body to path specified
asks server to leave
in URL field
requested object out of
response DELETE
deletes file specified in
the URL field
2: Application Layer 29
HTTP response message
status line
(protocol
status code HTTP/1.1 200 OK
status phrase) Connection close
Date: Thu, 06 Aug 1998 [Link] GMT
header Server: Apache/1.3.0 (Unix)
lines Last-Modified: Mon, 22 Jun 1998 …...
Content-Length: 6821
Content-Type: text/html
data, e.g., data data data data data ...
requested
HTML file
2: Application Layer 30
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 31
Trying out HTTP (client side) for yourself
1. Telnet to your favorite Web server:
telnet [Link] 80 Opens TCP connection to port 80
(default HTTP server port) at [Link].
Anything typed in sent
to port 80 at [Link]
2. Type in a GET HTTP request:
GET /~ross/ HTTP/1.1 By typing this in (hit carriage
Host: [Link] 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 32
User-server state: cookies
Example:
Many major Web sites
Susan always access
use cookies
Four components: Internet always from PC
1) cookie header line of visits specific e-
HTTP response message commerce site for first
2) cookie header line in time
HTTP request message
when initial HTTP
3) cookie file kept on
user’s host, managed by requests arrives at site,
user’s browser site creates:
4) back-end database at unique ID
Web site
entry in backend
database for ID
2: Application Layer 33
Cookies: keeping “state” (cont.)
client server
ebay 8734
usual http request msg
Amazon server
cookie file usual http response creates ID
Set-cookie: 1678 1678 for user create
ebay 8734 entry
amazon 1678
usual http request msg
cookie: 1678 cookie- access
specific
one week later: usual http response msg action backend
database
access
ebay 8734 usual http request msg
amazon 1678 cookie: 1678 cookie-
spectific
usual http response msg action
2: Application Layer 34
Cookies (continued)
aside
What cookies can bring: Cookies and privacy:
authorization cookies permit sites to
shopping carts learn a lot about you
you may supply name
recommendations
and e-mail to sites
user session state
(Web e-mail)
How to keep “state”:
protocol endpoints: maintain state
at sender/receiver over multiple
transactions
cookies: http messages carry state
2: Application Layer 35
Web caches (proxy server)
Goal: satisfy client request without involving origin server
user sets browser: Web origin
server
accesses via cache
browser sends all HTTP Proxy
HT
requests to cache TP
req server ques t
H u P re
T
client TP e st T T on se
object in cache: cache res H
res
p
pon P
returns object se H TT
e st
else cache requests req
u
object from origin server, T P on se
HT p
res
then returns object to T TP
H
client
client
origin
server
2: Application Layer 36
More about Web caching
cache acts as both Why Web caching?
client and server reduce response time
typically cache is for client request
installed by ISP reduce traffic on an
(university, company, institution’s access
residential ISP) link.
Internet dense with
caches: enables “poor”
content providers to
effectively deliver
content (but so does
P2P file sharing)
2: Application Layer 37
Caching example
origin
Assumptions servers
average object size = 100,000
bits public
Internet
avg. request rate from
institution’s browsers to origin
servers = 15/sec
delay from institutional router 1.5 Mbps
to any origin server and back to access link
router = 2 sec institutional
network
Consequences 10 Mbps LAN
utilization on LAN = 15%
utilization on access link = 100%
total delay = Internet delay +
access delay + LAN delay institutional
cache
= 2 sec + minutes + milliseconds
2: Application Layer 38
Caching example (cont)
origin
possible solution servers
increase bandwidth of access
public
link to, say, 10 Mbps Internet
consequence
utilization on LAN = 15%
utilization on access link = 15% 10 Mbps
Total delay = Internet delay + access link
access delay + LAN delay institutional
= 2 sec + msecs + msecs network
10 Mbps LAN
often a costly upgrade
institutional
cache
2: Application Layer 39
Caching example (cont)
origin
possible solution: install servers
cache public
suppose hit rate is 0.4 Internet
consequence
40% requests will be
satisfied almost immediately
60% requests satisfied by 1.5 Mbps
access link
origin server
utilization of access link institutional
reduced to 60%, resulting in network
10 Mbps LAN
negligible delays (say 10
msec)
total avg delay = Internet
delay + access delay + LAN institutional
delay = .6*(2.01) secs cache
+ .4*milliseconds < 1.4 secs
2: Application Layer 40
Conditional GET
Goal: don’t 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-
HTTP request msg
to-date: If-modified-since:
HTTP/1.0 304 Not <date> object
Modified modified
HTTP response
HTTP/1.0 200 OK
<data>
2: Application Layer 41