Chapter 2 - Part 2
Application Layer
A note on the use of these ppt slides: Computer
We’re making these slides freely available to all (faculty, students, readers).
They’re in PowerPoint form so you see the animations; and can add, modify, Networking: A
and delete slides (including this one) and slide content to suit your needs.
They obviously represent a lot of work on our part. In return for use, we only Top Down
ask the following:
If you use these slides (e.g., in a class) that you mention their source Approach
(after all, we’d like people to use our book!)
If you post any slides on a www site, that you note that they are adapted
6th edition
from (or perhaps identical to) our slides, and note our copyright of this Jim Kurose, Keith Ross
material. Addison-Wesley
Thanks and enjoy! JFK/KWR March 2012
All material copyright 1996-2012
J.F Kurose and K.W. Ross, All Rights Reserved
Application Layer 2-1
Chapter 2: outline
2.1 principles of network 2.6 P2P applications
applications 2.7 socket programming
app architectures with UDP and TCP
app requirements
2.2 Web and HTTP
2.3 FTP
2.4 electronic mail
SMTP, POP3, IMAP
2.5 DNS
Application Layer 2-2
Web and HTTP
First, a review…
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, e.g.,
[Link]/someDept/[Link]
host name path name
Application Layer 2-3
HTTP overview
HTTP: hypertext transfer
protocol HT
Web’s application layer TP
req
ues
protocol PC running HT t
Firefox browser TPr
client/server model esp
ons
client: browser that e
requests, receives, t
(using HTTP protocol) u es
req server
and “ displays” Web T P n se
HT s po running
objects TP
re Apache Web
T
server: Web server H server
sends (using HTTP
protocol) objects in iphone running
response to requests Safari browser
Application Layer 2-4
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 “ state” are complex!
(application-layer protocol past history (state) must be
messages) exchanged maintained
between browser (HTTP if server/client crashes, their
client) and Web server views of “ state” may be
(HTTP server) inconsistent, must be
TCP connection closed reconciled
Application Layer 2-5
HTTP connections
non-persistent HTTP persistent HTTP
at most one object sent multiple objects can
over TCP connection be sent over single
connection then TCP connection
closed between client, server
downloading multiple
objects required
multiple connections
Application Layer 2-6
Non-persistent HTTP
suppose user enters URL: (contains text,
[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] on port 80 [Link] waiting
for TCP connection at port 80.
“ accepts” connection, notifying
2. HTTP client sends HTTP request message client
(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
Application Layer 2-7
Non-persistent 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
Application Layer 2-8
Non-persistent HTTP: response time
RTT (definition): time for a
small packet to travel from
client to server and back
HTTP response time: initiate TCP
one RTT to initiate TCP connection
connection RTT
one RTT for HTTP request request
file
and first few bytes of HTTP time to
response to return RTT transmit
file
file transmission time
file
non-persistent HTTP received
response time =
2RTT+ file transmission time time
time
Application Layer 2-9
Persistent HTTP
non-persistent HTTP persistent HTTP:
issues: server leaves connection
requires 2 RTTs per object open after sending
OS overhead for each TCP response
connection subsequent HTTP
browsers often open messages between same
parallel TCP connections to client/server sent over
fetch referenced objects open connection
client sends requests as
soon as it encounters a
referenced object
as little as one RTT for all
the referenced objects
Application Layer 2-10
HTTP request message
two types of HTTP messages: request, response
HTTP request message:
ASCII (human-readable format)
carriage return character
line-feed character
request line
(GET, POST,
HEAD commands)
header
lines
carriage return,
line feed at start
of line indicates
end of header lines
Application Layer 2-11
HTTP request message: general format
method sp URL sp version cr lf request
line
header field name value cr lf
header
~
~ ~
~ lines
header field name value cr lf
cr lf
~
~ entity body ~
~ body
Application Layer 2-12
Uploading form input
POST method:
web page often includes
form input
input is uploaded to server
in entity body
[Link]/animalsearch?monkeys&banana
Application Layer 2-13
Method types
Application Layer 2-14
HTTP response message
status line
(protocol
status code
status phrase)
header
lines
data, e.g.,
requested
HTML file
Application Layer 2-15
HTTP response status codes
status code appears in 1st line in server-to-client response message.
some sample codes:
200 OK
request succeeded, requested object later in this msg
301 Moved Permanently
requested object moved, new location specified later in this msg
(Location:)
400 Bad Request
request msg not understood by server
404 Not Found
requested document not found on this server
505 HTTP Version Not Supported
Application Layer 2-16
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!
(or use Wireshark to look at captured HTTP request/response)
Application Layer 2-17
User-server state: cookies
Application Layer 2-18
Cookies: keeping “ state” (cont.)
client server
ebay 8734
usual http request msg Amazon server
cookie file creates ID
usual http response
1678 for user create backend
ebay 8734
set-cookie: 1678 entry database
amazon 1678
usual http request msg
cookie: 1678 cookie- access
specific
usual http response msg action
one week later:
access
ebay 8734 usual http request msg
amazon 1678 cookie: 1678 cookie-
specific
usual http response msg action
Application Layer 2-19
Cookies (continued)
aside
Application Layer 2-20
Web caches (proxy server)
HT proxy
TP u est
req server req
HT ues P se
client TP t H TT po n
res res origin
pon T P
se HT server
t
ues
req e
TT P o ns
p
H res
T TP
H
client origin
server
Application Layer 2-21
More about Web caching
Application Layer 2-22
Caching example:
assumptions:
avg object size: 100K bits origin
avg request rate from browsers to servers
origin servers:15/sec public
avg data rate to browsers: 1.50 Mbps Internet
RTT from institutional router to any
origin server: 2 sec
access link rate: 1.54 Mbps 1.54 Mbps
access link
consequences:
LAN utilization: 15% problem! institutional
network
access link utilization = 99% 1 Gbps LAN
total delay = Internet delay + access
delay + LAN delay
= 2 sec + minutes + usecs
Application Layer 2-23
Caching example: fatter access link
assumptions:
avg object size: 100K bits origin
avg request rate from browsers to servers
origin servers:15/sec public
avg data rate to browsers: 1.50 Mbps Internet
RTT from institutional router to any
origin server: 2 sec
access link rate: 1.54 Mbps
154 1.54 Mbps
154 Mbps
access link
consequences: Mbps
LAN utilization: 15% institutional
network
9.9%
access link utilization = 99% 1 Gbps LAN
total delay = Internet delay + access
delay + LAN delay
= 2 sec + minutes + usecs
msecs
Cost: increased access link speed (not cheap!)
Application Layer 2-24
Caching example: install local cache
assumptions:
avg object size: 100K bits origin
avg request rate from browsers to servers
origin servers:15/sec public
avg data rate to browsers: 1.50 Mbps Internet
RTT from institutional router to any
origin server: 2 sec
access link rate: 1.54 Mbps 1.54 Mbps
access link
consequences:
LAN utilization: 15% institutional
network
access link utilization?= 100% 1 Gbps LAN
total delay ?= Internet delay + access
delay + LAN delay local web
How to compute link cache
= 2 sec + minutes + usecs
utilization, delay?
Cost: web cache (cheap!)
Application Layer 2-25
Caching example: install local cache
Calculating access link
utilization, delay with cache:
suppose
origin
cache hit rate is 0.4 servers
40% requests satisfied at cache, 60% public
requests satisfied at origin Internet
access link utilization:
60% of requests use access link
data rate to browsers over access link = 1.54 Mbps
0.6*1.50 Mbps = .9 Mbps access link
utilization = 0.9/1.54 = .58 institutional
total delay network
= 0.6 * (delay from origin servers) +0.4 * (delay when 1 Gbps LAN
satisfied at cache)
= 0.6 (2.01) + 0.4 (~msecs) local web
= ~ 1.2 secs
less than with 154 Mbps link (and cheaper too!)
cache
Application Layer 2-26
Conditional GET
client server
HTTP request msg
If-modified-since: <date> object
not
modified
HTTP response
before
HTTP/1.0
304 Not Modified <date>
HTTP request msg
If-modified-since: <date> object
modified
HTTP response after
HTTP/1.0 200 OK <date>
<data>
Application Layer 2-27