Application Layer
2-1
Chapter 2�Application Layer
Computer Networking: A Top Down Approach �6th edition �Jim Kurose, Keith Ross�Addison-Wesley�March 2012
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 see the animations; and can add, modify, 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 ask the following:
Thanks and enjoy! JFK/KWR
All material copyright 1996-2012
J.F Kurose and K.W. Ross, All Rights Reserved
Chapter 2: outline
2.1 principles of network applications
2.2 Web and HTTP
2.3 FTP
2.4 electronic mail
2.5 DNS
2.6 P2P applications
2.7 socket programming with UDP and TCP
Application Layer
2-2
Chapter 2: application layer
our goals:
Application Layer
2-3
Some network apps
Application Layer
2-4
Creating a network app
write programs that:
no need to write software for network-core devices
Application Layer
2-5
application
transport
network
data link
physical
application
transport
network
data link
physical
application
transport
network
data link
physical
Application architectures
possible structure of applications:
Application Layer
2-6
Client-server architecture
server:
clients:
Application Layer
2-7
client/server
P2P architecture
Application Layer
2-8
peer-peer
Processes communicating
process: program running within a host
client process: process that initiates communication
server process: process that waits to be contacted
Application Layer
2-9
clients, servers
Sockets
Application Layer
2-10
Internet
controlled
by OS
controlled by
app developer
transport
application
physical
link
network
process
transport
application
physical
link
network
process
socket
Addressing processes
Application Layer
2-11
App-layer protocol defines
open protocols:
proprietary protocols:
Application Layer
2-12
What transport service does an app need?
data integrity
timing
Application Layer
2-13
throughput
security
Transport service requirements: common apps
Application Layer
2-14
application
file transfer
Web documents
real-time audio/video
stored audio/video
interactive games
text messaging
data loss
no loss
no loss
no loss
loss-tolerant
loss-tolerant
loss-tolerant
no loss
throughput
elastic
elastic
elastic
audio: 5kbps-1Mbps
video:10kbps-5Mbps
same as above
few kbps up
elastic
time sensitive
no
no
no
yes, 100’s msec
yes, few secs
yes, 100’s msec
yes and no
Internet transport protocols services
TCP service:
UDP service:
Q: why bother? Why is there a UDP?
Application Layer
2-15
Internet apps: application, transport protocols
Application Layer
2-16
application
remote terminal access
Web
file transfer
streaming multimedia
Internet telephony
application
layer protocol
SMTP [RFC 2821]
Telnet [RFC 854]
HTTP [RFC 2616]
FTP [RFC 959]
HTTP (e.g., YouTube), �RTP [RFC 1889]
SIP, RTP, proprietary
(e.g., Skype)
underlying
transport protocol
TCP
TCP
TCP
TCP
TCP or UDP
TCP or UDP
Securing TCP
TCP & UDP
SSL
SSL is at app layer
SSL socket API
Application Layer
2-17
Chapter 2: outline
2.1 principles of network applications
2.2 Web and HTTP
2.3 FTP
2.4 electronic mail
2.5 DNS
2.6 P2P applications
2.7 socket programming with UDP and TCP
Application Layer
2-18
Web and HTTP
First, a review…
Application Layer
2-19
www.someschool.edu/someDept/pic.gif
host name
path name
HTTP overview
HTTP: hypertext transfer protocol
Application Layer
2-20
PC running
Firefox browser
server
running
Apache Web
server
iphone running
Safari browser
HTTP request
HTTP response
HTTP request
HTTP response
HTTP overview (continued)
uses TCP:
HTTP is “stateless”
Application Layer
2-21
protocols that maintain “state” are complex!
aside
HTTP connections
non-persistent HTTP
persistent HTTP
Application Layer
2-22
Non-persistent HTTP
suppose user enters URL:
1a. HTTP client initiates TCP connection to HTTP server (process) at www.someSchool.edu on port 80
Application Layer
2-23
2. HTTP client sends HTTP request message (containing URL) into TCP connection socket. Message indicates that client wants object someDepartment/home.index
1b. HTTP server at host www.someSchool.edu waiting for TCP connection at port 80. “accepts” connection, notifying client
3. HTTP server receives request message, forms response message containing requested object, and sends message into its socket
time
(contains text,
references to 10
jpeg images)
www.someSchool.edu/someDepartment/home.index
Non-persistent HTTP (cont.)
5. HTTP client receives response message containing html file, displays html. Parsing html file, finds 10 referenced jpeg objects
Application Layer
2-24
6. Steps 1-5 repeated for each of 10 jpeg objects
4. HTTP server closes TCP connection.
time
Non-persistent HTTP: response time
RTT (definition): time for a small packet to travel from client to server and back
HTTP response time:
2RTT+ file transmission time
Application Layer
2-25
time to
transmit
file
initiate TCP
connection
RTT
request
file
RTT
file
received
time
time
Persistent HTTP
non-persistent HTTP issues:
persistent HTTP:
Application Layer
2-26
HTTP request message
Application Layer
2-27
request line
(GET, POST,
HEAD commands)
header
lines
carriage return,
line feed at start
of line indicates
end of header lines
GET /index.html HTTP/1.1\r\n
Host: www-net.cs.umass.edu\r\n
User-Agent: Firefox/3.6.10\r\n
Accept: text/html,application/xhtml+xml\r\n
Accept-Language: en-us,en;q=0.5\r\n
Accept-Encoding: gzip,deflate\r\n
Accept-Charset: ISO-8859-1,utf-8;q=0.7\r\n
Keep-Alive: 115\r\n
Connection: keep-alive\r\n
\r\n
carriage return character
line-feed character
HTTP request message: general format
Application Layer
2-28
request
line
header
lines
body
method
sp
sp
cr
lf
version
URL
cr
lf
value
header field name
cr
lf
value
header field name
~
~
~
~
cr
lf
entity body
~
~
~
~
Uploading form input
POST method:
URL method:
Application Layer
2-29
www.somesite.com/animalsearch?monkeys&banana
Method types
HTTP/1.0:
HTTP/1.1:
Application Layer
2-30
HTTP response message
Application Layer
2-31
status line
(protocol
status code
status phrase)
header
lines
data, e.g.,
requested
HTML file
HTTP/1.1 200 OK\r\n
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
ETag: "17dc6-a5c-bf716880"\r\n
Accept-Ranges: bytes\r\n
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
\r\n
data data data data data ...
HTTP response status codes
200 OK
301 Moved Permanently
400 Bad Request
404 Not Found
505 HTTP Version Not Supported
Application Layer
2-32
Trying out HTTP (client side) for yourself
1. Telnet to your favorite Web server:
Application Layer
2-33
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
telnet cis.poly.edu 80
2. type in a GET HTTP request:
GET /~ross/ HTTP/1.1
Host: cis.poly.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)
User-server state: cookies
many Web sites use cookies
four components:
1) cookie header line of HTTP response message
2) cookie header line in next HTTP request message
3) cookie file kept on user’s host, managed by user’s browser
4) back-end database at Web site
example:
Application Layer
2-34
Cookies: keeping “state” (cont.)
Application Layer
2-35
client
server
usual http response msg
usual http response msg
cookie file
one week later:
usual http request msg
cookie: 1678
cookie-
specific
action
access
ebay 8734
usual http request msg
Amazon server
creates ID
1678 for user
create
entry
usual http response
set-cookie: 1678
ebay 8734
amazon 1678
usual http request msg
cookie: 1678
cookie-
specific
action
access
ebay 8734
amazon 1678
backend
database
Cookies (continued)
what cookies can be used for:
Application Layer
2-36
cookies and privacy:
aside
how to keep “state”:
Web caches (proxy server)
Application Layer
2-37
goal: satisfy client request without involving origin server
client
proxy
server
client
HTTP request
HTTP response
HTTP request
HTTP request
origin
server
origin
server
HTTP response
HTTP response
More about Web caching
why Web caching?
Application Layer
2-38
Caching example:
Application Layer
2-39
origin
servers
public
Internet
institutional
network
1 Gbps LAN
1.54 Mbps
access link
assumptions:
consequences:
= 2 sec + minutes + usecs
problem!
Caching example: fatter access link
Application Layer
2-40
assumptions:
consequences:
= 2 sec + minutes + usecs
origin
servers
1.54 Mbps
access link
154 Mbps
154 Mbps
msecs
Cost: increased access link speed (not cheap!)
9.9%
public
Internet
institutional
network
1 Gbps LAN
Caching example: install local cache
institutional
network
1 Gbps LAN
Application Layer
2-41
origin
servers
1.54 Mbps
access link
local web
cache
assumptions:
consequences:
= 2 sec + minutes + usecs
?
?
How to compute link
utilization, delay?
Cost: web cache (cheap!)
public
Internet
Caching example: install local cache
Calculating access link utilization, delay with cache:
Application Layer
2-42
origin
servers
1.54 Mbps
access link
public
Internet
institutional
network
1 Gbps LAN
local web
cache
Conditional GET
If-modified-since: <date>
HTTP/1.0 304 Not Modified
Application Layer
2-43
HTTP request msg
If-modified-since: <date>
HTTP response
HTTP/1.0
304 Not Modified
object
not
modified
before
<date>
HTTP request msg
If-modified-since: <date>
HTTP response
HTTP/1.0 200 OK
<data>
object
modified
after
<date>
client
server
Chapter 2: outline
2.1 principles of network applications
2.2 Web and HTTP
2.3 FTP
2.4 electronic mail
2.5 DNS
2.6 P2P applications
2.7 socket programming with UDP and TCP
Application Layer
2-44
FTP: the file transfer protocol
Application Layer
2-45
file transfer
FTP
server
FTP
user
interface
FTP
client
local file
system
remote file
system
user
at host
FTP: separate control, data connections
Application Layer
2-46
FTP
client
FTP
server
TCP control connection,
server port 21
TCP data connection,
server port 20
FTP commands, responses
sample commands:
sample return codes
Application Layer
2-47
Chapter 2: outline
2.1 principles of network applications
2.2 Web and HTTP
2.3 FTP
2.4 electronic mail
2.5 DNS
2.6 P2P applications
2.7 socket programming with UDP and TCP
Application Layer
2-48
Electronic mail
Three major components:
User Agent
Application Layer
2-49
user mailbox
outgoing
message queue
server
server
server
SMTP
SMTP
SMTP
user
agent
user
agent
user
agent
user
agent
user
agent
user
agent
Electronic mail: mail servers
mail servers:
Application Layer
2-50
server
server
server
SMTP
SMTP
SMTP
user
agent
user
agent
user
agent
user
agent
user
agent
user
agent
Electronic Mail: SMTP [RFC 2821]
Application Layer
2-51
Scenario: Alice sends message to Bob
1) Alice uses UA to compose message “to” bob@someschool.edu
2) Alice’s UA sends message to her mail server; message placed in message queue
3) client side of SMTP opens TCP connection with Bob’s mail server
4) SMTP client sends Alice’s message over the TCP connection
5) Bob’s mail server places the message in Bob’s mailbox
6) Bob invokes his user agent to read message
Application Layer
2-52
user
agent
server
server
1
2
3
4
5
6
Alice’s mail server
Bob’s mail server
user
agent
Sample SMTP interaction
Application Layer
2-53
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
Try SMTP interaction for yourself:
above lets you send email without using email client (reader)
Application Layer
2-54
SMTP: final words
comparison with HTTP:
Application Layer
2-55
Mail message format
SMTP: protocol for exchanging email msgs
RFC 822: standard for text message format:
different from SMTP MAIL FROM, RCPT TO: commands!
Application Layer
2-56
header
body
blank
line
Mail access protocols
Application Layer
2-57
sender’s mail
server
SMTP
SMTP
mail access
protocol
receiver’s mail
server
(e.g., POP,
IMAP)
user
agent
user
agent
POP3 protocol
authorization phase
transaction phase, client:
Application Layer
2-58
C: list
S: 1 498
S: 2 912
S: .
C: retr 1
S: <message 1 contents>
S: .
C: dele 1
C: retr 2
S: <message 1 contents>
S: .
C: dele 2
C: quit
S: +OK POP3 server signing off
S: +OK POP3 server ready
C: user bob
S: +OK
C: pass hungry
S: +OK user successfully logged on
POP3 (more) and IMAP
more about POP3
IMAP
Application Layer
2-59
Chapter 2: outline
2.1 principles of network applications
2.2 Web and HTTP
2.3 FTP
2.4 electronic mail
2.5 DNS
2.6 P2P applications
2.7 socket programming with UDP and TCP
Application Layer
2-60
DNS: domain name system
people: many identifiers:
Internet hosts, routers:
Q: how to map between IP address and name, and vice versa ?
Domain Name System:
Application Layer
2-61
DNS: services, structure
why not centralize DNS?
DNS services
Application Layer
2-62
A: doesn’t scale!
DNS: a distributed, hierarchical database
client wants IP for www.amazon.com; 1st approx:
Application Layer
2-63
Root DNS Servers
com DNS servers
org DNS servers
edu DNS servers
poly.edu
DNS servers
umass.edu
DNS servers
yahoo.com
DNS servers
amazon.com
DNS servers
pbs.org
DNS servers
…
…
DNS: root name servers
Application Layer
2-64
13 root name “servers” worldwide
a. Verisign, Los Angeles CA
(5 other sites)
b. USC-ISI Marina del Rey, CA
l. ICANN Los Angeles, CA
(41 other sites)
e. NASA Mt View, CA
f. Internet Software C.
Palo Alto, CA (and 48 other sites)
i. Netnod, Stockholm (37 other sites)
k. RIPE London (17 other sites)
m. WIDE Tokyo
(5 other sites)
c. Cogent, Herndon, VA (5 other sites)
d. U Maryland College Park, MD
h. ARL Aberdeen, MD
j. Verisign, Dulles VA (69 other sites )
g. US DoD Columbus, OH (5 other sites)
TLD, authoritative servers
top-level domain (TLD) servers:
authoritative DNS servers:
Application Layer
2-65
Local DNS name server
Application Layer
2-66
DNS name �resolution example
Application Layer
2-67
requesting host
cis.poly.edu
gaia.cs.umass.edu
root DNS server
local DNS server
dns.poly.edu
1
2
3
4
5
6
authoritative DNS server
dns.cs.umass.edu
7
8
TLD DNS server
iterated query:
Application Layer
2-68
4
5
6
3
recursive query:
requesting host
cis.poly.edu
gaia.cs.umass.edu
root DNS server
local DNS server
dns.poly.edu
1
2
7
authoritative DNS server
dns.cs.umass.edu
8
DNS name �resolution example
TLD DNS
server
DNS: caching, updating records
Application Layer
2-69
DNS records
DNS: distributed db storing resource records (RR)
type=NS
Application Layer
2-70
RR format: (name, value, type, ttl)
type=A
type=CNAME
servereast.backup2.ibm.com
type=MX
DNS protocol, messages
Application Layer
2-71
msg header
identification
flags
# questions
questions (variable # of questions)
# additional RRs
# authority RRs
# answer RRs
answers (variable # of RRs)
authority (variable # of RRs)
additional info (variable # of RRs)
2 bytes
2 bytes
Application Layer
2-72
name, type fields
for a query
RRs in response
to query
records for
authoritative servers
additional “helpful”
info that may be used
identification
flags
# questions
questions (variable # of questions)
# additional RRs
# authority RRs
# answer RRs
answers (variable # of RRs)
authority (variable # of RRs)
additional info (variable # of RRs)
DNS protocol, messages
2 bytes
2 bytes
Inserting records into DNS
(dns1.networkutopia.com, 212.212.212.1, A)
Application Layer
2-73
Attacking DNS
DDoS attacks
Redirect attacks
Exploit DNS for DDoS
Application Layer
2-74
Chapter 2: outline
2.1 principles of network applications
2.2 Web and HTTP
2.3 FTP
2.4 electronic mail
2.5 DNS
2.6 P2P applications
2.7 socket programming with UDP and TCP
Application Layer
2-75
Pure P2P architecture
examples:
Application Layer
2-76
File distribution: client-server vs P2P
Question: how much time to distribute file (size F) from one server to N peers?
Application Layer
2-77
us
uN
dN
server
network (with abundant
bandwidth)
file, size F
us: server upload capacity
ui: peer i upload capacity
di: peer i download capacity
u2
d2
u1
d1
di
ui
File distribution time: client-server
Application Layer
2-78
increases linearly in N
time to distribute F
to N clients using
client-server approach
Dc-s > max{NF/us,,F/dmin}
us
network
di
ui
F
File distribution time: P2P
Application Layer
2-79
time to distribute F
to N clients using
P2P approach
us
network
di
ui
F
DP2P > max{F/us,,F/dmin,,NF/(us + Σui)}
… but so does this, as each peer brings service capacity
increases linearly in N …
Application Layer
2-80
Client-server vs. P2P: example
client upload rate = u, F/u = 1 hour, us = 10u, dmin ≥ us
P2P file distribution: BitTorrent
Application Layer
2-81
tracker: tracks peers
participating in torrent
torrent: group of peers exchanging chunks of a file
Alice arrives …
… obtains list
of peers from tracker
… and begins exchanging
file chunks with peers in torrent
Application Layer
2-82
P2P file distribution: BitTorrent
BitTorrent: requesting, sending file chunks
requesting chunks:
Application Layer
2-83
sending chunks: tit-for-tat
BitTorrent: tit-for-tat
Application Layer
2-84
(1) Alice “optimistically unchokes” Bob
(2) Alice becomes one of Bob’s top-four providers; Bob reciprocates
(3) Bob becomes one of Alice’s top-four providers
higher upload rate: find better trading partners, get file faster !
Distributed Hash Table (DHT)
Simple Database
Key | Value |
John Washington | 132-54-3570 |
Diana Louise Jones | 761-55-3791 |
Xiaoming Liu | 385-41-0902 |
Rakesh Gopal | 441-89-1956 |
Linda Cohen | 217-66-5609 |
……. | ……… |
Lisa Kobayashi | 177-23-0199 |
Simple database with(key, value) pairs:
Hash Table
Original Key | Key | Value |
John Washington | 8962458 | 132-54-3570 |
Diana Louise Jones | 7800356 | 761-55-3791 |
Xiaoming Liu | 1567109 | 385-41-0902 |
Rakesh Gopal | 2360012 | 441-89-1956 |
Linda Cohen | 5430938 | 217-66-5609 |
……. | | ……… |
Lisa Kobayashi | 9290124 | 177-23-0199 |
Distributed Hash Table (DHT)
Assign key-value pairs to peers
Circular DHT
1
12
13
25
32
40
48
60
“overlay network”
Resolving a query
1
12
13
25
32
40
48
60
What is the value�associated with key 53 ?
value
O(N) messages
on avgerage to resolve
query, when there
are N peers
Circular DHT with shortcuts
1
12
13
25
32
40
48
60
What is the value for
key 53
value
Peer churn
example: peer 5 abruptly leaves
1
3
4
5
8
10
12
15
handling peer churn:
Peer churn
example: peer 5 abruptly leaves
1
3
4
8
10
12
15
handling peer churn:
Chapter 2: outline
2.1 principles of network applications
2.2 Web and HTTP
2.3 FTP
2.4 electronic mail
2.5 DNS
2.6 P2P applications
2.7 socket programming with UDP and TCP
Application Layer
2-95
Socket programming
goal: learn how to build client/server applications that communicate using sockets
socket: door between application process and end-end-transport protocol
Application Layer
2-96
Internet
controlled
by OS
controlled by
app developer
transport
application
physical
link
network
process
transport
application
physical
link
network
process
socket
Socket programming
Two socket types for two transport services:
Application Layer
2-97
Application Example:
Socket programming with UDP
UDP: no “connection” between client & server
UDP: transmitted data may be lost or received out-of-order
Application viewpoint:
Application Layer
2-98
Client/server socket interaction: UDP
close
clientSocket
read datagram from
clientSocket
create socket:
clientSocket =
socket(AF_INET,SOCK_DGRAM)
Create datagram with server IP and
port=x; send datagram via�clientSocket
create socket, port= x:
serverSocket =
socket(AF_INET,SOCK_DGRAM)
read datagram from
serverSocket
write reply to
serverSocket
specifying �client address,
port number
Application 2-99
server (running on serverIP)
client
Application Layer
2-100
Example app: UDP client
from socket import *
serverName = ‘hostname’
serverPort = 12000
clientSocket = socket(socket.AF_INET,
socket.SOCK_DGRAM)
message = raw_input(’Input lowercase sentence:’)
clientSocket.sendto(message,(serverName, serverPort))
modifiedMessage, serverAddress =
clientSocket.recvfrom(2048)
print modifiedMessage
clientSocket.close()
Python UDPClient
include Python’s socket
library
create UDP socket for server
get user keyboard
input
Attach server name, port to message; send into socket
print out received string and close socket
read reply characters from
socket into string
Application Layer
2-101
Example app: UDP server
from socket import *
serverPort = 12000
serverSocket = socket(AF_INET, SOCK_DGRAM)
serverSocket.bind(('', serverPort))
print “The server is ready to receive”
while 1:
message, clientAddress = serverSocket.recvfrom(2048)
modifiedMessage = message.upper()
serverSocket.sendto(modifiedMessage, clientAddress)
Python UDPServer
create UDP socket
bind socket to local port number 12000
loop forever
Read from UDP socket into message, getting client’s address (client IP and port)
send upper case string back to this client
Socket programming with TCP
client must contact server
client contacts server by:
Application Layer
2-102
TCP provides reliable, in-order
byte-stream transfer (“pipe”)
between client and server
application viewpoint:
Client/server socket interaction: TCP
Application Layer
2-103
wait for incoming
connection request
connectionSocket =
serverSocket.accept()
create socket,
port=x, for incoming request:
serverSocket = socket()
create socket,
connect to hostid, port=x
clientSocket = socket()
server (running on hostid)
client
send request using
clientSocket
read request from
connectionSocket
write reply to
connectionSocket
TCP
connection setup
close
connectionSocket
read reply from
clientSocket
close
clientSocket
Application Layer
2-104
Example app: TCP client
from socket import *
serverName = ’servername’
serverPort = 12000
clientSocket = socket(AF_INET, SOCK_STREAM)
clientSocket.connect((serverName,serverPort))
sentence = raw_input(‘Input lowercase sentence:’)
clientSocket.send(sentence)
modifiedSentence = clientSocket.recv(1024)
print ‘From Server:’, modifiedSentence
clientSocket.close()
Python TCPClient
create TCP socket for server, remote port 12000
No need to attach server name, port
Application Layer
2-105
Example app: TCP server
from socket import *
serverPort = 12000
serverSocket = socket(AF_INET,SOCK_STREAM)
serverSocket.bind((‘’,serverPort))
serverSocket.listen(1)
print ‘The server is ready to receive’
while 1:
connectionSocket, addr = serverSocket.accept()
sentence = connectionSocket.recv(1024)
capitalizedSentence = sentence.upper()
connectionSocket.send(capitalizedSentence)
connectionSocket.close()
Python TCPServer
create TCP welcoming
socket
server begins listening for incoming TCP requests
loop forever
server waits on accept()
for incoming requests, new socket created on return
read bytes from socket (but not address as in UDP)
close connection to this client (but not welcoming socket)
Chapter 2: summary
our study of network apps now complete!
Application Layer
2-106
Application Layer
2-107
important themes:
Chapter 2: summary
most importantly: learned about protocols!
Introduction
1-108
Chapter 1�Additional Slides
Transport (TCP/UDP)
Network (IP)
Link (Ethernet)
Physical
application
(www browser,
email client)
application
OS
packet
capture
(pcap)
packet
analyzer
copy of all Ethernet frames sent/received