Transcript Slides

Chapter 2: Application layer
 2.1 Principles of
network applications
 2.2 Web and HTTP
 2.3 FTP
 2.4 Electronic Mail

 2.6 P2P applications
SMTP, POP3, IMAP
 2.5 DNS
2: Application Layer
1
Some network apps
 e-mail
 voice over IP
 web
 real-time video
 instant messaging
 remote login
 P2P file sharing
 multi-user network
games
 streaming stored video
clips
conferencing
 cloud computing
 A Simple Survey of
four most frequently
used websites
requiring login and
password
 http://www.surveymon
key.com/s/785PGPV
2: Application Layer
2
Creating a network app
write programs that



run on (different) end
systems
communicate over network
e.g., web server software
communicates with browser
software
No need to write software
for network-core devices


Network-core devices do
not run user applications
applications 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
3
Application architectures
 Client-server
 Peer-to-peer (P2P)
 Hybrid of client-server and P2P
2: Application Layer
4
Client-server architecture
server:
 always-on host
 permanent IP address
 server farms for
scaling
clients:
client/server




communicate with server
may be intermittently
connected
may have dynamic IP
addresses
do not communicate
directly with each other
2: Application Layer
5
Google Data Centers
 Estimated cost of data center: $600M
 Google spent $2.4B in 2007 on new data
centers, each using 50-100 megawatts
Pure P2P architecture
 no always-on server
 arbitrary end systems
directly communicate peer-peer
 peers are intermittently
connected and change IP
addresses
Highly scalable but
difficult to manage
2: Application Layer
7
Hybrid of client-server and P2P
Skype
 voice-over-IP P2P application
 centralized server: finding address of remote
party:
 client-client connection: direct (not through
server)
Instant messaging
 chatting between two users is P2P
 centralized service: client presence
detection/location
• 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
8
some jargon related to applicationlevel protocols
Process: program running user agent: implements
within a host.
user interface &
application-level
 processes running in
protocol
different hosts
 Web: browser IE
communicate by
(implements HTTP)
exchanging messages
 E-mail: PINE, Outlook
with an application-layer
(a reading agent
protocol, e.g., HTTP
implements POP3 and a
(for web), SMTP, POP3
sending agent
(for email access)
implements SMTP)
Transport Layer
3-9
A Big Picture: Processes Communication
via Sockets (API provided by OS)
users
user agent
API
IP address
Port # (e.g., 80
for HTTP, and
25 for SMTP
Transport Layer 3-10
Socket Programming (More in
Recitation/Project #1)
App processes communicate with each other through
sockets
socket
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
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
A socket is associated with
one port # on a host.
Transport Layer
3-11
App-layer protocol defines
Public-domain protocols:
exchanged, e.g., request  defined in RFCs
& response messages
 allows for
interoperability
 Syntax of message
types: what fields in
 E.g., HTTP, SMTP
messages & how fields  uses well-defined port #
are delineated
(0 to 1023)
 Semantics of the fields, Proprietary protocols:
ie, meaning of
 can’t use well-define
information in fields
port #s
 Rules for when and how
 E.g. Skype
processes send &
respond to messages
 Types of messages
Transport Layer 3-12
Transport vs. network layer
 network layer: logical
communication between
hosts

may not be reliable
 transport layer: logical
communication between
processes
uses, enhances, network
layer services
 Provides either reliable
or unreliable services to
app processes
 Use IP Address and Port #s.

Household analogy:
12 kids in one house
sending letters to 12
kids in another house
 processes = kids in each
room
 app messages = letters
in envelopes
 2 hosts = 2 houses
transport protocol =
Ann and Bill (2 mail
collectors in 2 houses)
 network-layer protocol
= postal service
Transport Layer 3-13
Socket-programming
Socket: a door between application process
and end-end-transport protocol (UDP or
TCP)
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
Transport Layer 3-14
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
 OS attaches IP address
and port of sending socket
to each segment
 server must extract IP
address, port of client
from received packet
UDP: transmitted data may be
received out of order, or
lost
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 socket
•sending a UDP datagram specifying
IP address, port number of server
process
application viewpoint
UDP provides unreliable transfer
of groups of bytes (“datagrams”)
between client and server
Transport Layer 3-15
1 Client/1 server with UDP socket
Server (running on hostid)
create socket,
port=x, for
incoming request:
serverSocket =
DatagramSocket(port)
read request from
serverSocket
write reply to
serverSocket
specifying client
host address,
port number (y)
Client
create socket,
clientSocket =
DatagramSocket() (at port y)
Create, address (hostid, port=x)
send datagram request
using clientSocket
read reply from
clientSocket
close
clientSocket
Transport Layer 3-16
Example: Java client (UDP)
Receive the converted
characters and display
them
Process
UDP
packet
receivePacket
Send to a server for
uppercase conversion
Client
input
stream
sendPacket
Get keyboard input (in
lowercase) from users
monitor
inFromUser
keyboard
UDP
packet
clientSocket
UDP
socket
to network
from network
2: Application Layer
17
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);
Transport Layer 3-18
Example: Java server (UDP), cont
String sentence = new String(receivePacket.getData());
Get IP addr
port #, of
Client/requester
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
Transport Layer 3-19
Example: Java client (UDP)
import java.io.*;
import java.net.*;
Create
input stream
Create
client socket
Translate
server name 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();
Transport Layer 3-20
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();
}
}
Transport Layer 3-21
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
 To support multiple clients,
server TCP can create new
socket for each client
 All subsequent data
exchanges over the new
socket
 Similar concept applies to
UDP too
application viewpoint
TCP provides reliable, in-order
transfer of bytes (“pipe”)
between client and server
Transport Layer 3-22
Client/server socket interaction: TCP
Server (running on hostid)
Client
create socket,
port=x, for
incoming request:
welcomeSocket =
ServerSocket(port)
TCP
wait for incoming
connection request connection
connectionSocket =
welcomeSocket.accept()
read request from
connectionSocket
write reply to
connectionSocket
close
connectionSocket
create socket,
setup connect to hostid, port=x
clientSocket =
Socket(hostid, port)
send request using
clientSocket
read reply from
clientSocket
close
clientSocket
Transport Layer 3-23
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
24
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
25
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
26
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
27
TCP Sockets vs UDP Sockets
 TCP socket identified
by 4-tuple:




source IP address
source port number
dest IP address
dest port number
 Dest IP and port
are not explicitly
attached to
segment.
 Server has two types
of sockets:
When client knocks on
serverSocket’s
“door,” server creates
connectionSocket and
completes TCP conx.
 Web servers have
different sockets for
each connecting client


non-persistent HTTP will
have different socket for
each request
Transport Layer 3-28
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”
Throughput
 some apps (e.g.,
multimedia) require
minimum amount of
throughput to be
“effective”
 other apps (“elastic
apps”) make use of
whatever throughput
they get
Security
 Encryption, data
integrity, …
2: Application Layer
29
Transport service requirements of common apps
Application
Data loss
file transfer
e-mail
Web documents
real-time audio/video
no loss
no loss
no loss
loss-tolerant
stored audio/video
interactive games
instant messaging
loss-tolerant
loss-tolerant
no loss
Throughput
Time Sensitive
no
elastic
no
elastic
no
elastic
audio: 5kbps-1Mbps yes, 100’s msec
video:10kbps-5Mbps
yes, few secs
same as above
yes, 100’s msec
few kbps up
yes and no
elastic
2: Application Layer
30
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 throughput
guarantees, security
UDP service:
 unreliable data transfer
between sending and
receiving process
 does not provide:
connection setup,
reliability, flow control,
congestion control, timing,
throughput guarantee, or
security
Q: why bother? Why is
there a UDP?
2: Application Layer
31
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]
HTTP (eg Youtube),
RTP [RFC 1889]
SIP, RTP, proprietary
(e.g., Skype)
TCP
TCP
TCP
TCP
TCP or UDP
typically UDP
2: Application Layer
32
Chapter 2 outline
 2.1 Principles of app
layer protocols


 2.6 P2P file sharing
clients and servers
app requirements
 2.2 Web and HTTP
 2.3 FTP
 2.4 Electronic Mail
 SMTP, POP3, IMAP
 2.5 DNS
Transport Layer 3-33
Web and HTTP
First some jargon
 Web page consists of objects
 Object can be HTML file, JPEG image, Java
applet, audio file,…
 Web page consists of base HTML-file which
includes several referenced objects
 Each object is addressable by a URL
 Example URL:
www.someschool.edu/someDept/pic.gif
host name
path name
2: Application Layer
34
HTTP connections
Nonpersistent HTTP
 At most one object
(e.g., a HTML file, or a
jpeg image but not
both!) is sent over a
TCP connection.
 HTTP/1.0 uses
nonpersistent HTTP
Persistent HTTP
 Multiple objects can
be sent over single
TCP connection
between client and
server.
 HTTP/1.1 uses
persistent connections
in default mode
Transport Layer 3-35
Non-Persistent HTTP Response
time modeling
Definition of RRT: time to
send a small packet to
travel from client to
initiate TCP
server and back.
connection
Response time:
RTT
request
 one RTT to initiate TCP
file
connection
RTT
 one RTT for HTTP request
file
and first few bytes of
received
response to return
 One file/one object
time
transmission time
total = 2RTT+transmit time
time to
transmit
file
time
Transport Layer 3-36
Persistent HTTP
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
HTTP is “stateless”
 server maintains no information about past client requests
Transport Layer 3-37
User-server interaction: authorization
Authorization : control access to
server
client
server content
usual http request msg
 authorization credentials:
typically name, password
401: authorization req.
WWW authenticate:
 stateless: client must present
authorization in each request
 authorization: header line in
each request
 if no authorization: header,
server refuses access, sends
 WWW authenticate:
header line in response
usual http request msg
+ Authorization: <cred>
usual http response msg
usual http request msg
+ Authorization: <cred>
usual http response msg
time
Transport Layer 3-38
Cookies: keeping “state” (privacy issue?)
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
amazon
cookiespecific
action
cookiespectific
action
Transport Layer 3-39
Cookies (continued)
What cookies can bring:
 authorization
 shopping carts
 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
How to keep “state”:
 protocol endpoints: maintain state
at sender/receiver over multiple
transactions
 cookies: http messages carry state
2: Application Layer
40
Web caches (proxy server)
Goal: satisfy client request without involving origin server
 user sets browser: Web
accesses via cache
 browser sends all HTTP
requests to cache


If object in cache:
cache returns object
else cache requests
object from origin
server, then returns
object to client
origin
server
client
client
Proxy
server
origin
server
Transport Layer 3-41
Content distribution networks (CDNs)
 The content providers (e.g.,
foxnews.com) own the original
server
Content replication
 CDN company (e.g., Akamai)
installs hundreds of CDN
servers throughout Internet
 in lower-tier ISPs, close
to users
 CDN replicates its customers’
content in CDN servers.
When provider updates
content, CDN updates
servers
origin server
in North America
CDN distribution node
CDN server
in S. America CDN server
in Europe
CDN server
in Asia
Transport Layer 3-42
More on CDN
goto www.cdn.com
goto the nearest CDN server
not just Web pages
 streaming stored audio/video
 streaming real-time audio/video

CDN nodes create application-layer overlay network
Transport Layer 3-43
FTP: separate control, data connections
TCP control connection
port 21
 FTP client contacts FTP




server at port 21, specifying
TCP as transport protocol
Client obtains authorization
over control connection
Client browses remote
directory by sending
commands over control
connection.
When server receives a
command for a file transfer,
the server opens a TCP data
connection to client
After transferring one file,
server closes connection.
FTP
client
TCP data connection
port 20
FTP
server
 Server opens a second TCP
data connection to transfer
another file.
 Control connection: “out of
band”
 FTP server maintains “state”:
current directory, earlier
authentication
Transport Layer 3-44
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,
Mozilla Thunderbird
 outgoing, incoming messages
stored on server
SMTP
SMTP
mail
server
user
agent
user
agent
mail
server
user
agent
user
agent
user
agent
2: Application Layer
45
Scenario: Alice sends message to Bob
1) Alice uses UA to compose
message to bob
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
Access to folders:
Yes with IMAP or HTTP;
No with POP3
1
user
agent
SMTP
2
HTTP
mail
server
3
SMTP
4
mail
server
5
POP3
IMAP
6
user
agent
HTTP
Transport Layer 3-46
SMTP: final words
 SMTP establishes a direct
client-server (persistent)
TCP connection
 SMTP requires message
(header & body) to be in 7bit ASCII
 For non-ASCII data, use
Multipurpose Internet Mail
Extension (MIME) encoding
 Encoding method (e.g.,
base64) and type of the
encoded data (e.g., jpeg)
are sent in the header
Comparison with HTTP:
 HTTP: pull (client request)
 SMTP: push (client send)
 both have ASCII
command/response
interaction, status codes
 HTTP: each object
encapsulated in its own
response msg
 SMTP: multiple objects
sent in multipart msg
Transport Layer 3-47
DNS: Domain Name System
 Maps between a host’s  Local (default), Root and
name and its IP
address
 Other functions


Authoritative name servers
host and mail server
aliasing (with multiple
names)
Load balancing with
replicated web servers
(one name maps to a set
of IP addresses
 distributed database
implemented with a
hierarchy and caching
Transport Layer 3-48
P2P: centralized directory
original “Napster” design
1) when a user (peer)
connects, it informs
central server:


Bob
centralized
directory server
1
peers
1
IP address
content
2) Alice queries for a file
3) Alice requests/gets file
from Bob
4) A node = client + server
5) failure, bottleneck,
copyright infringement
3
1
2
1
Alice
Transport Layer 3-49
P2P: decentralized directory
KaZaA/FastTrack
 use a bootstrap node
 Each peer is either a
group leader or assigned
to a group leader.
 Group leader tracks the
content in all its group
members.
 Peer queries group
leader; group leader may
query other group
leaders.
ordinary peer
group-leader peer
Bootstrap node
neighoring relationships
in overlay network
Transport Layer 3-50
P2P: Query flooding
Gnutella
 no hierarchy/group
leaders
 use bootstrap node to
learn about others
 send join message
 Send query to neighbors
 Neighbors forward query
 If queried peer has
object, it sends message
back to querying peer
join
Transport Layer 3-51
P2P: more on query flooding
Pros
 no group leaders (which maybe overburdened)
Cons
 even more difficult to maintain (when nodes leave)
 may generate excessive query traffic

Solution: limit the number of “hops” or query radius
 query radius: may not find content when present
 bootstrap node
Transport Layer 3-52
File Distribution: Server-Client vs P2P
Question : How much time to distribute file
from one server to N peers?
us: server upload
bandwidth
Server
us
File, size F
dN
uN
u1
d1
u2
ui: peer i upload
bandwidth
d2
di: peer i download
bandwidth
Network (with
abundant bandwidth)
2: Application Layer
53
File distribution time: server-client
 server sequentially
sends N copies:

NF/us time
 client i takes F/di
time to download
Time to distribute F
to N clients using
client/server approach
Server
F
us
dN
u1 d1 u2
d2
Network (with
abundant bandwidth)
uN
= dcs = max { NF/us, F/min(di) }
i
increases linearly in N
(for large N)
2: Application Layer
54
File distribution time: P2P
 server must send one copy:
F/us time
 client i takes F/di time to
download
 NF bits must be uploaded
and downloaded (aggregate)
Server
F
us
dN
u1 d1 u2
d2
Network (with
abundant bandwidth)
uN
 fastest possible upload rate: us + Sui
 Download faster than upload
(so won’t be the bottleneck)
dP2P = max { F/us, F/min(di) , NF/(us + Sui) }
i
2: Application Layer
55
Server-client vs. P2P: example
Client upload rate = u, F/u = 1 hour, us = 10u, dmin ≥ us
Minimum Distribution Time
3.5
P2P
Client-Server
3
2.5
2
1.5
1
0.5
0
0
5
10
15
20
25
30
35
N
2: Application Layer
56
File distribution: BitTorrent
 P2P file distribution
torrent: group of
peers exchanging
chunks of a file
tracker: tracks peers
participating in torrent
obtain list
of peers
trading
chunks
peer
2: Application Layer
57
BitTorrent (1)
 file divided into 256KB chunks.
 peer joining torrent:
has no chunks, but will accumulate them over time
 registers with tracker to get list of peers,
connects to subset of peers (“neighbors”)
 while downloading, peer uploads chunks to other
peers.
 peers may come and go
 once peer has entire file, it may (selfishly) leave or
(altruistically) remain

2: Application Layer
58
BitTorrent (2)
Pulling Chunks
 at any given time,
different peers have
different subsets of
file chunks
 periodically, a peer
(Alice) asks each
neighbor for list of
chunks that they have.
 Alice sends requests
for her missing chunks
 rarest first
Sending Chunks: tit-for-tat
 Alice sends chunks to four
neighbors currently
sending her chunks at the
highest rate
 re-evaluate top 4 every
10 secs
 every 30 secs: randomly
select another peer,
starts sending chunks
 newly chosen peer may
join top 4
 “optimistically unchoke”
2: Application Layer
59
BitTorrent: Tit-for-tat
(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
With higher upload rate,
can find better trading
partners & get file faster!
2: Application Layer
60
Distributed Hash Table (DHT)
 DHT = distributed P2P database
 Database has (key, value) pairs;
 key: ss number; value: human name
 key: content type; value: IP address
 Peers query DB with key

DB returns values that match the key
 Peers can also insert (key, value) peers
DHT Identifiers
 Assign integer identifier to each peer in range
[0,2n-1].

Each identifier can be represented by n bits.
 Require each key to be an integer in same range.
 To get integer keys, hash original key.
 eg, key = h(“Led Zeppelin IV”)
 This is why they call it a distributed “hash” table
How to assign keys to peers?
 Central issue:

Assigning (key, value) pairs to peers.
 Rule: assign key to the peer that has the
closest ID.
 Convention in lecture: closest is the
immediate successor of the key.
 Ex: n=4; peers: 1,3,4,5,8,10,12,14;
 key
= 13, then successor peer = 14
 key = 15, then successor peer = 1
Circular DHT (1)
1
3
15
4
12
5
10
8
 Each peer only aware of immediate successor
and predecessor.
 “Overlay network”
Circle DHT (2)
O(N) messages
on avg to resolve
query, when there
are N peers
0001
Who’s resp
for key 1110 ?
I am
0011
1111
1110
0100
1110
1110
1100
1110
1110
Define closest
as closest
successor
1010
1110
1000
0101
Peer Churn
1
3
15
4
12
•To handle peer churn, require
each peer to know the IP address
of its two successors.
• Each peer periodically pings its
two successors to see if they
are still alive.
5
10
8
 Peer 5 abruptly leaves
 Peer 4 detects; makes 8 its immediate successor;
asks 8 who its immediate successor is; makes 8’s
immediate successor its second successor.
 What if peer 13 wants to join?
P2P Case study: Skype
Skype clients (SC)
 inherently P2P: pairs
of users communicate.
 proprietary
Skype
login server
application-layer
protocol (inferred via
reverse engineering)
 hierarchical overlay
with SNs
 Index maps usernames
to IP addresses;
distributed over SNs
Supernode
(SN)
2: Application Layer
67
Peers as relays
 Problem when both
Alice and Bob are
behind “NATs”.

NAT prevents an outside
peer from initiating a call
to insider peer
 Solution:
 Using Alice’s and Bob’s
SNs, Relay is chosen
 Each peer initiates
session with relay.
 Peers can now
communicate through
NATs via relay
2: Application Layer
68