This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
GET /somedir/page.html HTTP/1.1Host: www.someschool.edu User-agent: Mozilla/4.0Connection: close Accept-language:fr
(extra carriage return, line feed)
request line(GET, POST,
HEAD commands)
header lines
Carriage return, line feed
indicates end of message
2: Application Layer 35
HTTP request message: general format
2: Application Layer 36
Uploading form input
Post method: Web page often
includes form input Input is uploaded to
server in entity body
URL method: Uses GET method Input is uploaded in
URL field of request line:
www.somesite.com/animalsearch?monkeys&banana
2: Application Layer 37
Method types
HTTP/1.0 GET POST HEAD
asks server to leave requested object out of 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
2: Application Layer 38
HTTP response message
HTTP/1.1 200 OK Connection closeDate: 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 ...
status line(protocol
status codestatus phrase)
header lines
data, e.g., requestedHTML file
2: Application Layer 39
HTTP response status 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
In first line in server->client response message.A few sample codes:
2: Application Layer 40
Trying out HTTP (client side) for yourself
1. Telnet to your favorite Web server:
Opens TCP connection to port 80(default HTTP server port) at cis.poly.edu.Anything typed in sent to port 80 at cis.poly.edu
telnet cis.poly.edu 80
2. Type in a GET HTTP request:
GET /~ross/ HTTP/1.1Host: cis.poly.edu
By typing this in (hit carriagereturn twice), you sendthis minimal (but complete) GET request to HTTP server
3. Look at response message sent by HTTP server!
2: Application Layer 41
User-server state: cookies
Many major Web sites use cookies
Four components:1) cookie header line of
HTTP response message
2) cookie header line in HTTP request message
3) cookie file kept on user’s host, managed by user’s browser
4) back-end database at Web site
Example: Susan always access
Internet always from PC visits specific e-
commerce site for first time
when initial HTTP requests arrives at site, site creates: unique ID entry in backend
database for ID
2: Application Layer 42
Cookies: keeping “state” (cont.)
client server
usual http response msg
usual http response msg
cookie file
one week later:
usual http request msg
cookie: 1678cookie-specificaction
access
ebay 8734usual http request
msgAmazon server
creates ID1678 for usercreate
entry
usual http response Set-cookie: 1678
ebay 8734amazon 1678
usual http request msg
cookie: 1678cookie-spectificaction
accessebay 8734amazon 1678
backenddatabase
2: Application Layer 43
Cookies (continued)
What cookies can bring: authorization shopping carts recommendations user session state
(Web e-mail)
Cookies and privacy: cookies permit sites
to learn a lot about you
you may supply name and e-mail to sites
aside
How to keep “state”: protocol endpoints: maintain
state at sender/receiver over multiple transactions
cookies: http messages carry state
2: Application Layer 44
Web caches (proxy server)
user sets browser: Web accesses via cache
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
Goal: satisfy client request without involving origin server
client
Proxyserver
client
HTTP request
HTTP response
HTTP request HTTP request
origin server
origin server
HTTP response HTTP response
2: Application Layer 45
More about Web caching
cache acts as both client and server
typically cache is installed by ISP (university, company, residential ISP)
Why Web caching? reduce response time
for client request reduce traffic on an
institution’s access link.
Internet dense with caches: enables “poor” content providers to effectively deliver content (but so does P2P file sharing)
2: Application Layer 46
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 utilization on LAN = 15% utilization on access link = 100% total delay = Internet delay +
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
useragent
mailserver
mailserver user
agent
1
2 3 4 56
2: Application Layer 62
Sample SMTP interaction S: 220 hamburger.edu C: HELO crepes.fr S: 250 Hello crepes.fr, pleased to meet you C: MAIL FROM: <[email protected]> S: 250 [email protected]... Sender ok C: RCPT TO: <[email protected]> S: 250 [email protected] ... Recipient ok C: DATA S: 354 Enter mail, end with "." on a line by itself C: Do you like ketchup? C: How about pickles? C: . S: 250 Message accepted for delivery C: QUIT S: 221 hamburger.edu closing connection
2: Application Layer 63
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 64
SMTP: final words
SMTP uses persistent connections
SMTP requires message (header & body) to be in 7-bit 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 65
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! body
the “message”, ASCII characters only
header
body
blankline
Message Formats – RFC 822
RFC 822 header fields related to message transport.
2: Application Layer 66
Message Formats – RFC 822 (2)
Some fields used in the RFC 822 message header.
2: Application Layer 67
MIME – Multipurpose Internet Mail Extensions
Problems with international languages:• Languages with accents
(French, German).• Languages in non-Latin alphabets
(Hebrew, Russian).• Languages without alphabets
(Chinese, Japanese).• Messages not containing text at all
(audio or images).
2: Application Layer 68
2: Application Layer 69
Message format: multimedia extensions
MIME: multimedia mail extension, RFC 2045, 2056 additional lines in msg header declare MIME content
type
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
multimedia datatype, subtype,
parameter declaration
method usedto encode data
MIME version
encoded data
MIME
RFC 822 headers added by MIME.
2: Application Layer 70
MIME
The MIME types and subtypes defined in RFC 2045.
2: Application Layer 71
MIME
A multipart message containing enriched and audio alternatives.2: Application Layer 72
2: Application Layer 73
Mail access protocols
SMTP: delivery/storage to receiver’s server Mail access protocol: retrieval from server
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: gmail, Hotmail, Yahoo! Mail, etc.
useragent
sender’s mail server
useragent
SMTP SMTP accessprotocol
receiver’s mail server
2: Application Layer 74
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
C: list S: 1 498 S: 2 912 S: . C: retr 1 S: <message 1 contents> S: . C: dele 1 C: retr 2 S: <message 1 contents> S: . C: dele 2 C: quit S: +OK POP3 server signing off
S: +OK POP3 server ready C: user bob S: +OK C: pass hungry S: +OK user successfully logged on
2: Application Layer 75
POP3 (more) and IMAPMore about POP3 Previous example
uses “download and delete” mode.
Bob cannot re-read e-mail 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
Comparison of POP3 and IMAP
2: Application Layer 76
2: Application Layer 77
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 applications 2.7 Socket
programming with TCP 2.8 Socket
programming with UDP
2: Application Layer 78
DNS: Domain Name System
People: many identifiers: SSN, name, passport #
Internet hosts, routers: IP address (32 bit) -
used for addressing datagrams
“name”, e.g., ww.yahoo.com - used by humans
Q: map between IP addresses and name ?
Domain Name System: distributed database
implemented in hierarchy of many name servers
application-layer protocol host, routers, name servers to communicate to resolve names (address/name translation) note: core Internet
function, implemented as application-layer protocol
complexity at network’s “edge”
The DNS Name Space
A portion of the Internet domain name space.
2: Application Layer 79
2: Application Layer 80
DNS
Why not centralize DNS? single point of failure traffic volume distant centralized
database maintenance
doesn’t scale!
DNS services hostname to IP
address translation host aliasing
Canonical, alias names
mail server aliasing load distribution
replicated Web servers: set of IP addresses for one canonical name
2: Application Layer 81
Root DNS Servers
com DNS servers org DNS servers edu DNS servers
poly.eduDNS servers
umass.eduDNS servers
yahoo.comDNS servers
amazon.comDNS servers
pbs.orgDNS servers
Distributed, Hierarchical Database
Client wants IP for www.amazon.com; 1st approx: client queries a root server to find com DNS
server client queries com DNS server to get
amazon.com DNS server client queries amazon.com DNS server to get IP
address for www.amazon.com
2: Application Layer 82
DNS: Root name servers contacted by local name server that can not resolve name root name server:
contacts authoritative name server if name mapping not known
gets mapping returns mapping to local name server
13 root name servers worldwideb USC-ISI Marina del Rey, CA
l ICANN Los Angeles, CA
e NASA Mt View, CAf Internet Software C. Palo Alto, CA (and 36 other locations)
i Autonomica, Stockholm (plus 28 other locations)
k RIPE London (also 16 other locations)
m WIDE Tokyo (also Seoul, Paris, SF)
a Verisign, Dulles, VAc Cogent, Herndon, VA (also LA)d U Maryland College Park, MDg US DoD Vienna, VAh ARL Aberdeen, MDj Verisign, ( 21 locations)
2: Application Layer 83
TLD and Authoritative Servers Top-level domain (TLD) servers:
responsible for com, org, net, edu, etc, and all top-level country domains uk, fr, ca, jp.
Network Solutions maintains servers for com TLD
Educause for edu TLD Authoritative DNS servers:
organization’s DNS servers, providing authoritative hostname to IP mappings for organization’s servers (e.g., Web, mail).
can be maintained by organization or service provider
2: Application Layer 84
Local Name Server
does not strictly belong to hierarchy each ISP (residential ISP, company,
university) has one. also called “default name server”
when host makes DNS query, query is sent to its local DNS server acts as proxy, forwards query into hierarchy
2: Application Layer 85
requesting hostcis.poly.edu
gaia.cs.umass.edu
root DNS server
local DNS serverdns.poly.edu
1
23
4
5
6
authoritative DNS serverdns.cs.umass.edu
78
TLD DNS server
DNS name resolution example
Host at cis.poly.edu wants IP address for gaia.cs.umass.edu
iterated query: contacted server
replies with name of server to contact
“I don’t know this name, but ask this server”
2: Application Layer 86
requesting hostcis.poly.edu
gaia.cs.umass.edu
root DNS server
local DNS serverdns.poly.edu
1
2
45
6
authoritative DNS serverdns.cs.umass.edu
7
8
TLD DNS server
3recursive query: puts burden of
name resolution on contacted name server
heavy load?
DNS name resolution example
2: Application Layer 87
DNS: caching and updating records once (any) name server learns mapping, it
caches mapping cache entries timeout (disappear) after
some time TLD servers typically cached in local name
servers• Thus root name servers not often visited
update/notify mechanisms under design by IETF RFC 2136 http://www.ietf.org/html.charters/dnsind-charter.html
2: Application Layer 88
DNS records
DNS: distributed db storing resource records (RR)
Type=NS name is domain (e.g.
foo.com) value is hostname of
authoritative name server for this domain
RR format: (name, value, type, ttl)
Type=A name is hostname value is IP address
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 89
DNS protocol, messagesDNS 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 90
DNS protocol, messages
Name, type fields for a query
RRs in responseto query
records forauthoritative servers
additional “helpful”info that may be used
2: Application Layer 91
Inserting records into DNS
example: new startup “Network Utopia” register name networkuptopia.com at DNS
registrar (e.g., Network Solutions) provide names, IP addresses of authoritative name
server (primary and secondary) registrar inserts two RRs into com TLD server:
(networkutopia.com, dns1.networkutopia.com, NS)(dns1.networkutopia.com, 212.212.212.1, A)
create authoritative server Type A record for www.networkuptopia.com; Type MX record for networkutopia.com
How do people get IP address of your Web site?
2: Application Layer 92
Chapter 2: Application layer
2.1 Principles of network applications app architectures app requirements
2.2 Web and HTTP 2.3 FTP 2.4 Electronic Mail
SMTP, POP3, IMAP
2.5 DNS
2.6 P2P applications 2.7 Socket
programming with TCP 2.8 Socket
programming with UDP
What is P2P?
“the sharing of computer resources and services by direct exchange of information”
2: Application Layer 93
What is P2P?
“P2P is a class of applications that take advantage of resources – storage, cycles, content, human presence – available at the edges of the Internet. Because accessing these decentralized resources means operating in an environment of unstable and unpredictable IP addresses P2P nodes must operate outside the DNS system and have significant, or total autonomy from central servers”
2: Application Layer 94
What is P2P?
“A distributed network architecture may be called a P2P network if the participants share a part of their own resources. These shared resources are necessary to provide the service offered by the network. The participants of such a network are both resource providers and resource consumers”
2: Application Layer 95
What is P2P?
Various definitions seem to agree on sharing of resources direct communication between equals
(peers) no centralized control
2: Application Layer 96
What is a peer?
“…an entity with capabilities similar to other entities in the system.”
“…a network entity with which one performs peering operations.”
“…a participant that acts as both client and server.”
2: Application Layer 97
Client/Server Architecture
Well known, powerful, reliable server is a data source
Clients request data from server
Very successful model WWW (HTTP), FTP,
Web services, etc.
Server
Client
Client Client
Client
Internet
* Figure from http://project-iris.net/talks/dht-toronto-03.ppt2: Application Layer 98
Client/Server Limitations
Scalability is hard to achieve Presents a single point of failure Requires administration Unused resources at the network edge
P2P systems try to address these limitations
2: Application Layer 99
P2P Architecture
All nodes are both clients and servers Provide and consume
data Any node can initiate
a connection
No centralized data source “The ultimate form of
democracy on the Internet”
“The ultimate threat to copy-right protection on the Internet”
* Content from http://project-iris.net/talks/dht-toronto-03.ppt
Node
Node
Node Node
Node
Internet
2: Application Layer 100
P2P Network Characteristics
Clients are also servers and routers Nodes contribute content, storage, memory, CPU
Nodes are autonomous (no administrative authority)
Network is dynamic: nodes enter and leave the network “frequently”
Nodes collaborate directly with each other (not through well-known servers)
Nodes have widely varying capabilities
2: Application Layer 101
P2P Goals and Benefits Efficient use of resources
Unused bandwidth, storage, processing power at the “edge of the network”
Scalability No central information, communication and computation bottleneck Aggregate resources grow naturally with utilization
Reliability Replicas Geographic distribution No single point of failure
Ease of administration Nodes self-organize Built-in fault tolerance, replication, and load balancing Increased autonomy
Anonymity – Privacy not easy in a centralized system
Dynamism highly dynamic environment ad-hoc communication and collaboration
Application-level, client-server protocol over point-to-point TCP
Four steps: Connect to Napster server Upload your list of files (push) to server. Give server keywords to search the full list with. Select “best” of correct answers. (pings)
2: Application Layer 114
Napster
napster.com
users
File list is uploaded
1.
2: Application Layer 115
Napster
napster.com
user
Requestand
results
User requests search at server.
2.
2: Application Layer 116
Napster
napster.com
user
pingspings
User pings hosts that apparently have data.
Looks for best transfer rate.
3.
2: Application Layer 117
Napster
napster.com
user
Retrievesfile
User retrieves file
4.
2: Application Layer 118
Napster
Central Napster server Can ensure correct results Fast search
Bottleneck for scalability Single point of failure Susceptible to denial of service
• Malicious users• Lawsuits, legislation
Hybrid P2P system – “all peers are equal but some are more equal than others” Search is centralized File transfer is direct (peer-to-peer)
2: Application Layer 119
Unstructured
fully distributed no central server
used by Gnutella Each peer indexes
the files it makes available for sharing (and no other files)
overlay network: graph edge between peer X
and Y if there’s a TCP connection
all active peers and edges form overlay net
edge: virtual (not physical) link
given peer typically connected with < 10 overlay neighbors
2: Application Layer 120
Gnutella: Query flooding
Query
QueryHit
Query
Query
QueryHit
Query
Query
QueryHit
File transfer:HTTP
Query messagesent over existing TCPconnections peers forwardQuery message QueryHit sent over reversepath
2: Application Layer 121
Gnutella: Peer joining
1. joining peer Alice must find another peer in Gnutella network: use list of candidate peers
2. Alice sequentially attempts TCP connections with candidate peers until connection setup with Bob
3. Flooding: Alice sends Ping message to Bob; Bob forwards Ping message to his overlay neighbors (who then forward to their neighbors….) peers receiving Ping message respond to
Alice with Pong message4. Alice receives many Pong messages, and can
then setup additional TCP connections
2: Application Layer 122
Unstructured
Bob
Alice
Jane
Judy
Carl
Scalability:limited scopeflooding
2: Application Layer 123
Unstructured
Gnutella model Benefits:
Limited per-node state Fault tolerant
Drawbacks: High bandwidth usage Long time to locate item No guarantee on success
rate Possibly unbalanced load
Bob
Alice
Jane
Judy
Carl
2: Application Layer 124
Gnutella
Searching by flooding: If you don’t have the file
you want, query 7 of your neighbors.
If they don’t have it, they contact 7 of their neighbors, for a maximum hop count of 10.
Requests are flooded, but there is no tree structure.
No looping but packets may be received twice.
Reverse path forwarding
* Figure from http://computer.howstuffworks.com/file-sharing.htm
2: Application Layer 125
Gnutella
fool.* ?
TTL = 2
2: Application Layer 126
Gnutella
TTL = 1
TTL = 1
IPX:fool.her
fool.herX
TTL = 1
2: Application Layer 127
Gnutella
fool.you
fool.meY
IPY:fool.me fool.you2: Application Layer 128
Gnutella
IPY:fool.me fool.you 2: Application Layer 129
Gnutella: strengths and weaknesses pros:
flexibility in query processing complete decentralization simplicity fault tolerance/self-organization
cons: severe scalability problems susceptible to attacks
Pure P2P system
2: Application Layer 130
Gnutella: initial problems and fixes 2000: avg size of reachable network only 400-
800 hosts. Why so small? modem users: not enough bandwidth to provide
search routing capabilities: routing black holes
Fix: create peer hierarchy based on capabilities previously: all peers identical, most modem black
holes preferential connection:
• favors routing to well-connected peers• favors reply to clients that themselves serve large
number of files: prevent freeloading
2: Application Layer 131
Structured
FreeNet, Chord, CAN, Tapestry, Pastry model
001 012
212
305
332
212 ?
212 ?
2: Application Layer 132
Structured
FreeNet, Chord, CAN, Tapestry, Pastry model
Benefits: Manageable per-node state Manageable bandwidth
usage and time to locate item
Guaranteed success
Drawbacks: Possibly unbalanced load Harder to support fault
tolerance
001 012
212
305
332
212 ?
212 ?
2: Application Layer 133
Unstructured vs Structured P2P
The systems we described do not offer any guarantees about their performance (or even correctness)
Structured P2P Scalable guarantees on numbers of hops to
answer a query Maintain all other P2P properties (load balance,
self-organization, dynamic nature)
Approach: Distributed Hash Tables (DHT)
2: Application Layer 134
Improvements: SuperPeers
KaZaA model Hybrid centralized and unstructured Advantages and disadvantages?
2: Application Layer 135
Hierarchical Overlay
between centralized index, query flooding approaches
each peer is either a super node or assigned to a super node TCP connection between
peer and its super node. TCP connections between
some pairs of super nodes.
Super node tracks content in its children
ordinary peer
group-leader peer
neighoring re la tionshipsin overlay network
2: Application Layer 136
Kazaa (Fasttrack network)
Hybrid of centralized Napster and decentralized Gnutella hybrid P2P system
Super-peers act as local search hubs Each super-peer is similar to a Napster server for a small
portion of the network Super-peers are automatically chosen by the system based
on their capacities (storage, bandwidth, etc.) and availability (connection time)
Users upload their list of files to a super-peer Super-peers periodically exchange file lists You send queries to a super-peer for files of interest
2: Application Layer 137
File Distribution: Server-Client vs P2PQuestion : How much time to distribute file
from one server to N peers?
us
u2d1 d2u1
uN
dN
Server
Network (with abundant bandwidth)
File, size F
us: server upload bandwidth
ui: peer i upload bandwidth
di: peer i download bandwidth
2: Application Layer 138
File distribution time: server-client
us
u2d1 d2u1
uN
dN
Server
Network (with abundant bandwidth)
F server
sequentially sends N copies: NF/us time
client i takes F/di
time to download
increases linearly in N(for large N)
= dcs = max { NF/us, F/min(di) }i
Time to distribute F to N clients using
client/server approach
2: Application Layer 139
File distribution time: P2P
us
u2d1 d2u1
uN
dN
Server
Network (with abundant bandwidth)
F server must send one
copy: F/us time
client i takes F/di time to download
NF bits must be downloaded (aggregate) fastest possible upload rate: us + ui
dP2P = max { F/us, F/min(di) , NF/(us + ui) }i
2: Application Layer 140
0
0.5
1
1.5
2
2.5
3
3.5
0 5 10 15 20 25 30 35
N
Min
imu
m D
istr
ibut
ion
Tim
e P2P
Client-Server
Server-client vs. P2P: example
Client upload rate = u, F/u = 1 hour, us = 10u, dmin ≥ us
2: Application Layer 141
File distribution: BitTorrent Efficient content distribution system using file
swarming. Usually does not perform all the functions of a typical p2p system, like searching.
CacheLogic estimated (around 2003 or so) that BitTorrent Traffic accounts for roughly 35% of all traffic on the Internet.
Author: Bram Cohen
2: Application Layer 142
File distribution: BitTorrent
tracker: tracks peers participating in torrent
torrent: group of peers exchanging chunks of a file
obtain listof peers
trading chunks
peer
P2P file distribution
2: Application Layer 143
BitTorrent
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) remain2: Application Layer 144
BT: File sharing
To share a file or group of files, a peer first creates a .torrent file, a small file that contains: metadata about the files to be shared, and Information about the tracker, the computer that
coordinates the file distribution.
Peers first obtain a .torrent file, and then connect to the specified tracker, which tells them from which other peers to download the pieces of the file.
2: Application Layer 145
Overall Architecture
Web page with link to .torrent
A
B
C
Peer
[Leech]
Downloader
“US”
Peer
[Seed]
Peer
[Leech]
TrackerWeb Server
.torr
ent
2: Application Layer 146
Overall Architecture
Web page with link to .torrent
A
B
C
Peer
[Leech]
Downloader
“US”
Peer
[Seed]
Peer
[Leech]
Tracker
Get-announce
Web Server
2: Application Layer 147
Overall Architecture
Web page with link to .torrent
A
B
C
Peer
[Leech]
Downloader
“US”
Peer
[Seed]
Peer
[Leech]
Tracker
Response-peer list
Web Server
2: Application Layer 148
Overall Architecture
Web page with link to .torrent
A
B
C
Peer
[Leech]
Downloader
“US”
Peer
[Seed]
Peer
[Leech]
Tracker
Shake-hand
Web Server
Shake-hand
2: Application Layer 149
Overall Architecture
Web page with link to .torrent
A
B
C
Peer
[Leech]
Downloader
“US”
Peer
[Seed]
Peer
[Leech]
Tracker
pieces
pieces
Web Server
2: Application Layer 150
Overall Architecture
Web page with link to .torrent
A
B
C
Peer
[Leech]
Downloader
“US”
Peer
[Seed]
Peer
[Leech]
Tracker
piecespieces
pieces
Web Server
2: Application Layer 151
BT: The .torrent file
The URL of the tracker Pieces <hash1, hash 2,…, hash n> Piece length Name of the file Length of the file
2: Application Layer 152
BT: The Tracker
IP address, port, peer id State information (Completed or
Downloading) Returns a random list of peers
2: Application Layer 153
BT: 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
2: Application Layer 154
BT: Pieces and Sub-Pieces
A piece is broken into sub-pieces ... typically 16KB in size
Until a piece is assembled, only download the sub-pieces of that piece only
This policy lets pieces assemble quickly
2: Application Layer 155
BT: Pipelining
When transferring data over TCP, always have
several requests pending at once, to avoid a
delay between pieces being sent. At any point in
time, some number, typically 5, are requested
simultaneously.
Every time a piece or a sub-piece arrives, a new
request is sent out.
2: Application Layer 156
BT: Piece Selection
The order in which pieces are selected by different peers is critical for good performance
If an inefficient policy is used, then peers may end up in a situation where each has all identical set of easily available pieces, and none of the missing ones.
If the original seed is prematurely taken down, then the file cannot be completely downloaded! What are “good policies?”
2: Application Layer 157
BT: Chunk Selection
Strict Priority First Priority
Rarest First General rule
Random First Piece Special case, at the beginning
Endgame Mode Special case
2: Application Layer 158
Random First Piece
Initially, a peer has nothing to trade Important to get a complete piece ASAP Select a random piece of the file and
download it
2: Application Layer 159
Rarest Piece First
Determine the pieces that are most rare
among your peers, and download those
first.
This ensures that the most commonly
available pieces are left till the end to
download.
2: Application Layer 160
BT: 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 161
BT: Choking
Choking is a temporary refusal to upload. It is
one of BitTorrent’s most powerful idea to deal
with free riders (those who only download but
never upload).
Tit-for-tat strategy is based on game-theoretic
concepts.
2: Application Layer 162
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 163
Optimistic unchoking
A BitTorrent peer has a single “optimistic unchoke” to which it uploads regardless of the current download rate from it. This peer rotates every 30s
Reasons: To discover currently unused connections
are better than the ones being used To provide minimal service to new peers
2: Application Layer 164
Upload-Only mode
Once download is complete, a peer has no download rates to use for comparison nor has any need to use them. The question is, which nodes to upload to?
Policy: Upload to those with the best upload rate. This ensures that pieces get replicated faster, and new seeders are created fast
2: Application Layer 165
Questions about BT
Which features contribute to the efficiency of BitTorrent?
What is the effect of bandwidth constraints?
Is the Rarest First policy really necessary?
Must nodes perform seeding after downloading is complete?
How serious is the Last Piece Problem?
Does the incentive mechanism affect the performance
much?
2: Application Layer 166
Trackerless torrents
BitTorrent also supports "trackerless" torrents,
featuring a DHT implementation that allows
the client to download torrents that have been
created without using a BitTorrent tracker.
2: Application Layer 167
P2P: searching for information
File sharing (eg e-mule)
Index dynamically tracks the locations of files that peers share.
Peers need to tell index what they have.
Peers search index to determine where files can be found
Instant messaging Index maps user
names to locations. When user starts IM
application, it needs to inform index of its location
Peers search index to determine IP address of user.
Index in P2P system: maps information to peer location(location = IP address & port number).
2: Application Layer 168
P2P Case study: Skype
inherently P2P: pairs of users communicate.
proprietary application-layer protocol (inferred via reverse engineering)
hierarchical overlay with SNs
Index maps usernames to IP addresses; distributed over SNs
Skype clients (SC)
Supernode (SN)
Skype login server
2: Application Layer 169
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 170
P2P Review
Two key functions of P2P systems Sharing content Finding content
Sharing content Direct transfer between peers
• All systems do this Structured vs. unstructured placement of data Automatic replication of data