Download 3rd Edition: Chapter 2

Document related concepts
no text concepts found
Transcript
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
represent a lot of work on our part. In return for use, we only ask the
following:
 If you use these slides (e.g., in a class) in substantially unaltered form,
that you mention their source (after all, we’d like people to use our book!)
 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
note our copyright of this material.
Computer Networking:
A Top Down Approach
Featuring the Internet,
3rd edition.
Jim Kurose, Keith Ross
Addison-Wesley, July
2004.
Thanks and enjoy! JFK/KWR
All material copyright 1996-2005
J.F Kurose and K.W. Ross, All Rights Reserved
2: Application Layer
1
Chapter 2: Application layer
 2.1 Principles of
network applications
 2.2 Web and HTTP
 2.3 FTP
 2.4 Electronic Mail

SMTP, POP3, IMAP
 2.5 DNS
 2.6 P2P file sharing
 2.7 Socket programming
with TCP
 2.8 Socket programming
with UDP
 2.9 Building a Web
server
2: Application Layer
2
Chapter 2: Application Layer
Our goals:
 conceptual,
implementation
aspects of network
application protocols
 transport-layer
service models
 client-server
paradigm

peer-to-peer
paradigm
 learn about protocols
by examining popular
application-level
protocols




HTTP
FTP
SMTP / POP3 / IMAP
DNS
 programming network
applications

socket API
2: Application Layer
3
Some network apps
 E-mail
 Internet telephone
 Web
 Real-time video
 Instant messaging
 Remote login
 P2P file sharing
conference
 Massive parallel
computing
 Multi-user network
games
 Streaming stored
video clips
2: Application Layer
4
Creating a network app
Write programs that



run on different end
systems and
communicate over a
network.
e.g., Web: Web server
software communicates
with browser software
little software written for
devices in network core


network core devices do
not run user application
code
application on end systems
allows for rapid app
development, propagation
application
transport
network
data link
physical
application
transport
network
data link
physical
application
transport
network
data link
physical
2: Application Layer
5
Chapter 2: Application layer
 2.1 Principles of
network applications
 2.2 Web and HTTP
 2.3 FTP
 2.4 Electronic Mail

SMTP, POP3, IMAP
 2.5 DNS
 2.6 P2P file sharing
 2.7 Socket programming
with TCP
 2.8 Socket programming
with UDP
 2.9 Building a Web
server
2: Application Layer
6
Application layer functions
 Applications
 Implement desired functionality within application
protocols when no underlying network service provides
support
• Mail, Web, News, P2P, etc….

Other functions
•
•
•
•
•
•
•
•
Security (S/MIME, PGP, S-HTTP)
Delivery semantics (multicast overlays, anycast)
Reliable data transfer (reliable multicast, reliable UDP)
Quality of service (QoS overlays, scheduling)
Congestion control (Non-TCP applications)
Flow control (Non-TCP applications)
Naming (DNS, URLs)
Routing (overlays)
 Functionality that is common rolled into libraries
and “middleware”
2: Application Layer
7
Application architectures
 Client-server
 Peer-to-peer (P2P)
 Hybrid of client-server and P2P
2: Application Layer
8
Client-server architecture
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
9
Pure P2P architecture
 every participant is both a
client and a server to other
clients


arbitrary end systems
directly communicate
Resource costs shared
 peers are intermittently
connected, change IP
addresses
 example: Gnutella
Highly scalable
But difficult to manage
2: Application Layer
10
Hybrid of client-server and P2P
Napster
File transfer P2P
 File search centralized:

• Peers register content at central server
• Peers query same central server to locate content
Instant messaging
Chatting between two users is P2P
 Presence detection/location centralized:

• 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
11
Processes communicating
Process: program running
within a host.
 within same host, two
processes communicate
using inter-process
communication (defined
by OS).
 processes in different
hosts communicate by
exchanging messages
Client process: process
that initiates
communication
Server process: process
that waits to be
contacted
 Note: applications with
P2P architectures have
client processes &
server processes
2: Application Layer
12
Sockets
 process sends/receives
messages to/from its
socket
 socket analogous to door


sending process shoves
message out door
sending process relies on
transport infrastructure
on other side of door which
brings message to socket
at receiving process
host or
server
host or
server
process
controlled by
app developer
process
socket
socket
TCP with
buffers,
variables
Internet
TCP with
buffers,
variables
controlled
by OS
 API: (1) choice of transport protocol; (2) ability to fix
a few parameters (lots more on this later)
2: Application Layer
13
Addressing processes
 For a process to
receive messages, it
must have an identifier
 A host has a unique32bit IP address
 Q: does the IP address
of the host on which
the process runs
suffice for identifying
the process?
 Answer: No, many
processes can be
running on same host
 Identifier includes
both the IP address
and port numbers
associated with the
process on the host.
 Example port numbers:


HTTP server: 80
Mail server: 25
 More on this later
2: Application Layer
14
App-layer protocol defines
 Types of messages
exchanged, e.g., request
& response messages
 Syntax of message
types: what fields in
messages & how fields
are delineated
 Semantics of the fields,
i.e., meaning of
information in fields
 Rules for when and how
processes send &
respond to messages
Public-domain protocols:
 defined in RFCs
 allows for
interoperability
 e.g., HTTP, SMTP
Proprietary protocols:
 e.g., KaZaA
2: Application Layer
15
What transport service does an app need?
Data loss
 some apps (e.g., audio) can
tolerate some loss
 other apps (e.g., file
transfer, telnet) require
100% reliable data
transfer
Timing
 some apps (e.g.,
Internet telephony,
interactive games)
require low delay to be
“effective”
Bandwidth
 some apps (e.g.,
multimedia) require
minimum amount of
bandwidth to be
“effective”
 other apps (“elastic
apps”) make use of
whatever bandwidth
they get
2: Application Layer
16
Transport service requirements of common apps
Data loss
Bandwidth
Time Sensitive
file transfer
e-mail
Web documents
real-time audio/video
no loss
no loss
no loss
loss-tolerant
no
no
no
yes, 100’s msec
stored audio/video
interactive games
instant messaging
loss-tolerant
loss-tolerant
no loss
elastic
elastic
elastic
audio: 5kbps-1Mbps
video:10kbps-5Mbps
same as above
few kbps up
elastic
Application
yes, few secs
yes, 100’s msec
yes and no
2: Application Layer
17
Internet transport protocols services
TCP service:
 connection-oriented: setup




required between client and
server processes
reliable transport between
sending and receiving process
flow control: sender won’t
overwhelm receiver
congestion control: throttle
sender when network
overloaded
does not provide: timing,
minimum bandwidth
guarantees
UDP service:
 unreliable data transfer
between sending and
receiving process
 does not provide:
connection setup,
reliability, flow control,
congestion control, timing,
or bandwidth guarantee
Q: why bother? Why is
there a UDP?
2: Application Layer
18
Internet apps: application, transport protocols
Application
e-mail
remote terminal access
Web
file transfer
streaming multimedia
Internet telephony
Application
layer protocol
Underlying
transport protocol
SMTP [RFC 2821]
Telnet [RFC 854]
HTTP [RFC 2616]
FTP [RFC 959]
proprietary
(e.g. RealNetworks)
proprietary
(e.g., Vonage,Dialpad)
TCP
TCP
TCP
TCP
TCP or UDP
typically UDP
2: Application Layer
19
Chapter 2: Application layer
 2.1 Principles of
network applications
 2.2 Web and HTTP
 2.3 FTP
 2.4 Electronic Mail

SMTP, POP3, IMAP
 2.5 DNS
 2.6 P2P file sharing
 2.7 Socket programming
with TCP
 2.8 Socket programming
with UDP
 2.9 Building a Web
server
2: Application Layer
20
Programming application
protocols
Goal: learn how to build client/server application that
communicate using sockets without understanding underlying
functions of TCP/IP
 Many possible programming interfaces
• Socket APIs (most common)
– BSD C Socket API (most common)
– Java socket API
– Python socket API
• Other APIs
– Client-side Java URLconnections
– Server-side Java servlets
– Python urllib
– Python HTTPServer
– RPC, CORBA, Java RMI (not covered)
2: Application Layer
21
Socket programming
Socket API
 introduced in BSD4.1 UNIX,
1981
 explicitly created, used,
released by apps
 client/server paradigm
 two types of transport
service via socket API:
 unreliable datagram
 reliable, byte streamoriented
socket
a host-local,
application-created,
OS-controlled interface
(a “door”) into which
application process can
both send and
receive messages to/from
another application
process
2: Application Layer
22
Socket-programming using TCP
Socket: a door between application process and endend-transport protocol (UCP or TCP)
TCP service: reliable transfer of bytes from one
process to another
controlled by
application
developer
controlled by
operating
system
process
process
socket
TCP with
buffers,
variables
host or
server
internet
socket
TCP with
buffers,
variables
controlled by
application
developer
controlled by
operating
system
host or
server
2: Application Layer
23
Socket programming with TCP
Client must contact server
 server process must first
be running
 server must have created
socket (door) that
welcomes client’s contact
Client contacts server by:
 creating client-local TCP
socket
 specifying IP address, port
number of server process
 When client creates
socket: client TCP
establishes connection to
server TCP
 When contacted by client,
server TCP creates new
socket for server process to
communicate with client
 allows server to talk with
multiple clients
 source port numbers
used to distinguish
clients (more in Chap 3)
application viewpoint
TCP provides reliable, in-order
transfer of bytes (“pipe”)
between client and server
2: Application Layer
24
Sockets in action
*,SIP:80
*,SIP:80
CIP:1099,SIP:80
CIP:1100,SIP:80
CIP:1099,SIP:80
*,SIP:80
CIP:1099,SIP:80
CIP:1099,SIP:80
CIP:1100,SIP:80
CIP:1099,SIP:80
CIP:1100,SIP:80
2: Application Layer
25
BSD sockets in C/Unix
 Socket API (socket.h)
• socket(): create unnamed socket (data structure)
– UDP (SOCK_DGRAM), TCP (SOCK_STREAM)
– IP (SOCK_RAW)
• bind(): name socket (bind local address to socket)
• listen(): enable socket to accept connections
• accept(): get connect() request from listen queue, allocate
file descriptor for new socket
• connect(): initiate connection on a socket (TCP handshake)
• send(), sendto(), sendmsg(), writev(), write(): send data
• recv(), recvfrom(), recvmsg(), readv(), read(): receive data
• setsockopt(), getsockopt(): set socket options (such as
buffer sizes, flag fields)
• close(), shutdown(): teardown connection
2: Application Layer
26
BSD sockets in action
UDP example
client
server
socket()
socket()
bind()
bind()
TCP example
client
server
socket()
socket()
bind()
connect()
listen()
sendto()
accept()
recvfrom()
write()
read()
sendto()
write()
recvfrom()
read()
2: Application Layer
27
BSD example
 http://www.thefengs.com/wuchang/work/cou
rses/cs594/socket_example
 TCP socket code

Client
• tcpcli.c

Server
• tcpserv.c
 UDP socket code
 Client
• udpcli.c

Server
• udpserv.c
2: Application Layer
28
Java network programming
Java network applications
java.net package
System-dependent
implementations
2: Application Layer
29
Java installation on linuxlab
 J2SE

javac
• java compiler

java
• java interpreter
• http://www.ibiblio.org/javafaq/javatut
orial.html
2: Application Layer
30
java.net classes
 Low-level networking classes (Sockets and
Packets)
 High-level URL networking classes
 http://java.sun.com/j2se/1.5.0/docs/api/
 java.lang.Object






java.net.Socket
java.net.ServerSocket
java.net.DatagramSocket
java.net.DatagramPacket
java.net.URL
java.net.URLConnection
• java.net.HttpURLConnection


java.net.URLencoder
java.net.InetAddress
2: Application Layer
31
java.net.Socket
 Constructors
 Socket(InetAddress, int)
 Socket(String, int)
 Socket(InetAddress, int, InetAddress, int)
 Some methods
 getInputStream()
 getOutputStream
 getInetAddress()
 getPort()
 getLocalAddress()
 getLocalPort()
 get/set individual socket options
2: Application Layer
32
java.net.ServerSocket
 Constructors
ServerSocket(int)
 ServerSocket(int, int) // backlog specified
 ServerSocket(int, int, InetAddress) // local
address and backlog specified

 Some methods
 accept()
 getInetAddress()
 getLocalPort()
2: Application Layer
33
Stream jargon for Java
network programming
 A stream is a sequence of
characters that flow into
or out of a process.
 An input stream is
attached to some input
source for the process,
e.g., keyboard or socket.
 An output stream is
attached to an output
source, e.g., monitor or
socket.
2: Application Layer
34
Socket programming with TCP
Client
Process
process
input
stream
output
stream
inFromServer
1) client reads line from
standard input (inFromUser
stream) , sends to server via
socket (outToServer
stream)
2) server reads line from socket
3) server converts line to
uppercase, sends back to
client
4) client reads, prints modified
line from socket
(inFromServer stream)
outToServer
Example client-server app:
monitor
inFromUser
keyboard
input
stream
client
TCP
clientSocket
socket
to network
TCP
socket
from network
2: Application Layer
35
Client/server socket interaction: TCP
Server (running on hostid)
Client
create socket,
port=x, for
incoming request:
welcomeSocket =
ServerSocket()
TCP
wait for incoming
connection request connection
connectionSocket =
welcomeSocket.accept()
read request from
connectionSocket
write reply to
connectionSocket
close
connectionSocket
setup
create socket,
connect to hostid, port=x
clientSocket =
Socket()
send request using
clientSocket
read reply from
clientSocket
close
clientSocket
2: Application Layer
36
Example: Java client (TCP)
import java.io.*;
import java.net.*;
class TCPClient {
public static void main(String argv[]) throws Exception
{
String sentence;
String modifiedSentence;
Create
input stream
Create
client socket,
connect to server
Create
output stream
attached to socket
BufferedReader inFromUser =
new BufferedReader(new InputStreamReader(System.in));
Socket clientSocket = new Socket("hostname", 6789);
DataOutputStream outToServer =
new DataOutputStream(clientSocket.getOutputStream());
2: Application Layer
37
Example: Java client (TCP), cont.
Create
input stream
attached to socket
BufferedReader inFromServer =
new BufferedReader(new
InputStreamReader(clientSocket.getInputStream()));
sentence = inFromUser.readLine();
Send line
to server
outToServer.writeBytes(sentence + '\n');
Read line
from server
modifiedSentence = inFromServer.readLine();
System.out.println("FROM SERVER: " + modifiedSentence);
clientSocket.close();
}
}
2: Application Layer
38
Example: Java server (TCP)
import java.io.*;
import java.net.*;
class TCPServer {
Create
welcoming socket
at port 6789
Wait, on welcoming
socket for contact
by client
Create input
stream, attached
to socket
public static void main(String argv[]) throws Exception
{
String clientSentence;
String capitalizedSentence;
ServerSocket welcomeSocket = new ServerSocket(6789);
while(true) {
Socket connectionSocket = welcomeSocket.accept();
BufferedReader inFromClient =
new BufferedReader(new
InputStreamReader(connectionSocket.getInputStream()));
2: Application Layer
39
Example: Java server (TCP), cont
Create output
stream, attached
to socket
DataOutputStream outToClient =
new DataOutputStream(connectionSocket.getOutputStream());
Read in line
from socket
clientSentence = inFromClient.readLine();
capitalizedSentence = clientSentence.toUpperCase() + '\n';
Write out line
to socket
outToClient.writeBytes(capitalizedSentence);
}
}
}
End of while loop,
loop back and wait for
another client connection
2: Application Layer
40
Chapter 2: Application layer
 2.1 Principles of
network applications
 2.2 Web and HTTP
 2.3 FTP
 2.4 Electronic Mail

SMTP, POP3, IMAP
 2.5 DNS
 2.6 P2P file sharing
 2.7 Socket programming
with TCP
 2.8 Socket programming
with UDP
 2.9 Building a Web
server
2: Application Layer
41
Socket programming with UDP
UDP: no “connection” between
client and server
 no handshaking
 sender explicitly attaches
IP address and port of
destination to each packet
 server must extract IP
address, port of sender
from received packet
application viewpoint
UDP provides unreliable transfer
of groups of bytes (“datagrams”)
between client and server
UDP: transmitted data may be
received out of order, or
lost
2: Application Layer
42
java.net.DatagramSocket
 Constructors
 DatagramSocket()
 DatagramSocket(int) // bind to specific port
 DatagramSocket(int, InetAddress) // specify
local address
 Some methods
 getLocalAddress()
 getLocalPort()
 receive(DatagramPacket)
 send(DatagramPacket)
 get/set individual socket options
2: Application Layer
43
java.net.DatagramPacket
 Constructors
 DatagramPacket(byte[], int) // receiving packets
 DatagramPacket(byte[], int, InetAddress, int) // sending
packets
 Some methods
 getAddress() // remote address
 getPort() // remote port
 getLength() // get packet length
 getData() // return data received or to be sent
 setAddress(InetAddress) // set remote address
 setData(byte[]) // set packet data
 setLength(int) // set packet length
 setPort(int) // set remote port
2: Application Layer
44
Client/server socket interaction: UDP
Server (running on hostid)
create socket,
port=x, for
incoming request:
serverSocket =
DatagramSocket()
read request from
serverSocket
write reply to
serverSocket
specifying client
host address,
port number
Client
create socket,
clientSocket =
DatagramSocket()
Create, address (hostid, port=x,
send datagram request
using clientSocket
read reply from
clientSocket
close
clientSocket
2: Application Layer
45
Example: Java client (UDP)
input
stream
Client
process
monitor
inFromUser
keyboard
Process
Input: receives
packet (recall
thatTCP received
“byte stream”)
UDP
packet
receivePacket
packet (recall
that TCP sent
“byte stream”)
sendPacket
Output: sends
client
UDP
clientSocket
socket
to network
UDP
packet
UDP
socket
from network
2: Application Layer
46
Example: Java client (UDP)
import java.io.*;
import java.net.*;
Create
input stream
Create
client socket
Translate
hostname to IP
address using DNS
class UDPClient {
public static void main(String args[]) throws Exception
{
BufferedReader inFromUser =
new BufferedReader(new InputStreamReader(System.in));
DatagramSocket clientSocket = new DatagramSocket();
InetAddress IPAddress = InetAddress.getByName("hostname");
byte[] sendData = new byte[1024];
byte[] receiveData = new byte[1024];
String sentence = inFromUser.readLine();
sendData = sentence.getBytes();
2: Application Layer
47
Example: Java client (UDP), cont.
Create datagram
with data-to-send,
length, IP addr, port
DatagramPacket sendPacket =
new DatagramPacket(sendData, sendData.length, IPAddress, 9876);
Send datagram
to server
clientSocket.send(sendPacket);
Read datagram
from server
clientSocket.receive(receivePacket);
DatagramPacket receivePacket =
new DatagramPacket(receiveData, receiveData.length);
String modifiedSentence =
new String(receivePacket.getData());
System.out.println("FROM SERVER:" + modifiedSentence);
clientSocket.close();
}
}
2: Application Layer
48
Example: Java server (UDP)
import java.io.*;
import java.net.*;
Create
datagram socket
at port 9876
class UDPServer {
public static void main(String args[]) throws Exception
{
DatagramSocket serverSocket = new DatagramSocket(9876);
byte[] receiveData = new byte[1024];
byte[] sendData = new byte[1024];
while(true)
{
Create space for
received datagram
Receive
datagram
DatagramPacket receivePacket =
new DatagramPacket(receiveData, receiveData.length);
serverSocket.receive(receivePacket);
2: Application Layer
49
Example: Java server (UDP), cont
String sentence = new String(receivePacket.getData());
Get IP addr
port #, of
sender
InetAddress IPAddress = receivePacket.getAddress();
int port = receivePacket.getPort();
String capitalizedSentence = sentence.toUpperCase();
sendData = capitalizedSentence.getBytes();
Create datagram
to send to client
DatagramPacket sendPacket =
new DatagramPacket(sendData, sendData.length, IPAddress,
port);
Write out
datagram
to socket
serverSocket.send(sendPacket);
}
}
}
End of while loop,
loop back and wait for
another datagram
2: Application Layer
50
High-level Java networking
classes
 Socket/Packet
Low level building blocks
 Must implement all application-level logic

 Many protocols based on URLs and/or
tunneled in HTTP
Program at a higher-level to hide underlying
protocol details
 Do not re-implement HTTP, URL parsing, MIME
handling for each application

2: Application Layer
51
High-level client-side Java
networking classes
 java.net.URL

Represent a URL object
 java.net.URLConnection
 Represent a connection to a URL which can be
read and written from
 java.net.HttpURLConnection
 Subclass of URLConnection for http:// URLs
 Example
2: Application Layer
52
Java high-level client-side
networking classes example
 http://www.thefengs.com/wuchang/work/c
ourses/cs594/java_example
import java.net.*;
import java.io.*;
public class Test {
public static void main(String argv[]) {
try {
URL u=new URL(http://www.google.com/);
URLConnection uc=u.openConnection();
Object o = (Object) uc.getContent();
} catch (Exception e) {
}
}
2: Application Layer
53
High-level server-side Java
networking classes
 Servlets
 Dynamically generate content
 Implement common protocol header logic
• Example http servlets
– Cookies
– Content-type
– Content-length
 Servlet classes
 javax.servlet.Servlet javax.servlet.HttpServlet
• init()
• service()
• destroy()


javax.servlet.ServletRequest
javax.servlet.ServletResponse
javax.servlet.HttpServletRequest
javax.servlet.HttpServletResponse
2: Application Layer
54
Python network programming
Python network applications
Python network packages
(socket, URLlib, HTTPServer)
System-dependent
implementations
2: Application Layer
55
Python network programming
 Python
Scripting language
 No compilation required
 Language reference: http://www.python.org
 Provides APIs similar to Java

• socket
– Low-level socket interface
• urllib
– HTTP client
• SimpleHTTPServer
– HTTP server
2: Application Layer
56
Python sockets
 Similar to C and Java

Client
import socket
host = “localhost”
port = 7
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((host,port))
s.send(“some data to echo”)
print s.recv(20)
s.close
2: Application Layer
57
Python sockets
 Similar to C and Java

Server
import socket
host = “”
port = 7
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind((host,port))
s.listen(1)
while (1):
conn, addr = s.accept()
data = conn.recv(20)
conn.send(data)
conn.close()
2: Application Layer
58
Python urllib/urllib2
 Client-side HTTP code similar to Java’s
java.net.URLConnection

Hides socket creation, HTTP request
formatting, HTTP response parsing
Python urllib
Python urllib2
url = sys.argv[1]
sock = urllib.urlopen(url)
htmlSource = sock.read()
sock.close()
print htmlSource
url = sys.argv[1]
txdata = None
txheaders = {
‘Accept-Language’: ‘en-us’
}
req = urllib2.Request(url, txdata, txheaders)
u = urlib2.urlopen(req)
headers = u.info()
2: Application Layer
59
print u.read()
Python BasicHTTPServer
 Server-side HTTP processing libraries
javax.servlet.HTTPServlet
Hides socket creation, HTTP request parsing,
HTTP response formatting
 SocketServer.TCPServer.BaseHTTPServer

2: Application Layer
60
Python network programming
URLs
 http://docs.python.org/lib/internet.html
 http://docs.python.org/lib/module-socket.html
 http://docs.python.org/lib/module-urllib.html
 http://docs.python.org/lib/module-urllib2.html
 http://docs.python.org/lib/module-
SimpleHTTPServer.html
 http://docs.python.org/lib/moduleBaseHTTPServer.html
 http://www.w3journal.com/6/s3.vanrossum.html
2: Application Layer
61
Chapter 2: Application layer
 2.1 Principles of
network applications


app architectures
app requirements
 2.2 Web and HTTP
 2.4 Electronic Mail
 SMTP, POP3, IMAP
 2.5 DNS
 2.6 P2P file sharing
 2.7 Socket programming
with TCP
 2.8 Socket programming
with UDP
 2.9 Building a Web
server
2: Application Layer
62
Web and HTTP
First some jargon
 Web page consists of objects
 Object can be HTML file, JPEG image, Java
applet, audio file,…
 Each object is addressable by a URL
 Web page consists of base HTML-file which
includes several referenced objects
 Example URL:
www.someschool.edu/someDept/pic.gif
host name
path name
2: Application Layer
63
HTTP overview
 HTTP: hypertext transfer
protocol
 Web’s application layer protocol
 client/server model


client: browser that requests,
receives, “displays” Web
objects
server: Web server sends
objects in response to requests
PC running
Explorer
Server
running
Apache Web
server
 HTTP 1.0: RFC 1945

http://www.rfc-editor.org/rfc/rfc1945.txt
 HTTP 1.1: RFC 2068

http://www.rfc-editor.org/rfc/rfc2068.txt
 HTTP state management
(cookies): RFC 2109

Mac running
Navigator
http://www.rfc-editor.org/rfc/rfc2109.txt
2: Application Layer
64
HTTP overview (continued)
Uses TCP:
 client initiates bi-directional
TCP connection (via socket)
to server, port 80
 server accepts TCP
connection from client
 HTTP messages (applicationlayer protocol messages)
exchanged between browser
(HTTP client) and Web
server (HTTP server)

Messages encoded in text
 TCP connection closed
HTTP is “stateless”
 server maintains no
information about
past client requests
aside
Protocols that maintain
“state” are complex!
 past history (state) must
be maintained
 if server/client crashes,
their views of “state” may
be inconsistent, must be
reconciled
2: Application Layer
65
Non-persistent HTTP
connections
 HTTP/0.9 & HTTP/1.0
 One request/response per connection
 simple to implement
 server parses request, responds, and closes connection
 Disadvantages
 Short transfers hard on TCP
• Each connection stuck in slow start
• Loss recovery poor when windows small

Connection setup latency (three-way handshake)
• Several extra round trips added to transfer

Server and network overhead
• Connection handling, extra packets
• TIME_WAIT
– Much larger than # active connections
2: Application Layer
66
Nonpersistent HTTP
(contains text,
Suppose user enters URL
references to 10
www.someSchool.edu/someDepartment/home.index
jpeg images)
1a. HTTP client initiates TCP
connection to HTTP server
(process) at
www.someSchool.edu on port 80
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
2: Application Layer
67
Nonpersistent 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
2: Application Layer
68
Response time modeling
Definition of RTT: time to send
a small packet to travel from
client to server and back.
Response time:
 one RTT to initiate TCP
connection
 one RTT for HTTP request
and first few bytes of HTTP
response to return
 file transmission time
total = 2RTT+transmit time
initiate TCP
connection
RTT
request
file
time to
transmit
file
RTT
file
received
time
time
2: Application Layer
69
Single non-persistent example
Client
SYN
0 RTT
Client opens TCP connection
1 RTT
Client sends HTTP request for HTML
Server
SYN
DAT
ACK
2 RTT
ACK
DAT
FIN
Server reads from disk
ACK
Client parses HTML
Client opens TCP connection
FIN
ACK
3 RTT
Client sends HTTP request for image
SYN
SYN
ACK
DAT
Server reads from disk
ACK
4 RTT
Image begins to arrive
DAT
2: Application Layer
70
Parallel non-persistent
connections (Netscape)
 Improve non-persistent latency by using multiple
concurrent connections


Different parts of Web page arrive independently on
separate connections (object demux via connections)
Can grab more of the network bandwidth than other
users
 Doesn’t necessarily improve response time
 TCP loss recovery ends up being timeout dominated
because windows are small
2: Application Layer
71
Persistent HTTP connections
 Default in HTTP/1.1
 Several requests/responses on one TCP connection

On same TCP connection: server, parses request, responds,
parses new request,..
 Benefits greatest for small objects

Up to 2x improvement in response time (avoid handshake)
 Server resource utilization reduced due to fewer connection
establishments and fewer active connections
 TCP behavior improved


Longer connections help adaptation to available bandwidth
Larger congestion window improves loss recovery
 HTTP/1.1 vs. HTTP/1.0 example

Multiple requests to www.cs.pdx.edu
 Problem: serial delivery of objects (head-of-line object
blocking)
2: Application Layer
72
Persistent HTTP connection
example
Server
Client
0 RTT
Client sends HTTP request for HTML
DAT
ACK
Server reads from disk
DAT
1 RTT
ACK
Client parses HTML
Client sends HTTP request for image
DAT
ACK
Server reads from disk
DAT
2 RTT
Image begins to arrive
2: Application Layer
73
Persistent HTTP connections
 Pipelining requests
 Examples
• Getall – request HTML document and all embeds
– Requires server to parse HTML files
– Embeds returned serially
– Doesn’t consider client cached documents
• Getlist – request a set of documents
– Implemented as a simple set of GETs

Problems with pipelined serialized requests
• Stall in one object prevents delivery of others
• Most useful information in first few bytes (layout info)
– Multiple connections allow incremental rendering of images
• Need application-level demux to emulate multiple
connections
2: Application Layer
74
HTTP-NG?
 HTTP-NG, HTTP/2.0, HTTP range requests
Support pipelining, but avoid HOL blocking via
application-layer demux of objects
 Demux within application stream

• Data “labeled” with object it is for

Application specific solution to transport
protocol problems!
 Better approach?
 SCTP: Stream Control Transmission Protocol
• Support above across all applications
2: Application Layer
75
Persistent HTTP
Nonpersistent HTTP issues:
 requires 2 RTTs per object
 OS overhead to allocate
resources for each TCP
connection
 browsers often open parallel
TCP connections to fetch
referenced objects
 Solves demux issue on
multiple objects
Persistent HTTP
 server leaves connection
open after sending response
 subsequent HTTP messages
between same client/server
sent over open connection
Persistent without pipelining:
 client issues new request
only when previous
response has been received
 one RTT for each
referenced object
Persistent with pipelining:
 default in HTTP/1.1
 client sends requests as
soon as it encounters a
referenced object
 as little as one RTT for all
the referenced objects
 Objects still returned one
at a time (HOL blocking
versus parallel nonpersistent HTTP)
2: Application Layer
76
HTTP request message
 two types of HTTP messages: request, response
 HTTP request message:
 ASCII (human-readable format)
request line
(GET, POST,
HEAD commands)
GET /somedir/page.html HTTP/1.1
Host: www.someschool.edu
User-agent: Mozilla/4.0
header Connection: close
lines Accept-language:fr
Carriage return,
line feed
indicates end
of message
(extra carriage return, line feed)
2: Application Layer
77
HTTP request message: general format
2: Application Layer
78
HTTP request line (methods)
HTTP/1.0
 GET

Return object specified
by URI
 POST
 Send data to server
(forms)
 HEAD
 asks server to leave
requested object out of
response
 Return headers only of
GET response
HTTP/1.1
 GET, POST, HEAD
 PUT

uploads file in entity
body to path specified
in URL field
 DELETE
 deletes file specified in
the URL field
 OPTIONS, TRACE,
CONNECT
2: Application Layer
79
HTTP request line (cont.)
 URI

Object to retrieve
• E.g. http://www.cs.pdx.edu/index.html with a proxy
• E.g. /index.html if no proxy
 HTTP version
 Version being used
 HTTP 1.1
• Host: header required
• Connection: header supported
2: Application Layer
80
Common HTTP request headers
 Accept
 Acceptable document types, encodings, languages, character
sets
 If-Modified-Since
 For use with caching
 Referer
 URL which caused this page to be requested
 User-Agent
 Host
 For multiple web sites hosted on same server
 Connection
 Keep connection alive for subsequent request or close
connection
2: Application Layer
81
Other HTTP request headers
 Authorization
 Authentication info for HTTP authentication
 From
 User email (when privacy is disabled)
Rest of HTTP request
 Blank-line
 Separate request headers from POST information
 End of request
 Body
 If POST, send POST information
2: Application Layer
82
Handling user input (forms)
GET method:
 Input is uploaded in
URL field of request
line
POST method:
 Input is uploaded to
server in entity
body
GET search?name=george&animal=monkey HTTP/1.1
Host: www.somesite.com
POST search HTTP/1.1
Host: www.somesite.com
Content-type: application/x-www-form-urlencoded
name=george&animal=monkey
2: Application Layer
83
HTTP response message
status line
(protocol
status code
status phrase)
header
lines
data, e.g.,
requested
HTML file
HTTP/1.1 200 OK
Connection close
Date: Thu, 06 Aug 1998 12:00:15 GMT
Server: Apache/1.3.0 (Unix)
Last-Modified: Mon, 22 Jun 1998 …...
Content-Length: 6821
Content-Type: text/html
data data data data data ...
2: Application Layer
84
HTTP response message: general
format
2: Application Layer
85
HTTP response format
 Status-line
HTTP version
 3 digit response code

•
•
•
•
•

1XX – informational
2XX – success
3XX – redirection
4XX – client error
5XX – server error
Reason phrase
2: Application Layer
86
HTTP response status codes
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
87
Common HTTP response
headers
 Server
 server software
 Content-Encoding
 x-gzip
 Content-Length
 Content-Type
 Expires
 Last-Modified
 ETag
2: Application Layer
88
Other HTTP response headers
 Location
 redirection
 WWW-Authenticate
 request for authentication
 Allow
 list of methods supported (GET, HEAD, etc)
Rest of HTTP response
 Blank-line
 Separate headers from data
 Body
 Data being returned to client
2: Application Layer
89
HTTP headers by function
 Authentication
 Client
• Authorization, ProxyAuthorization

Server
 Caching
 General
• Cache-control, Pragma

• If-Modified-Since, IfUnmodified-Since, IfMatch
• WWW-authenticate,
Proxy-Authenticate
 User, server tracking
 Client
• Cookie, Referer, From,
User-agent

Client

Server
• Last-Modified,
Expires, ETag, Age
Server
• Set-cookie, Server
2: Application Layer
90
Trying out HTTP (client side) for yourself
1. Telnet to your favorite Web server:
telnet cis.poly.edu 80
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
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!
2: Application Layer
91
Let’s look at HTTP in action
 telnet example
 Ethereal example
 Other examples
 http://www.thefengs.com/courses/cs594/http.txt
 http://www.thefengs.com/courses/cs594/http_po
st.txt
2: Application Layer
92
User-server state: cookies
Many major Web sites
use cookies
Four components:
1) cookie header line of
HTTP response message
Set-cookie:
2) cookie header line in
HTTP request message
Cookie:
3) cookie file kept on
user’s host, managed by
user’s browser
4) back-end database at
Web site
Example:



Susan access Internet
always from same PC
She visits a specific ecommerce site for first
time
When initial HTTP
requests arrives at site,
site creates a unique ID
and creates an entry in
backend database for
ID
2: Application Layer
93
Cookies: keeping “state” (cont.)
client
Cookie file
server
usual http request msg
usual http response +
ebay: 8734
Cookie file
amazon: 1678
ebay: 8734
Set-cookie: 1678
usual http request msg
cookie: 1678
usual http response msg
one week later:
Cookie file
amazon: 1678
ebay: 8734
usual http request msg
cookie: 1678
usual http response msg
server
creates ID
1678 for user
cookiespecific
action
cookiespectific
action
2: Application Layer
94
Cookies (continued)
What cookies can bring:
 authorization
 shopping carts
 Site preferences
 recommendations
 user session state
(Web e-mail)
aside
Cookies and privacy:
 cookies permit sites to
learn a lot about you
 you may supply name
and e-mail to sites
 search engines use
redirection & cookies
to learn yet more
 advertising companies
obtain info across
sites
2: Application Layer
95
Web caches (proxy server)
Goal: satisfy client request without involving origin server
(i.e. do not send content that has not changed)
Why Web caching?
Info on web caching
 Reduce response time for
 http://www.ircache.net/
client request.
 http://www.squid.org
 Reduce traffic on an
 ICP
institution’s access link.
 http://www.rfc Reduce load on servers.
editor.org/rfc/rfc2186.txt
 Enables “poor” content
 http://www.rfcproviders to effectively
editor.org/rfc/rfc2187.txt
deliver content (but so does
P2P file sharing)
2: Application Layer
96
More about Web caching
 Browser sends all HTTP
requests to cache


object in cache: cache
returns object
else cache requests object
from origin server, then
returns object to client
 Done directly at client

origin
server
client
Proxy
server
Via browser web cache
 Along path from client to
origin server



Via proxy web cache
Proxy acts as both client
and server
Typically cache is installed
by ISP (university,
company, residential ISP)
client
origin
server
2: Application Layer
97
Caching example
Assumptions
 average object size = 100,000
bits
 avg. request rate from
institution’s browsers to origin
servers = 15/sec
 delay from institutional router
to any origin server and back
to router = 2 sec
Consequences
origin
servers
public
Internet
1.5 Mbps
access link
institutional
network
10 Mbps LAN
 utilization on LAN = 15%
 utilization on access link = 100%
 total delay
= Internet delay +
access delay + LAN delay
= 2 sec + minutes + milliseconds
institutional
cache
2: Application Layer
98
Caching example (cont)
Possible solution
 increase bandwidth of access
link to, say, 10 Mbps
Consequences
origin
servers
public
Internet
 utilization on LAN = 15%
 utilization on access link = 15%
= Internet delay +
access delay + LAN delay
= 2 sec + msecs + msecs
 often a costly upgrade
10 Mbps
access link
 Total delay
institutional
network
10 Mbps LAN
institutional
cache
2: Application Layer
99
Caching example (cont)
origin
servers
Install cache
 suppose hit rate is .4
Consequence
public
Internet
 40% requests will be
satisfied almost immediately
 60% requests satisfied by
origin server
 utilization of access link
reduced to 60%, resulting in
negligible delays (say 10
msec)
 total avg delay = Internet
delay + access delay + LAN
delay = .6*(2.01) secs +
.4*milliseconds < 1.4 secs
1.5 Mbps
access link
institutional
network
10 Mbps LAN
institutional
cache
2: Application Layer
100
Conditional GET
 Goal: don’t send object if
cache has up-to-date cached
version
 cache: specify date of
cached copy in HTTP request
If-modified-since:
<date>
 server: response contains no
object if cached copy is upto-date:
HTTP/1.0 304 Not
Modified
server
cache
HTTP request msg
If-modified-since:
<date>
HTTP response
object
not
modified
HTTP/1.0
304 Not Modified
HTTP request msg
If-modified-since:
<date>
HTTP response
object
modified
HTTP/1.0 200 OK
<data>
2: Application Layer
101
HTTP caching
 Additional caching methods

ETag and If-Match
• HTTP 1.1 has file signature as well
 When/how often should the original be
checked for changes?
Check every time?
 Check each session? Day? Etc?
 Use Expires header

• If no Expires, often use Last-Modified as estimate
2: Application Layer
102
Example Cache Check Request
GET / HTTP/1.1
Accept: */*
Accept-Language: en-us
Accept-Encoding: gzip, deflate
If-Modified-Since: Mon, 29 Jan 2001 17:54:18 GMT
If-None-Match: "7a11f-10ed-3a75ae4a"
User-Agent: Mozilla/4.0 (compatible; MSIE 5.5;
Windows NT 5.0)
Host: www.cs.pdx.edu
Connection: Keep-Alive
2: Application Layer
103
Example Cache Check Response
HTTP/1.1 304 Not Modified
Date: Tue, 27 Mar 2001 03:50:51 GMT
Server: Apache/1.3.14 (Unix) (RedHat/Linux) mod_ssl/2.7.1 OpenSSL/0.9.5a
DAV/1.0.2 PHP/4.0.1pl2 mod_perl/1.24
Connection: Keep-Alive
Keep-Alive: timeout=15, max=100
ETag: "7a11f-10ed-3a75ae4a"
2: Application Layer
104
Content distribution networks (CDNs)
origin server
in North America
• “Active caching” (Akamai)
• Push content close to client a
priori
• Versus pulling content
through cache
CDN distribution node
• CDN company puts content
servers throughout Internet
– in lower-tier ISPs, close to
users
• CDN replicates customers’
content in CDN servers.
• When provider updates
content, CDN updates
servers
CDN server
in S. America CDN server
in Europe
CDN server
in Asia
2: Application Layer
105
CDN example
HTTP request for
www.foo.com/sports/sports.html
1
2
3
Origin server
DNS query for www.cdn.com
CDNs authoritative
DNS server
HTTP request for
www.cdn.com/www.foo.com/sports/ruth.gif
Nearby
CDN server
 origin server



www.foo.com
distributes HTML
Replaces:
http://www.foo.com/sports.ruth.gif
with
http://www.cdn.com/www.foo.com/
sports/ruth.gif
 CDN (cdn.com)


distributes gif files to
content servers
uses its authoritative
DNS server to route
redirect requests
2: Application Layer
106
More about CDNs
routing requests
not just Web pages
• CDN creates a “map”,
• streaming stored
indicating distances
audio/video
from leaf ISPs and
• streaming realCDN nodes
time audio/video
• when query arrives at
authoritative DNS
server:
– server determines ISP
from which query
originates
– uses “map” to
determine best CDN
server
– CDN nodes create
application-layer
multicast overlay
network
2: Application Layer
107
Chapter 2: Application layer
 2.1 Principles of
network applications
 2.2 Web and HTTP
 2.3 FTP
 2.4 Electronic Mail

SMTP, POP3, IMAP
 2.5 DNS
 2.6 P2P file sharing
 2.7 Socket programming
with TCP
 2.8 Socket programming
with UDP
 2.9 Building a Web
server
2: Application Layer
108
FTP: the file transfer protocol
user
at host
FTP
FTP
user
client
interface
file transfer
local file
system
FTP
server
remote file
system
 transfer file to/from remote host
 client/server model
client: side that initiates transfer (either to/from
remote)
 server: remote host
 ftp: RFC 959
 ftp server: port 21

2: Application Layer
109
FTP: separate control, data
connections
 FTP client contacts FTP
server at port 21 using TCP


Control connection for
exchanging commands
Out-of-band signaling
between end-points
 Server maintains “state”
 Authorization status
 Current directory
 Contrast to HTTP
TCP control connection
port 21
FTP
client
TCP data connection
port 20
FTP
server
 For file transfer


Request via control connection
New TCP connection for data
xfer is negotiated and created
• Can be server or client initiated
• Includes IP address and port
information sent in application
layer message
– Why?
– Protocol allows client to
initiate transfer between 2 ftp
servers
• Data connection closed after
transfer
2: Application Layer
110
FTP commands, responses
Sample commands:
Sample return codes
 sent as ASCII text over
 status code and phrase (as
control channel
 USER username
 PASS password
 LIST return list of file in


current directory
 RETR filename retrieves

 STOR filename stores

(gets) file
(puts) file onto remote
host
in HTTP)
331 Username OK,
password required
125 data connection
already open;
transfer starting
425 Can’t open data
connection
452 Error writing
file
2: Application Layer
111
ftp and NAT (network address
translation)
 NAT

Dynamically assign source address to a pool of
available addresses
• “Statistically multiplex” address usage due to IP
address shortage
• Replaces source IP address of packets
• Each machine gets unique, external IP address out of
pool
• What to do if the “pool” runs out?
– NAT with port translation
2: Application Layer
112
ftp and NAT (network address
translation)
 NAPT (NAT with port translation)

Use the source port field (of TCP or UDP) along
with pool of IP addresses
• Example: single, globally routable external IP address
Packet #1
SrcIP=192.168.0.1
SrcPort=1312
DstIP=131.252.220.66
DstPort=21
Packet #2
SrcIP=192.168.0.2
SrcPort=1312
DstIP=131.252.220.66
DstPort=21
192.168.0.1
192.168.0.2
NAPT translator
ExternalIP=129.95.50.3
2: Application Layer
113
ftp and NAT (network address
translation)
 NAPT (NAT with port translation)

Use the source port field (of TCP or UDP) along
with pool of IP addresses
• Example: single, globally routable external IP address
Packet #1
SrcIP=192.168.0.1
SrcPort=1312
DstIP=131.252.220.66
DstPort=21
Packet #2
SrcIP=192.168.0.2
SrcPort=1312
DstIP=131.252.220.66
DstPort=21
Packet #1 after NAPT
SrcIP=129.95.50.3
SrcPort=2000
DstIP=131.252.220.66
DstPort=21
Packet #2 after NAPT
SrcIP=129.95.50.3
SrcPort=2001
DstIP=131.252.220.66
DstPort=21
192.168.0.1
192.168.0.2
NAPT translator
ExternalIP=129.95.50.3
2: Application Layer
114
ftp and NAT (network address
translation)
 NAPT (NAT with port translation)

Use the source port field (of TCP or UDP) along
with pool of IP addresses
• Example: single, globally routable external IP address
Reply #1
SrcIP=131.252.220.66
SrcPort=21
DstIP=129.95.50.3
DstPort=2000
Reply #2
SrcIP=131.252.220.66
SrcPort=21
DstIP=129.95.50.3
DstPort=2001
192.168.0.1
192.168.0.2
NAPT translator
ExternalIP=129.95.50.3
2: Application Layer
115
ftp and NAT (network address
translation)
 NAPT (NAT with port translation)

Use the source port field (of TCP or UDP) along
with pool of IP addresses
• Example: single, globally routable external IP address
Reply #1 after NAPT
SrcIP=131.252.220.66
SrcPort=21
DstIP=192.168.0.1
DstPort=1312
Reply #2 after NAPT
SrcIP=131.252.220.66
SrcPort=21
DstIP=192.168.0.2
DstPort=1312
Reply #1
SrcIP=131.252.220.66
SrcPort=21
DstIP=129.95.50.3
DstPort=2000
Reply #2
SrcIP=131.252.220.66
SrcPort=21
DstIP=129.95.50.3
DstPort=2001
192.168.0.1
192.168.0.2
NAPT translator
ExternalIP=129.95.50.3
2: Application Layer
116
ftp, NAT and PORT command
 Normal FTP mode
 Server has port 20, 21 reserved
 Client initiates control connection to port 21 on server
 Client allocates port X for data connection
 Client passes the data connection port (X) and its IP
address in a PORT command to server
 Server parses PORT command and initiates connection
from its own port 20 to the client on port X
 What if client is behind a NAT device?
• NAT must capture outgoing connections destined for port
21 and look to translate X within payload
– What if NAT doesn’t parse PORT command correctly?
– What if ftp server is running on a different port than 21?

http://www.practicallynetworked.com/support/linksys_ft
p_port.htm
2: Application Layer
117
ftp, NAT, and PORT command
 Passive (PASV) mode
 Client initiates control connection by connecting to port
21 on server
 Client enables “Passive” mode
 Server responds with PORT command giving client the IP
address and port to use for subsequent data connection
(usually port 20, but can be bypassed)
 Client initiates data connection by connecting to
specified port on server
 Most web browsers do PASV-mode ftp
 What if server is behind a NAT device?
• See client issues

What if both client and server are behind NAT devices?
• Problem
• Similar to P2P xfers
2: Application Layer
118
Chapter 2: Application layer
 2.1 Principles of
network applications
 2.2 Web and HTTP
 2.3 FTP
 2.4 Electronic Mail

SMTP, POP3, IMAP
 2.5 DNS
 2.6 P2P file sharing
 2.7 Socket programming
with TCP
 2.8 Socket programming
with UDP
 2.9 Building a Web
server
2: Application Layer
119
Electronic Mail
outgoing
message queue
user mailbox
user
agent
Three major components:
 user agents
 mail servers
mail
server
SMTP
 simple mail transfer
protocol: SMTP
User Agent
 a.k.a. “mail reader”
 composing, editing, reading
mail messages
 e.g., Eudora, Outlook, elm,
Netscape Messenger
 outgoing, incoming messages
stored on server
SMTP
mail
server
user
agent
SMTP
user
agent
mail
server
user
agent
user
agent
user
agent
2: Application Layer
120
Electronic Mail: mail servers
Mail Servers
 mailbox contains incoming
messages for user
 message queue of outgoing (to
be sent) mail messages
 SMTP protocol between mail
servers to send email messages
 Mail servers are both
clients and servers
• client: sending mail server
• server: receiving mail
server
• Peer-to-peer?
 SMTP protocol also between
user agents and mail servers to
send email messages
user
agent
mail
server
SMTP
SMTP
mail
server
user
agent
SMTP
user
agent
mail
server
user
agent
user
agent
user
agent
2: Application Layer
121
Electronic Mail: SMTP [RFC 821]
 uses TCP to reliably transfer email message from client
to server, port 25
 direct transfer

User agent to sending server
• If one runs SMTP locally (postfix, sendmail) or uses SMTP
built-in to client software

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

 messages must be in 7-bit ASCII
2: Application Layer
122
Scenario: Alice sends message to Bob
1) Alice uses UA to compose
message and “to”
[email protected]
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
1
user
agent
2
mail
server
3
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
mail
server
4
5
6
user
agent
2: Application Layer
123
Sample SMTP interaction
S:
C:
S:
C:
S:
C:
S:
C:
S:
C:
C:
C:
S:
C:
S:
220 hamburger.edu
HELO crepes.fr
250 Hello crepes.fr, pleased to meet you
MAIL FROM: <[email protected]>
250 [email protected]... Sender ok
RCPT TO: <[email protected]>
250 [email protected] ... Recipient ok
DATA
354 Enter mail, end with "." on a line by itself
Do you like ketchup?
How about pickles?
.
250 Message accepted for delivery
QUIT
221 hamburger.edu closing connection
2: Application Layer
124
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
125
SMTP: final words
 SMTP uses persistent
connections
 SMTP requires message
(header & body) to be in 7bit ASCII
 SMTP server uses
CRLF.CRLF to determine
end of message
Comparison with HTTP:
 HTTP: pull
 SMTP: push
 both have ASCII
command/response
interaction, status codes
 HTTP: each object
encapsulated in its own
response msg
 SMTP: multiple objects
sent in multipart msg
2: Application Layer
126
Mail message format
SMTP: protocol for
exchanging email msgs
RFC 822: standard for text
message format:
 header lines, e.g.,
To:
 From:
 Subject:
different from SMTP
commands!

header
blank
line
body
 body

the “message”, ASCII
characters only
2: Application Layer
127
Message format: multimedia extensions
 MIME: multimedia mail extension, RFC 2045, 2056
 additional lines in msg header declare MIME content
type
MIME version
method used
to encode data
multimedia data
type, subtype,
parameter declaration
encoded data
From: [email protected]
To: [email protected]
Subject: Picture of yummy crepe.
MIME-Version: 1.0
Content-Transfer-Encoding: base64
Content-Type: image/jpeg
base64 encoded data .....
.........................
......base64 encoded data
2: Application Layer
128
MIME types
Text
Content-Type: type/subtype
• example subtypes: plain,
html
Image
• example subtypes: jpeg,
gif
Audio
• exampe subtypes: basic
(8-bit mu-law encoded),
32kadpcm (32 kbps
coding)
Video
• example subtypes:
mpeg, quicktime
Application
• other data that must be
processed by reader
before “viewable”
• example subtypes:
msword, octetstream
2: Application Layer
129
Multipart Types
From: [email protected]
To: [email protected]
Subject: Picture of yummy crepe.
MIME-Version: 1.0
Content-Type: multipart/mixed; boundary=98766789
--98766789
Content-Transfer-Encoding: quoted-printable
Content-Type: text/plain
Dear Bob,
Please find a picture of a crepe.
--98766789
Content-Transfer-Encoding: base64
Content-Type: image/jpeg
base64 encoded data .....
.........................
......base64 encoded data
--98766789--
2: Application Layer
130
Mail access protocols
user
agent
SMTP
SMTP
sender’s mail
server
access
protocol
user
agent
receiver’s mail
server
 SMTP: delivery/storage to receiver’s server
 Mail access protocol: retrieval from server
 Direct (telnet or ssh followed by “mail”)



POP: Post Office Protocol [RFC 1939]
• authorization (agent <-->server) and download
IMAP: Internet Mail Access Protocol [RFC 1730]
• more features (more complex)
• manipulation of stored msgs on server
HTTP: Hotmail , Yahoo! Mail, Horde/IMP, etc.
2: Application Layer
131
POP3 protocol
authorization phase
 client commands:
user: declare username
 pass: password
 server responses
 +OK
 -ERR

transaction phase, client:
 list: list message numbers
 retr: retrieve message by
number
 dele: delete
 quit
S:
C:
S:
C:
S:
+OK POP3 server ready
user bob
+OK
pass hungry
+OK user successfully logged
C:
S:
S:
S:
C:
S:
S:
C:
C:
S:
S:
C:
C:
S:
list
1 498
2 912
.
retr 1
<message 1 contents>
.
dele 1
retr 2
<message 1 contents>
.
dele 2
quit
+OK POP3 server signing off
2: Application Layer
on
132
POP3 (more) and IMAP
More about POP3
 Previous example uses
“download and delete”
mode.
 Bob cannot re-read email if he changes
client
 “Download-and-keep”:
copies of messages on
different clients
 POP3 is stateless
across sessions
IMAP
 Keep all messages in
one place: the server
 Allows user to
organize messages in
folders
 IMAP keeps user state
across sessions:

names of folders and
mappings between
message IDs and folder
name
2: Application Layer
133
Chapter 2: Application layer
 2.1 Principles of
network applications
 2.2 Web and HTTP
 2.3 FTP
 2.4 Electronic Mail

SMTP, POP3, IMAP
 2.5 DNS
 2.6 P2P file sharing
 2.7 Socket programming
with TCP
 2.8 Socket programming
with UDP
 2.9 Building a Web
server
2: Application Layer
134
Domain Name System (DNS)
 Internet hosts, routers like to use fixed-
length addresses (numbers)

IP address (32 bit) - used for addressing
datagrams
 Humans like to use variable-length names
 www.cs.pdx.edu
 keywords
 DNS, keywords, naming protocols
 Map between IP addresses and names
2: Application Layer
135
Original Name to Address
Mapping
 Flat namespace
/etc/hosts.txt
 SRI kept main copy
 Downloaded regularly

 Problems
 Count of hosts was increasing
• From machine per domain to machine per user
• Many more downloads of hosts.txt
• Many more updates of hosts.txt
2: Application Layer
136
DNS: Domain Name System
(1984)
 application-layer protocol used by hosts
and name servers
communicate to resolve names (address/name
translation)
 core Internet function, implemented as
application-layer protocol

• complexity at network’s “edge”
• Compare to phone network
– Naming (none supported)
– Addressing (complex mechanism within network)
2: Application Layer
137
DNS: Domain Name System (1984)
 distributed database implemented in hierarchy of
many name servers

Goals
•
•
•
•
Scalability
Decentralized maintenance
Robustness, fault-tolerance
Global scope
– Names mean the same thing everywhere
• Don’t need
– Atomicity
– Strong consistency

Why not centralize DNS?
• Not scalable, hard to maintain, single point of failure


http://www.rfc-editor.org/rfc/rfc1034.txt
http://www.rfc-editor.org/rfc/rfc1035.txt
2: Application Layer
138
Other DNS issues
 Host aliasing

Canonical and alias names
 Mail server aliasing
 MX record
 Load distribution

Replicated Web servers: set of IP addresses
for one canonical name
2: Application Layer
139
DNS records
DNS: distributed db storing resource records (RR)
RR format: (name,
 Type=A
 name is hostname
 value is IP address
 Type=NS
 name is domain (e.g.
foo.com)
 value is hostname of
authoritative name
server for this domain
value, type, ttl)
 Type=CNAME
 name is alias name for some
“canonical” (the real) name
www.ibm.com is really
servereast.backup2.ibm.com

value is canonical name
 Type=MX
 value is name of mailserver
associated with name
2: Application Layer
140
DNS MX record type
 Initially only “A” records
 MX records created for mail
Point to mail exchanger for a name
 E.g. mail.acm.org is MX for acm.org

 Addition of MX record type proved to be a
challenge
How to get mail programs to lookup MX record
for mail delivery rather than A record?
 Needed critical mass of such mailers

2: Application Layer
141
DNS hierarchical canonical name
space
 www.cs.pdx.edu
root
org
gwu
edu
net
com
pdx
ucb
cs
uk
bu
ca
mit
ece
www
2: Application Layer
142
Maps closely to hierarchy
Root DNS Servers
com DNS servers
org DNS servers
yahoo.com
amazon.com
DNS servers DNS servers
pbs.org
DNS servers
edu DNS servers
poly.edu
umass.edu
DNS serversDNS servers
 Administrative hierarchy


Organized into regions known as “zones” with “.” as separator
zone = contiguous section of name space
 Zones created by convincing owner node to delegate subzone


umass.edu zone delegates cs.umass.edu to a different set of
authoritative name servers
Each zone contains multiple redundant servers (fault tolerance)
• Primary (master) name server updated manually
• Secondary (redundant) servers updated by zone transfer of name
space
2: Application Layer 143
DNS: Root name servers
 contacted by local name server that can not resolve name
 root name servers



contacts authoritative name server or intermediate name server if
name mapping not known
gets mapping and returns it to local name server
13 root name servers worldwide for fault-tolerance
• All that fit in a 512 octet SOA record
a Verisign, Dulles, VA
c Cogent, Herndon, VA (also Los Angeles)
d U Maryland College Park, MD
k RIPE London (also Amsterdam,
g US DoD Vienna, VA
Frankfurt)
i Autonomica, Stockholm (plus 3
h ARL Aberdeen, MD
j Verisign, ( 11 locations)
other locations)
m WIDE Tokyo
e NASA Mt View, CA
f Internet Software C. Palo Alto,
CA (and 17 other locations)
b USC-ISI Marina del Rey, CA
l ICANN Los Angeles, CA
2: Application Layer
144
TLD 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
145
Authoritative Servers
 Provides authoritative hostname to IP mappings
 Typically, one per organization
 Hand mappings out for organization’s servers (Web & mail).
 Store parts of the database
 Each name assigned to authoritative server
 Server responds to all queries for name it is the authority
 Can be maintained by organization or service provider
 Root name servers are authorities for TLD names
 Root servers deliver authority for “.edu” TLD
 TLD name servers are authorities for their domains
 “.edu” TLD server delivers authority for “pdx.edu” name
 Each local DNS server has pointers to root servers
 Hard-coded into name server distributions
2: Application Layer
146
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.
Typically answer queries about local zone directly
Do a lookup of distant host names for local hosts
• Configured with well-known root servers
• Currently {a-m}.root-servers.net
2: Application Layer
147
Client resolver
 Common code on client to query DNS
hierarchy
Typically a library that applications can link to
obtain gethostbyname() function
 Resolver configuration /etc/nsswitch.conf
 Local name servers hand-configured (e.g.
/etc/resolv.conf) or automatically configured
(DHCP)

• Can specify a file /etc/hosts
• Can specify a name server by its IP address (i.e.
129.95.50.2)

Host queries local name server for unknown
names
2: Application Layer
148
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:
(networkutopia.com, dns1.networkutopia.com, NS)
(dns1.networkutopia.com, 212.212.212.1, A)
 Put in authoritative server
 Type A record for www.networkuptopia.com
 Type MX record for networkutopia.com
 How do people get the IP address of your Web site?
2: Application Layer
149
Query types
recursive query:
 puts burden of name resolution on contacted name server
 Only returns answer or “not found”
 Heavy load?


Root servers currently disable recursive querying through them
RFC 2010
iterated query:
 contacted server replies with name of server to contact
 “I don’t know this name, but ask this server”
 Client iteratively queries
2: Application Layer
150
Recursive query example
root DNS server
2
6
TLD DNS
server
local DNS server
1
wants IP address for
gaia.cs.umass.edu
3
7
dns.poly.edu
 Host at cis.poly.edu
5
4
8
requesting host
authoritative DNS server
dns.cs.umass.edu
cis.poly.edu
gaia.cs.umass.edu
2: Application Layer
151
Iterated query example
root DNS server
iterated
query
2
3
TLD DNS server
 Host at cis.poly.edu
wants IP address for
gaia.cs.umass.edu
4
5
local DNS server
dns.poly.edu
1
8
requesting host
7
6
authoritative DNS server
dns.cs.umass.edu
cis.poly.edu
gaia.cs.umass.edu
2: Application Layer
152
Typical Resolution
 Client does recursive request to local name server
 Local name server does iterative requests to find
name
 Local name server has knowledge of root servers
 Steps for resolving www.pdx.edu






Application calls gethostbyname()
Resolver contacts local name server (S1)
S1 queries root server (S2) for (www.pdx.edu)
S2 returns NS record for pdx.edu (S3)
S1 queries S3 for www.pdx.edu
S3 returns A record for www.pdx.edu
 Can return multiple addresses -> what does this
mean?
2: Application Layer
153
DNS: caching and updating records
 DNS responsescached throughout hierarchy

Quick response for repeated translations
• Other queries may reuse some parts of lookup
– NS records for domains reused often (xxx.yahoo.com)
• Entries timeout after some time (soft state)
– TTL field controlled by authority
– Affects DNS-based load balancing

TLD servers often cached in local name servers
• Thus root name servers not often visited

Negative responses also cached
• Don’t repeat past mistakes (misspellings)
 update/notify mechanisms under design by IETF

RFC 2136

http://www.ietf.org/html.charters/dnsind-charter.html
2: Application Layer
154
DNS Lookup Caching Example
www.cs.pdx.edu?
Client
Local
DNS server
root & edu
DNS server
pdx.edu
DNS server
cs.pdx.edu
DNS
server
2: Application Layer
155
Subsequent Lookup Example
cs.pdx.edu entry cached
ftp.cs.pdx.edu
Client
Local
DNS server
root & edu
DNS server
pdx.edu
DNS server
cs.pdx.edu
DNS
server
2: Application Layer
156
Iterated queries and caching
 Recall
Recursive query to local DNS server
 Iterative query from local DNS server on

 Why not do iterative queries from host?
 Win2k client
• Does iterative queries from host

Caching implications?
2: Application Layer
157
DNS dig example
 Real example using dig and named

Shows iterative queries, recursive queries, and caching
 dig
cat
dig
dig
dig
dig
/etc/resolv.conf
+norecurse www.thefengs.com.
@192.41.162.30 +norecurse www.thefengs.com.
@216.21.226.71 +norecurse www.thefengs.com.
+norecurse www.thefengs.com.
dig +recurse www.thefengs.com.
dig +norecurse www.thefengs.com.
#
#
#
#
#
#
#
#
local DNS server
do an iterative query to local DNS server
do an iterative query to IP addr of L TLD
do an iterative query to IP addr of NS at register.com
do an iterative query again to local DNS server
NOTHING was cached at local DNS server!
now do a recursive query through local DNS server
now you get a cached result
dig +norecurse www.jjkkllmmnnoopp.com.
dig +recurse www.jjkkllmmnnoopp.com.
dig +norecurse www.jjkkllmmnnoopp.com.
#
#
#
#
Negative results also cached
returns pointer to root name servers
returns status: NXDOMAIN
returns status: NXDOMAIN
2: Application Layer
158
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
159
DNS protocol, messages
Name, type fields
for a query
RRs in response
to query
records for
authoritative servers
additional “helpful”
info that may be used
2: Application Layer
160
DNS issues
 Poor static configuration (root server list)
 Lack of exponential backoff
 No centralized caching per site
 Each machine runs one caching local server
 UDP used for queries
 Need reliability -> Why not TCP?
 Vulnerability of 13 TLD servers
 Jon Postel and his mobility “experiment”
 Attacks on TLD have occurred
2: Application Layer
161
Chapter 2: Application layer
 2.1 Principles of
network applications


app architectures
app requirements
 2.2 Web and HTTP
 2.4 Electronic Mail
 SMTP, POP3, IMAP
 2.5 DNS
 2.6 P2P file sharing
 2.7 Socket programming
with TCP
 2.8 Socket programming
with UDP
 2.9 Building a Web
server
2: Application Layer
162
Building a simple Web server
 handles one HTTP




request
accepts the request
parses header
obtains requested file
from server’s file
system
creates HTTP response
message:

 after creating server,
you can request file
using a browser (e.g.,
IE explorer)
 see text for details
header lines + file
 sends response to client
2: Application Layer
163
Chapter 2: Summary
Our study of network apps now complete!
 Application architectures
 client-server
 P2P
 hybrid
 application service
requirements:

 specific protocols:
 HTTP
 FTP
 SMTP, POP, IMAP
 DNS
 socket programming
reliability, bandwidth,
delay
 Internet transport
service model


connection-oriented,
reliable: TCP
unreliable, datagrams: UDP
2: Application Layer
164
Chapter 2: Summary
Most importantly: learned about protocols
 typical request/reply
message exchange:


client requests info or
service
server responds with
data, status code
 message formats:
 headers: fields giving
info about data
 data: info being
communicated
 control vs. data msgs
in-band, out-of-band
centralized vs. decentralized
stateless vs. stateful
reliable vs. unreliable msg
transfer
“complexity at network
edge”





2: Application Layer
165
Extra slides
2: Application Layer
166
HTTP Authentication
server
client
Authentication goal: control
access to server documents
usual http request msg
 stateless: client must present
401: authorization req.
authorization in each request
WWW authenticate:
 authorization: typically name,
password
usual http request msg
 authorization: header
+Authorization:cred
line in request
 if no authorization
usual http response msg
presented, server refuses
access, sends
WWW authenticate:
usual http request msg
+ Authorization:cred
header line in response
time
 http://www.sandbox.com/clip
usual http response msg
board/pub-doc/home.jsp
Browser caches name & password so
2: Application Layer 167
that user does not have to repeatedly enter it.
HTTP Authentication example
 http://www.thefengs.com/wuchang/work/c
ourses/cs594/http_ba.txt
2: Application Layer
168
Chapter 2: Application layer
 2.1 Principles of
network applications


app architectures
app requirements
 2.2 Web and HTTP
 2.4 Electronic Mail
 SMTP, POP3, IMAP
 2.5 DNS
 2.6 P2P file sharing
 2.7 Socket programming
with TCP
 2.8 Socket programming
with UDP
 2.9 Building a Web
server
2: Application Layer
169
P2P file sharing
Example
 Alice runs P2P client
application on her
notebook computer
 Intermittently
connects to Internet;
gets new IP address
for each connection
 Asks for “Hey Jude”
 Application displays
other peers that have
copy of Hey Jude.
 Alice chooses one of
the peers, Bob.
 File is copied from
Bob’s PC to Alice’s
notebook: HTTP
 While Alice downloads,
other users uploading
from Alice.
 Alice’s peer is both a
Web client and a
transient Web server.
All peers are servers =
highly scalable!
2: Application Layer
170
P2P: centralized directory
original “Napster” design
1) when peer connects, it
informs central server:


Bob
centralized
directory server
1
peers
IP address
content
2) Alice queries for “Hey
Jude”
3) Alice requests file from
Bob
1
3
1
2
1
Alice
2: Application Layer
171
P2P: problems with centralized directory
 Single point of failure
 Performance
bottleneck
 Copyright
infringement
file transfer is
decentralized, but
locating content is
highly centralized
2: Application Layer
172
P2P: decentralized directory
 Gnutella
 fully distributed
• no central server
– Location service distributed over peers
– More difficult to shut down
• query flooding to search

Issues
• “Bootstrap” node needed
• Excessive query traffic
• Limited scoping
– Query radius may not have content
• Maintenance overhead

public domain protocol
• many Gnutella clients implementing protocol
2: Application Layer
173
Gnutella: protocol
 Query message
sent over existing TCP
connections
 peers forward
Query message
 QueryHit
sent over
reverse
Query
path
File transfer:
HTTP
Query
QueryHit
QueryHit
Scalability:
limited scope
flooding
2: Application Layer
174
Gnutella: Peer joining
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
Peer leaving: see homework problem!
1.
2: Application Layer
175
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 children.

Forwards query to other
group leaders if content not
present
 Overlay network

Edges are TCP connections
not links
ordinary peer
group-leader peer
neighoring relationships
in overlay network
2: Application Layer
176
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
177
KaZaA tricks
 Limitations on simultaneous uploads
 Request queuing
 Incentive priorities
 Parallel downloading
For more info:
 J. Liang, R. Kumar, K. Ross, “Understanding KaZaA,”
(available via cis.poly.edu/~ross)
2: Application Layer
178
P2P: BitTorrent
 Previous systems
 Sources/servers
• Have entire copy of content
• Keep content available for others to download

Clients
• Connect to sources/servers with full copy

Problems
• Must force clients to become sources/servers for P2P
application to work
• Can’t redistribute data blocks of a file until it is received in
its entirety (large files problematic)
• No control of content (must rely on naming and popularity to
infer integrity)
– “URL-based P2P?”
2: Application Layer
179
Slides courtesy of Karthik Tamilman
Philosophy
 Author: Bram Cohen
 Based on Tit-for-tat
 Incentive - Uploading while downloading
 Get preference in downloading if you supply good upload
 Pieces of files
 Components
 Ordinary web server to serve up metainfo file (.torrent)
 Client web browser
 BitTorrent tracker (location of which is specified as a URL
in .torrent)
 Original downloader (the first “seed”)
 Client downloader
2: Application Layer
180
Overall Architecture
Tracker
Web Server
Origin
Downloader
[Seed]
C
A
Peer
Peer
[Leech]
B
Downloader
Peer
“US”
[Leech]
[Seed]
2: Application Layer
181
Overall Architecture
Tracker
Web Server
Origin
Downloader
[Seed]
C
A
Peer
Peer
B
[Seed]
[Leech]
Downloader
Peer
“US”
[Leech]
2: Application Layer
182
Overall Architecture
Tracker
Web Server
Origin
Downloader
[Seed]
C
A
Peer
Peer
B
[Seed]
[Leech]
Downloader
Peer
“US”
[Leech]
2: Application Layer
183
Overall Architecture
Tracker
Web Server
Origin
Downloader
[Seed]
C
A
Peer
Peer
[Leech]
B
Downloader
Peer
“US”
[Leech]
[Seed]
2: Application Layer
184
Overall Architecture
Tracker
Web Server
Origin
Downloader
[Seed]
C
A
Peer
Peer
B
[Seed]
[Leech]
Downloader
Peer
“US”
[Leech]
2: Application Layer
185
Overall Architecture
Tracker
Web Server
Origin
Downloader
[Seed]
C
A
Peer
Peer
B
[Seed]
[Leech]
Downloader
Peer
“US”
[Leech]
2: Application Layer
186
Overall Architecture
Tracker
Web Server
Origin
Downloader
[Seed]
C
A
Peer
Peer
[Leech]
B
Downloader
Peer
“US”
[Leech]
[Seed]
2: Application Layer
187
Messages
 Peer – Peer messages

TCP Sockets
 Peer – Tracker messages

HTTP Request/Response
 B-encoding
 http://bitconjurer.org/BitTorrent/protocol
.html
2: Application Layer
188
.torrent
 URL of the tracker
 Dictionary keys for B-encoding scheme
 Pieces <hash1,hash2,….hashn>
 Piece length
 Name
 Length
 Files
Path
 length

2: Application Layer
189
Tracker
 Peer cache

IP, port, peer id
 State information
Completed
 Downloading

 Returns random list
2: Application Layer
190
2: Application Layer
191
Peer Operation
 Choking algorithm

Choke/Unchoke
• Avoid large numbers of TCP connections
• Optimistic unchoke for a peer, rotates every 30 sec.
• Preferred peers do not get choked

Snubbing behavior
• Prevented by Anti-snubbing.
 Upload to interested peers who are not
choking.
2: Application Layer
193
Peer Operation
 Verify on receiving complete piece
 Endgame Behavior
Cancel
 To fix the “waiting” on the last slow peer

2: Application Layer
194
Experimental client
2: Application Layer
195
2: Application Layer
196
Strengths
 Better bandwidth utilization

Never before speeds.
• Up to 7 MB/s from the Internet.
 Limit free riding – tit-for-tat
 Limit leech attack – coupling upload &
download
 Ability to resume a download
2: Application Layer
197
Drawbacks
 Small files – latency, overhead
 Random list of peers - naive
 Scalability
 Millions of peers – Tracker behavior (uses
1/1000 of bandwidth)
 Single point of failure
 Robustness
 System progress dependent on altruistic nature
of seeds (and peers)
 Malicious attacks and leeches.
2: Application Layer
198
Interesting links
 Official site:
http://bitconjurer.org/BitTorrent
 BitTorrent FAQ: http://btfaq.com
 Torrent sites
http://f.scarywater.net
 http://www.suprnova.org
 http://tvtorrents.com
Remember
 leave your download windows open
 Big brother is watching!

2: Application Layer
199