• No results found

Chapter 2: Application layer

N/A
N/A
Protected

Academic year: 2021

Share "Chapter 2: Application layer"

Copied!
68
0
0

Loading.... (view fulltext now)

Full text

(1)

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 applications

(2)

Some network apps

e-mail ❒  web ❒  instant messaging ❒  remote login ❒  P2P file sharing ❒  multi-user network games

❒  streaming stored video

clips ❒ voice over IP ❒  real-time video conferencing ❒  cloud computing ❒  A Simple Survey of

four most frequently used websites

requiring login and password

❒  http://

www.surveymonkey.co m/s/785PGPV

(3)

2: Application Layer 3

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

(4)

Application architectures

Client-server

❒ 

Peer-to-peer (P2P)

(5)

2: Application Layer 5

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

(6)

Google Data Centers

Estimated cost of data center: $600M

❒ 

Google spent $2.4B in 2007 on new data

(7)

2: Application Layer 7

Pure P2P architecture

no always-on server

❒  arbitrary end systems

directly communicate

❒  peers are intermittently

connected and change IP addresses

Highly scalable but difficult to manage

(8)

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

(9)

Transport Layer 3-9

some jargon related to

application-level protocols

Process: program running within a host. ❒  processes running in different hosts communicate by exchanging messages with an application-layer protocol, e.g., HTTP

(for web), SMTP, POP3 (for email access)

user agent: implements user interface &

application-level protocol

❍  Web: browser IE

(implements HTTP)

❍  E-mail: PINE, Outlook

(a reading agent

implements POP3 and a sending agent

(10)

A Big Picture: Processes Communication

via Sockets (API provided by OS)

IP address Port # (e.g., 80 for HTTP, and 25 for SMTP users user agent API

(11)

Transport Layer 3-11

Socket Programming (More in

Recitation/Project #1)

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

stream-oriented

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.

socket

App processes communicate with each other through

(12)

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,

ie, 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

❒  uses well-defined port #

(0 to 1023)

Proprietary protocols:

❒  can’t use well-define

port #s

(13)

Transport Layer 3-13

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

(14)

Socket-programming

Socket:

a door between application process

and end-end-transport protocol (UDP or

TCP)

process TCP with buffers, variables socket controlled by application developer controlled by operating system host or server process TCP with buffers, variables socket controlled by application developer controlled by operating system host or server internet

(15)

Transport Layer 3-15

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

application viewpoint

UDP provides unreliable transfer of groups of bytes (“datagrams”)

between client and server 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

(16)

1 Client/1 server with UDP socket

close

clientSocket

Server (running on hostid)

read reply from

clientSocket

create socket,

clientSocket =

DatagramSocket() (at port y)

Client

Create, address (hostid, port=x) send datagram request

using clientSocket 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)

(17)

2: Application Layer 17

Example: Java client (UDP)

sen

dP

acke

t

to network from network

re ceiveP acke t inF rom U ser keyboard monitor Process clientSocket UDP packet input stream UDP packet UDP socket Client

Get keyboard input (in lowercase) from users Send to a server for uppercase conversion Receive the converted characters and display them

(18)

Example: Java

server

(UDP)

import java.io.*; import java.net.*;

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) {

DatagramPacket receivePacket =

new DatagramPacket(receiveData, receiveData.length); serverSocket.receive(receivePacket);

Create datagram socket at port 9876

Create space for received datagram

Receive datagram

(19)

Transport Layer 3-19

Example: Java server (UDP), cont

String sentence = new String(receivePacket.getData());

InetAddress IPAddress = receivePacket.getAddress();

int port = receivePacket.getPort();

String capitalizedSentence = sentence.toUpperCase(); sendData = capitalizedSentence.getBytes();

DatagramPacket sendPacket =

new DatagramPacket(sendData, sendData.length, IPAddress, port); serverSocket.send(sendPacket); } } } Get IP addr port #, of Client/requester Write out datagram to socket

End of while loop,

loop back and wait for another datagram

Create datagram to send to client

(20)

Example: Java client (UDP)

import java.io.*; import java.net.*;

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(); Create input stream Create client socket Translate server name to IP address using DNS

(21)

Transport Layer 3-21

Example: Java client (UDP), cont.

DatagramPacket sendPacket =

new DatagramPacket(sendData, sendData.length, IPAddress, 9876);

clientSocket.send(sendPacket);

DatagramPacket receivePacket =

new DatagramPacket(receiveData, receiveData.length); clientSocket.receive(receivePacket); String modifiedSentence = new String(receivePacket.getData());

System.out.println("FROM SERVER:" + modifiedSentence); clientSocket.close();

} }

Create datagram with data-to-send, length, IP addr, port Send datagram

to server Read datagram

(22)

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

TCP provides reliable, in-order transfer of bytes (“pipe”)

between client and server

(23)

Transport Layer 3-23

Client/server socket interaction: TCP

wait for incoming connection request connectionSocket = welcomeSocket.accept() create socket, port=x, for incoming request: welcomeSocket = ServerSocket(port) create socket,

connect to hostid, port=x

clientSocket = Socket(hostid, port)

close

connectionSocket

read reply from

clientSocket

close

clientSocket

Server (running on hostid) Client

send request using

clientSocket

read request from

connectionSocket

write reply to

connectionSocket

TCP

(24)

Example: Java client (TCP)

import java.io.*; import java.net.*; class TCPClient {

public static void main(String argv[]) throws Exception {

String sentence;

String modifiedSentence;

BufferedReader inFromUser =

new BufferedReader(new InputStreamReader(System.in)); Socket clientSocket = new Socket("hostname", 6789);

DataOutputStream outToServer = new DataOutputStream(clientSocket.getOutputStream()); Create input stream Create client socket, connect to server Create output stream attached to socket

(25)

2: Application Layer 25

Example: Java client (TCP), cont.

BufferedReader inFromServer = new BufferedReader(new InputStreamReader(clientSocket.getInputStream())); sentence = inFromUser.readLine(); outToServer.writeBytes(sentence + '\n'); modifiedSentence = inFromServer.readLine();

System.out.println("FROM SERVER: " + modifiedSentence); clientSocket.close(); } } Create input stream attached to socket Send line to server Read line from server

(26)

Example: Java server (TCP)

import java.io.*; import java.net.*; class TCPServer {

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())); Create welcoming socket at port 6789 Wait, on welcoming

socket for contact by client Create input stream, attached

(27)

2: Application Layer 27

Example: Java server (TCP), cont

DataOutputStream outToClient =

new DataOutputStream(connectionSocket.getOutputStream());

clientSentence = inFromClient.readLine(); capitalizedSentence = clientSentence.toUpperCase() + '\n'; outToClient.writeBytes(capitalizedSentence); } } } Read in line from socket Create output stream, attached to socket

Write out line to socket

End of while loop,

loop back and wait for another client connection

(28)

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

(29)

2: Application Layer 29

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

(30)

Transport service requirements of common apps

Application file transfer e-mail Web documents real-time audio/video stored audio/video interactive games instant messaging Data loss no loss no loss no loss loss-tolerant loss-tolerant loss-tolerant no loss Throughput elastic elastic elastic audio: 5kbps-1Mbps video:10kbps-5Mbps same as above few kbps up elastic Time Sensitive no no no yes, 100’s msec yes, few secs yes, 100’s msec

(31)

2: Application Layer 31

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?

(32)

Internet apps: application, transport protocols

Application

e-mail remote terminal access Web file transfer streaming multimedia Internet telephony Application layer protocol SMTP [RFC 2821] Telnet [RFC 854] HTTP [RFC 2616] FTP [RFC 959] HTTP (eg Youtube), RTP [RFC 1889] SIP, RTP, proprietary (e.g., Skype) Underlying transport protocol TCP TCP TCP TCP TCP or UDP typically UDP

(33)

Transport Layer 3-33

Chapter 2 outline

2.1 Principles of app

layer protocols

❍  clients and servers

❍  app requirements ❒  2.2 Web and HTTP ❒  2.3 FTP ❒  2.4 Electronic Mail ❍  SMTP, POP3, IMAP ❒  2.5 DNS ❒ 2.6 P2P file sharing

(34)

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

(35)

Transport Layer 3-35

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

(36)

Non-Persistent HTTP Response

time modeling

Definition of RRT: 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 response to return

One file/one object

transmission time

total = 2RTT+transmit time

time to transmit file initiate TCP connection RTT request file RTT file received time time

(37)

Transport Layer 3-37

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”

(38)

User-server interaction: authorization

Authorization : control access to server content

❒  authorization credentials:

typically name, password

❒  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

client server usual http request msg 401: authorization req. WWW authenticate: usual http request msg + Authorization: <cred> usual http response msg usual http request msg + Authorization: <cred>

(39)

Transport Layer 3-39

Cookies: keeping “state” (privacy issue?)

client server usual http request msg usual http response + Set-cookie: 1678 usual http request msg cookie: 1678 usual http response msg usual http request msg cookie: 1678 usual http response msg cookie- specific action cookie- spectific action server creates ID 1678 for user access Cookie file amazon: 1678 ebay: 8734 Cookie file ebay: 8734 Cookie file amazon: 1678 ebay: 8734

one week later:

(40)

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

(41)

Transport Layer 3-41

Web caches (proxy 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

Goal: satisfy client request without involving origin server

client Proxy server client origin server origin server

(42)

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

(43)

Transport Layer 3-43

More on CDN

not just Web pages

❒  streaming stored audio/video

❒  streaming real-time audio/video

❍  CDN nodes create application-layer overlay network

goto the nearest CDN server goto www.cdn.com

(44)

FTP: separate control, data connections

❒  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 server FTP TCP control connection port 21 TCP data connection port 20

❒  Server opens a second TCP

data connection to transfer another file.

❒  Control connection: “out of

band”

❒  FTP server maintains “state”:

current directory, earlier authentication

(45)

2: Application Layer 45

Electronic Mail

Three major components:

❒  user agents

❒  mail servers

❒  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 user mailbox outgoing message queue mail server user agent user agent user agent mail server user agent user agent mail server user agent SMTP SMTP SMTP

(46)

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

user agent

mail

server server mail agentuser

1 2 3 4 5 6 SMTP POP3 IMAP SMTP HTTP HTTP Access to folders:

Yes with IMAP or HTTP; No with POP3

(47)

Transport Layer 3-47

SMTP: final words

❒  SMTP establishes a direct client-server (persistent) TCP connection ❒  SMTP requires message

(header & body) to be in 7-bit 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

(48)

DNS: Domain Name System

❒  Maps between a host’s

name and its IP address

❒  Other functions

❍  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

Local (default), Root and

(49)

Transport Layer 3-49

P2P: centralized directory

original “Napster” design 1) when a user (peer)

connects, it informs central server:

❍  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 centralized directory server peers Alice Bob 1 1 1 1 2 3

(50)

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

neighoring relationships

(51)

Transport Layer 3-51

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

(52)

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

(53)

2: Application Layer 53

File Distribution: Server-Client vs P2P

Question

: How much time to distribute file

from one server to

N peers

?

us u2 d1 d2 u1 uN dN Server Network (with abundant bandwidth) File, size F us: server upload bandwidth ui: peer i upload bandwidth di: peer i download bandwidth

(54)

File distribution time: server-client

us u2 d1 d 2 u1 uN dN Server Network (with abundant bandwidth) F ❒

server sequentially

sends N copies:

❍  NF/us time ❒ 

client i takes F/d

i

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

(55)

2: Application Layer 55

File distribution time: P2P

us u2 d1 d 2 u1 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 uploaded

and downloaded (aggregate)

❒  Download faster than upload

(so won’t be the bottleneck)

❒  fastest possible upload rate: us + Sui

(56)

0 0.5 1 1.5 2 2.5 3 3.5 0 5 10 15 20 25 30 35 N M inim um D is tribut ion T im e P2P Client-Server

Server-client vs. P2P: example

(57)

2: Application Layer 57

File distribution: BitTorrent

tracker: tracks peers

participating in torrent peers exchanging torrent:chunks of a file group of

obtain list of peers trading chunks peer ❒  P2P file distribution

(58)

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

(59)

2: Application Layer 59

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

v  re-evaluate top 4 every

10 secs

❒  every 30 secs: randomly

select another peer, starts sending chunks

v  newly chosen peer may

join top 4

(60)

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!

(61)

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

(62)

DHT Identifiers

Assign integer identifier to each peer in range

[0,2

n

-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”)

(63)

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

(64)

1 3 4 5 8 10 12 15

Circular DHT (1)

Each peer

only

aware of immediate successor

and predecessor.

(65)

Circle DHT (2)

0001 0011 0100 0101 1000 1010 1100 1111 Who’s resp for key 1110 ? I am O(N) messages on avg to resolve query, when there

are N peers 1110 1110 1110 1110 1110 1110 Define closest as closest successor

(66)

Peer Churn

❒ 

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?

1 3 4 5 8 10 12 15

• 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

(67)

2: Application Layer 67

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

(68)

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

References

Related documents

You should go back there and fire them all and just say, when they ask you what you were doing, ‘I’m sorry, but we are using so much leverage and the government’s credit and

Homeowners considering any modification to the builder installed landscape should become completely familiar with Chapter 5 of the MiraBay Architectural Guidelines prior to

a) One respondent has been a climate activist for 10 Years and had a major breakdown in her career as a climate activist after the failed climate

Given the legal framework that operates to both prevent discrimination and in some cases promote equality, the treatment and management of sex offenders should

 In 2014, the average Medicaid fee-for-service reimbursement rate was 40.7 percent of commercial dental insurance charges for adult dental care services in states that provide

Meeting participants agreed that to reduce vulnerabil- ity of coastal communities, support and change was needed at all scales, from local (e.g. household) to provincial (e.g.

The law requires a professional to act based on the skill and knowledge necessary for his or her profession, rather than the typical reasonable and prudent standard applied

1 The employee’s primary duty must consist of: 1) the application of systems analysis techniques and procedures, including consulting with users, to determine hardware, software