You are on page 1of 40

DCCN – LECTURE – 05

Application Layer
Web & Mail Services

MUHAMMAD IRTAZA SALEEM


DEPARTMENT OF COMPUTER AND INFORMATION SCIENCES

LECTURE – 01 - INTRODUCTION PIEAS, PAKISTAN INSTITUTE OF ENGINEERING AND APPLIED SCIENCES 1


Chapter 2: outline
2.1 principles of network 2.5 P2P applications
applications
2.6 video streaming and content
2.2 Web and HTTP distribution networks
2.3 electronic mail 2.7 socket programming with UDP
• SMTP, POP3, IMAP and TCP

2.4 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.,

www.someschool.edu/someDept/pic.gif

host name path name

APPLICATION LAYER 2-3


HTTP overview
HTTP: hypertext transfer protocol
Web’s application layer
protocol
client/server model PC running
◦ client: browser that requests, Firefox browser
receives, (using HTTP protocol)
and “displays” Web objects
◦ server: Web server sends (using
HTTP protocol) objects in
response to requests server
running
Apache Web
server

iPhone running
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 past
to server, port 80 client requests
 server accepts TCP
connection from client aside
 HTTP messages (application- protocols that maintain
layer protocol messages) “state” are complex!
exchanged between browser  past history (state) must be
(HTTP client) and Web server maintained
 if server/client crashes, their
(HTTP server) views of “state” may be
 TCP connection closed inconsistent, must be
reconciled

APPLICATION LAYER 2-5


HTTP connections
non-persistent HTTP persistent HTTP
at most one object sent over TCP connection multiple objects can be sent over
◦ connection then closed single TCP connection between
client, server
downloading multiple objects required
multiple connections

APPLICATION LAYER 2-6


Non-persistent HTTP
suppose user enters URL: (contains text,
www.someSchool.edu/someDepartment/home.index references to 10
jpeg images)
1a. HTTP client initiates TCP
connection to HTTP server (process)
at www.someSchool.edu on port 80 1b. HTTP server at host
www.someSchool.edu waiting
for TCP connection at port 80.
“accepts” connection, notifying
2. HTTP client sends HTTP request client
message (containing URL) into
TCP connection socket. 3. HTTP server receives request
Message indicates that client message, forms response
wants object message containing requested
someDepartment/home.index object, and sends message into
its socket
time

APPLICATION LAYER 2-7


Non-persistent HTTP (cont.)
4. HTTP server closes TCP
5. HTTP client receives response connection.
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
connection
one RTT to initiate TCP connection RTT
one RTT for HTTP request and first request
file
few bytes of HTTP response to time to
return RTT transmit
file
file transmission time file
received
non-persistent HTTP response time
= time time
2RTT+ file transmission time

APPLICATION LAYER 2-9


Persistent HTTP

non-persistent HTTP issues: persistent HTTP:


 requires 2 RTTs per object  server leaves connection
open after sending response
 OS overhead for each TCP
connection  subsequent HTTP messages
between same client/server
 browsers often open parallel sent over open connection
TCP connections to fetch
referenced objects  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, GET /index.html HTTP/1.1\r\n
HEAD commands) Host: www-net.cs.umass.edu\r\n
User-Agent: Firefox/3.6.10\r\n
Accept: text/html,application/xhtml+xml\r\n
header Accept-Language: en-us,en;q=0.5\r\n
lines Accept-Encoding: gzip,deflate\r\n
carriage return, Accept-Charset: ISO-8859-1,utf-8;q=0.7\r\n
line feed at start Keep-Alive: 115\r\n
Connection: keep-alive\r\n
of line indicates \r\n
end of header lines
* Check out the online interactive exercises for more
examples: http://gaia.cs.umass.edu/kurose_ross/interactive/

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
URL method:
 uses GET method
 input is uploaded in URL
field of request line:

www.somesite.com/animalsearch?monkeys&banana

APPLICATION LAYER 2-13


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

APPLICATION LAYER 2-14


HTTP response message
status line
(protocol
status code HTTP/1.1 200 OK\r\n
status phrase) Date: Sun, 26 Sep 2010 20:09:20 GMT\r\n
Server: Apache/2.0.52 (CentOS)\r\n
Last-Modified: Tue, 30 Oct 2007 17:00:02
GMT\r\n
header ETag: "17dc6-a5c-bf716880"\r\n
Accept-Ranges: bytes\r\n
lines Content-Length: 2652\r\n
Keep-Alive: timeout=10, max=100\r\n
Connection: Keep-Alive\r\n
Content-Type: text/html; charset=ISO-8859-
1\r\n
data, e.g., \r\n
requested data data data data data ...
HTML file

* Check out the online interactive exercises for more


examples: http://gaia.cs.umass.edu/kurose_ross/interactive/
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 gaia.cs.umass.edu 80 opens TCP connection to port 80
(default HTTP server port)
at gaia.cs.umass. edu.
anything typed in will be sent
to port 80 at gaia.cs.umass.edu

2. type in a GET HTTP request:


GET /kurose_ross/interactive/index.php HTTP/1.1
Host: gaia.cs.umass.edu by typing this in (hit carriage
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
many Web sites use cookies example:
four components:  Susan always access Internet
1) cookie header line of HTTP from PC
response message
2) cookie header line in next HTTP  visits specific e-commerce site
request message for first time
3) cookie file kept on user’s host,
managed by user’s browser  when initial HTTP requests
4) back-end database at Web site arrives at site, site creates:
• unique ID
• entry in backend database for ID

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)
what cookies can be used for: aside
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 (Web e-
mail)

how to keep “state”:


 protocol endpoints: maintain state at
sender/receiver over multiple
transactions
 cookies: http messages carry state

APPLICATION LAYER 2-20


LECTURE – 01 - INTRODUCTION PIEAS, PAKISTAN INSTITUTE OF ENGINEERING AND APPLIED SCIENCES 21
Web caches (proxy server)
goal: satisfy client request without involving origin server

user sets browser: Web


accesses via cache
proxy
browser sends all HTTP server
requests to cache client
origin
◦ object in cache: cache returns server
object
◦ else cache requests object from
origin server, then returns object
to client

client origin
server

APPLICATION LAYER 2-22


More about Web caching
cache acts as both client and server why Web caching?
◦ server for original requesting
reduce response time for client request
client
◦ client to origin server reduce traffic on an institution’s
access link
typically cache is installed by ISP
(university, company, residential Internet dense with caches: enables
ISP) “poor” content providers to effectively
deliver content (so too does P2P file
sharing)

APPLICATION LAYER 2-23


Caching example:
assumptions:
 avg object size: 100K bits
 avg request rate from browsers to origin origin
servers:15/sec servers
 avg data rate to browsers: 1.50 Mbps public
 RTT from institutional router to any Internet
origin server: 2 sec
 access link rate: 1.54 Mbps
consequences: 1.54 Mbps
 LAN utilization: 15% access link
 access link utilization = 99%
 total delay = Internet delay + access institutional
delay + LAN delay network
= 2 sec + minutes + usecs 1 Gbps LAN

problem!

APPLICATION LAYER 2-24


Caching example: fatter access link
assumptions:
 avg object size: 100K bits
 avg request rate from browsers to origin origin
servers:15/sec servers
 avg data rate to browsers: 1.50 Mbps public
 RTT from institutional router to any Internet
origin server: 2 sec
 access link rate: 1.54 Mbps
consequences:
 LAN utilization: 15% 154 Mbps 154 Mbps
 access link utilization = 99% 1.54 Mbps
 total delay = Internet delay + access 9.9% access link
institutional
delay + LAN delay network
= 2 sec + minutes + usecs 1 Gbps LAN

msecs
Cost: increased access link speed (not cheap!)
APPLICATION LAYER 2-25
Caching example: install local cache
assumptions:
 avg object size: 100K bits
 avg request rate from browsers to origin
origin servers:15/sec servers
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
consequences: 1.54 Mbps
 LAN utilization: 15% access link
 access link utilization = 100% institutional
 total delay = Internet delay + access network
delay + LAN delay ? 1 Gbps LAN
= 2 sec + minutes? + usecs
local web
How to compute link cache
utilization, delay?
Cost: web cache (cheap!)
APPLICATION LAYER 2-26
Caching example: install local cache
Calculating access link utilization, delay with
cache:
suppose cache hit rate is 0.4 origin
◦ 40% requests satisfied at cache, 60%
requests satisfied at origin servers
public
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
network
1 Gbps LAN
 total delay
 = 0.6 * (delay from origin servers) +0.4 local web
* (delay when satisfied at cache)
 = 0.6 (2.01) + 0.4 (~msecs) = ~ 1.2 secs cache
 less than with 154 Mbps link (and
cheaper too!)

APPLICATION LAYER 2-27


Conditional GET
client server
Goal: don’t send object if
cache has up-to-date cached
version HTTP request msg
object
If-modified-since: <date>
◦ no object transmission delay not
◦ lower link utilization modified
HTTP response
before
HTTP/1.0
cache: specify date of cached 304 Not Modified <date>
copy in HTTP request
If-modified-since:
<date>
HTTP request msg
server: response contains no If-modified-since: <date> object
object if cached copy is up- modified
to-date: HTTP response after
HTTP/1.0 304 Not HTTP/1.0 200 OK <date>
Modified <data>
APPLICATION LAYER 2-28
Chapter 2: outline
2.1 principles of network 2.5 P2P applications
applications
2.6 video streaming and content
2.2 Web and HTTP distribution networks
2.3 electronic mail 2.7 socket programming with UDP
• SMTP, POP3, IMAP and TCP

2.4 DNS

APPLICATION LAYER 2-29


Electronic mail outgoing
message queue

Three major components: user user mailbox


agent
user agents
mail user
mail servers server agent
simple mail transfer protocol:
SMTP SMTP mail user
server agent

User Agent SMTP


a.k.a. “mail reader” SMTP user
agent
composing, editing, reading mail mail
messages server
user
e.g., Outlook, Thunderbird, agent
iPhone mail client user
outgoing, incoming messages agent
stored on server

APPLICATION LAYER 2-30


Electronic mail: mail servers
mail servers: user
agent
mailbox contains incoming
messages for user mail user
server agent
message queue of outgoing (to SMTP
be sent) mail messages mail user
server agent
SMTP protocol between mail SMTP
servers to send email user
messages SMTP
agent
mail
◦ client: sending mail server server
◦ “server”: receiving mail server user
agent
user
agent

APPLICATION LAYER 2-31


Electronic Mail: SMTP [RFC 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 (like HTTP)


◦ commands: ASCII text
◦ response: status code and phrase

messages must be in 7-bit ASCI

APPLICATION LAYER 2-32


Scenario: Alice sends message to Bob
1) Alice uses UA to compose 4) SMTP client sends Alice’s
message “to” message over the TCP
bob@someschool.edu connection
2) Alice’s UA sends message to 5) Bob’s mail server places the
her mail server; message placed message in Bob’s mailbox
in message queue
6) Bob invokes his user agent to
3) client side of SMTP opens TCP read message
connection with Bob’s mail
server

1 user mail user


mail agent
agent server server
2 3 6
4
5
Alice’s mail server Bob’s mail server
APPLICATION LAYER 2-33
Sample SMTP interaction
S: 220 hamburger.edu
C: HELO crepes.fr
S: 250 Hello crepes.fr, pleased to meet you
C: MAIL FROM: <alice@crepes.fr>
S: 250 alice@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

APPLICATION LAYER 2-34


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)

APPLICATION LAYER 2-35


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

APPLICATION LAYER 2-36


Mail message format
SMTP: protocol for exchanging
email messages
header
RFC 822: standard for text blank
message format: line

header lines, e.g.,


◦ To:
body
◦ From:
◦ Subject:
different from SMTP MAIL FROM,
RCPT TO: commands!
Body: the “message”
◦ ASCII characters only

APPLICATION LAYER 2-37


Mail access protocols
user
mail access user
SMTP SMTP protocol
agent agent
(e.g., POP,
IMAP)

sender’s mail receiver’s mail


server server

SMTP: delivery/storage to receiver’s server


mail access protocol: retrieval from server
◦ POP: Post Office Protocol [RFC 1939]: authorization, download
◦ IMAP: Internet Mail Access Protocol [RFC 1730]: more features,
including manipulation of stored messages on server
◦ HTTP: gmail, Hotmail, Yahoo! Mail, etc.

APPLICATION LAYER 2-38


POP3 protocol S: +OK POP3 server ready
C: user bob
authorization phase S: +OK
C: pass hungry
client commands: S: +OK user successfully logged on
◦ user: declare username
◦ pass: password C: list
S: 1 498
server responses S: 2 912
◦ +OK S: .
◦ -ERR C: retr 1
S: <message 1 contents>
transaction phase, client: S: .
list: list message numbers C: dele 1
C: retr 2
retr: retrieve message by number S: <message 1 contents>
S: .
dele: delete
C: dele 2
quit C: quit
S: +OK POP3 server signing off

APPLICATION LAYER 2-39


POP3 (more) and IMAP
more about POP3 IMAP
previous example uses POP3 keeps all messages in one
“download and delete” mode place: at server
◦ Bob cannot re-read e-mail if he
changes client allows user to organize
messages in folders
POP3 “download-and-keep”:
copies of messages on keeps user state across
different clients sessions:
◦ names of folders and mappings
POP3 is stateless across between message IDs and folder
sessions name

APPLICATION LAYER 2-40

You might also like