Chapter 2: Application Layer: SMTP, Pop3, Imap
Chapter 2: Application Layer: SMTP, Pop3, Imap
Chapter 2: Application Layer: SMTP, Pop3, Imap
2: Application Layer 1
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
paradigm socket API
2: Application Layer 2
Some network apps
E-mail Internet telephone
Web Real-time video
Instant messaging conference
Remote login Massive parallel
P2P file sharing computing
Multi-user network
games
Streaming stored
video clips
2: Application Layer 3
Creating a network app
Write programs that application
transport
network
run on different end data link
physical
systems and
communicate over a
network.
e.g., Web: Web server
software communicates
with browser software
No software written for application
application
2: Application Layer 5
Application architectures
Client-server
Peer-to-peer (P2P)
Hybrid of client-server and P2P
2: Application Layer 6
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 7
Pure P2P architecture
no always on server
arbitrary end systems
directly communicate
peers are intermittently
connected and change IP
addresses
example: Torrent
Highly scalable
2: Application Layer 9
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 10
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
2: Application Layer 12
App-layer protocol defines
Types of messages Public-domain protocols:
exchanged, eg, request & defined in RFCs
response messages
allows for
Syntax of message
types: what fields in interoperability
messages & how fields eg, HTTP, SMTP
are delineated Proprietary protocols:
Semantics of the fields,
eg, KaZaA
ie, meaning of
information in fields
Rules for when and how
processes send &
respond to messages
2: Application Layer 13
What transport service does an app need?
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 bandwidth to be
100% reliable data “effective”
transfer other apps (“elastic
Timing apps”) make use of
some apps (e.g., whatever bandwidth they
Internet telephony, get
interactive games)
require low delay to be
“effective”
2: Application Layer 14
Transport service requirements of common apps
2: Application Layer 15
Internet transport protocols services
Application Underlying
Application layer protocol transport protocol
2: Application Layer 17
Chapter 2: Application layer
2.1 Principles of 2.6 P2P file sharing
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 2.9 Building a Web
SMTP, POP3, IMAP server
2.5 DNS
2: Application Layer 18
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:
www.someschool.edu/someDept/pic.gif
2: Application Layer 19
HTTP overview
HTTP: hypertext
transfer protocol HT
TP
r
equ
Web’s application layer PC running HT est
TP
protocol Explorer res
pon
se
client/server model
client: browser that
e st
u
requests, receives, P r eq se Server
T o n
“displays” Web objects HT r es
p running
T P 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 2068
2: Application Layer 20
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 21
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
HTTP/1.0 uses between client and
nonpersistent HTTP server.
HTTP/1.1 uses
persistent connections
in default mode
2: Application Layer 22
Nonpersistent HTTP
(contains text,
Suppose user enters URL www.someSchool.edu/someDepartment/home.index
references to 10
jpeg images)
time
2: Application Layer 23
Nonpersistent HTTP (cont.)
2: Application Layer 24
Response time modeling
Definition of RRT: time to
send a small packet to
travel from client to
server and back. initiate TCP
Response time: connection
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
total = 2RTT+transmit time time time
2: Application Layer 25
Persistent HTTP
2: Application Layer 26
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,
line feed (extra carriage return, line feed)
indicates end
of message
2: Application Layer 27
HTTP request message: general format
2: Application Layer 28
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 29
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 30
HTTP response message
status line
(protocol
status code HTTP/1.1 200 OK
status phrase) Connection close
Date: Thu, 06 Aug 1998 12:00:15 GMT
header Server: Apache/1.3.0 (Unix)
lines Last-Modified: Mon, 22 Jun 1998 …...
Content-Length: 6821
Content-Type: text/html
2: Application Layer 31
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 32
Trying out HTTP (client side) for yourself
2: Application Layer 33
User-server state: cookies
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
user’s host and managed backend database for
by user’s browser ID
4) back-end database at
Web site
2: Application Layer 34
Cookies: keeping “state” (cont.)
client server
Cookie file usual http request msg server n e
da try i
tab 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
ss
one week later:
ce
ac
usual http request msg
Cookie file cookie-
cookie: 1678
amazon: 1678 spectific
ebay: 8734 usual http response msg action
2: Application Layer 35
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
search engines use
(Web e-mail)
redirection & cookies
to learn yet more
advertising companies
obtain info across
sites
2: Application Layer 36
Web caches (proxy server)
Goal: satisfy client request without involving origin server
2: Application Layer 37
More about Web caching
Cache acts as both client Why Web caching?
and server Reduce response time for
Typically cache is installed
client request.
by ISP (university, Reduce traffic on an
company, residential ISP) institution’s access link.
Internet dense with caches
enables “poor” content
providers to effectively
deliver content (but so
does P2P file sharing)
2: Application Layer 38
Caching example
origin
Assumptions
servers
average object size = 100,000
bits public
avg. request rate from Internet
2: Application Layer 39
Caching example (cont)
origin
Possible solution
servers
increase bandwidth of access
public
link to, say, 10 Mbps
Internet
Consequences
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
often a costly upgrade 10 Mbps LAN
institutional
cache
2: Application Layer 40
Caching example (cont)
origin
Install cache servers
suppose hit rate is .4 public
Consequence Internet
40% requests will be
satisfied almost immediately
60% requests satisfied by
origin server 1.5 Mbps
access link
utilization of access link
reduced to 60%, resulting in institutional
negligible delays (say 10 network
10 Mbps LAN
msec)
total avg delay = Internet
delay + access delay + LAN
delay = .6*(2.01) secs +
milliseconds < 1.4 secs institutional
cache
2: Application Layer 41
Conditional GET
2: Application Layer 43
FTP: the file transfer protocol
2: Application Layer 44
FTP: separate control, data connections
TCP control connection
FTP client contacts FTP server port 21
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
directory by sending commands Server opens a second TCP
over control connection. data connection to transfer
When server receives a another file.
command for a file transfer, Control connection: “out of
the server opens a TCP data band”
connection to client FTP server maintains “state”:
After transferring one file, current directory, earlier
server closes connection. authentication
2: Application Layer 45
FTP commands, responses
2: Application Layer 46
Chapter 2: Application layer
2.1 Principles of 2.6 P2P file sharing
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 47
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
SMTP agent
User Agent
a.k.a. “mail reader” SMTP
mail user
composing, editing, reading agent
server
mail messages
e.g. Outlook user
outgoing, incoming messages agent
user
stored on server agent
2: Application Layer 48
Electronic Mail: mail servers
user
Mail Servers agent
mailbox contains incoming
mail
user
messages for user server
agent
message queue of outgoing
SMTP
(to be sent) mail messages mail
server user
SMTP protocol between mail
servers to send email
SMTP agent
messages SMTP
client: sending mail mail user
agent
server server
“server”: receiving mail
user
server agent
user
agent
2: Application Layer 49
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
commands: ASCII text
response: status code and phrase
2: Application Layer 50
Scenario: Alice sends message to Bob
1) Alice uses UA to compose 4) SMTP client sends Alice’s
message and “to” message over the TCP
bob@someschool.edu connection
2) Alice’s UA sends message 5) Bob’s mail server places the
to her mail server; message message in Bob’s mailbox
placed in message queue 6) Bob invokes his user agent
3) Client side of SMTP opens to read message
TCP connection with Bob’s
mail server
1 mail
mail
server user
user server
2 agent
agent 3 6
4 5
2: Application Layer 51
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
2: Application Layer 52
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 53
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
CRLF.CRLF to determine interaction, status codes
end of message
HTTP: each object
encapsulated in its own
response msg
SMTP: multiple objects
sent in multipart msg
2: Application Layer 54
Mail message format
2: Application Layer 55
Message format: multimedia extensions
MIME: multimedia mail extension, RFC 2045, 2056
additional lines in msg header declare MIME content
type
From: alice@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 56
Mail access protocols
SMTP SMTP access user
user
agent protocol agent
2: Application Layer 57
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
C: list
pass: password
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
retr: retrieve message by C: retr 2
S: <message 1 contents>
number
S: .
dele: delete
C: dele 2
quit C: quit
S: +OK POP3 server signing off
2: Application Layer 58
POP3 (more) and IMAP
More about POP3 IMAP
Previous example uses Keep all messages in
“download and delete” one place: the server
mode. Allows user to
Bob cannot re-read e-
organize messages in
mail if he changes folders
client IMAP keeps user state
“Download-and-keep”:
across sessions:
copies of messages on names of folders and
different clients mappings between
POP3 is stateless message IDs and folder
across sessions name
2: Application Layer 59
Chapter 2: Application layer
2.1 Principles of 2.6 P2P file sharing
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 60
DNS: Domain Name System
2: Application Layer 61
DNS
DNS services Why not centralize DNS?
Hostname to IP single point of failure
address translation traffic volume
Host aliasing distant centralized
Canonical and alias database
names maintenance
Mail server aliasing
Load distribution
doesn’t scale!
Replicated Web
servers: set of IP
addresses for one
canonical name
2: Application Layer 62
Distributed, Hierarchical Database
Root DNS Servers
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 64
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
2: Application Layer 65
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 66
Example root DNS server
2
Host at cis.poly.edu 3
TLD DNS server
wants IP address for 4
gaia.cs.umass.edu
5
gaia.cs.umass.edu
2: Application Layer 67
Recursive queries root DNS server
recursive query:
puts burden of name 2 3
resolution on 7 6
contacted name TLD DNS serve
server
heavy load?
local DNS server
4
iterated query: dns.poly.edu 5
contacted server 1 8
replies with name of
server to contact authoritative DNS server
“I don’t know this dns.cs.umass.edu
requesting host
name, but ask this cis.poly.edu
server”
gaia.cs.umass.edu
2: Application Layer 68
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 69
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
Type=NS www.ibm.com is really
name is domain (e.g. foo.com)
servereast.backup2.ibm.com
value is IP address of
value is cannonical name
authoritative name server
for this domain
Type=MX
value is name of mailserver
associated with name
2: Application Layer 70
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 71
DNS protocol, messages
RRs in reponse
to query
records for
authoritative servers
additional “helpful”
info that may be used
2: Application Layer 72
Inserting records into DNS
Example: just created startup “Network Utopia”
Register name networkuptopia.com at a registrar
(e.g., Network Solutions)
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:
2: Application Layer 73
Chapter 2: Application layer
2.1 Principles of 2.6 P2P file sharing
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 2.9 Building a Web
SMTP, POP3, IMAP server
2.5 DNS
2: Application Layer 74
P2P file sharing
Alice chooses one of
content
1 3
2) Alice queries for “Hey
2
Jude” 1
2: Application Layer 76
P2P: problems with centralized directory
2: Application Layer 77
Query flooding: Gnutella
fully distributed overlay network: graph
no central server edge between peer X
public domain protocol and Y if there’s a TCP
many Gnutella clients connection
implementing protocol all active peers and
edges is overlay net
Edge is not a physical
link
Given peer will
typically be connected
with < 10 overlay
neighbors
2: Application Layer 78
Gnutella: protocol
File transfer:
Query message
HTTP
sent over existing TCP
connections
Query
peers forward
QueryHit
Query message
QueryHit e ry Qu
ery
Qu Hit
sent over ery
Qu
reverse
Query
path
QueryHit
Scalability: Qu
er
y
limited scope
flooding
2: Application Layer 79
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
2: Application Layer 80
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 81
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 82
Kazaa tricks
Limitations on simultaneous uploads
Request queuing
Incentive priorities
Parallel downloading
2: Application Layer 83
Assignment
What about “Torrent” and “E-Donkey”
Networks ?
How do they work ?
Define and describe as detail as possible.
Mail to : widyat.jagakarsa@gmail.com
Mail Subject & Filename:
Jarkom <Kelas> Tugas1 <Name> <NIM>
Time limit: 2 weeks from today.
2: Application Layer 84