63
Chapter 2 Application Layer Application 2-1

Chapter 2 Application Layer - Simon Fraser University€¦ ·  · 2011-05-25Chapter 2: Application layer ... Application 2-25 10 3 4 5 12 15 ... creating client-local TCP socket

  • Upload
    lamcong

  • View
    221

  • Download
    1

Embed Size (px)

Citation preview

Page 1: Chapter 2 Application Layer - Simon Fraser University€¦ ·  · 2011-05-25Chapter 2: Application layer ... Application 2-25 10 3 4 5 12 15 ... creating client-local TCP socket

Chapter 2Application Layer

Application 2-1

Page 2: Chapter 2 Application Layer - Simon Fraser University€¦ ·  · 2011-05-25Chapter 2: Application layer ... Application 2-25 10 3 4 5 12 15 ... creating client-local TCP socket

Chapter 2: Application layer2.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

Application 2-2

Page 3: Chapter 2 Application Layer - Simon Fraser University€¦ ·  · 2011-05-25Chapter 2: Application layer ... Application 2-25 10 3 4 5 12 15 ... creating client-local TCP socket

Pure P2P architecture

No always-on server

Arbitrary end systems directly communicate

Peers are intermittently connected and change IP addresses

Three topics: file distribution

searching for information

case Study: Skype

peer-peer

Application 2-3

Page 4: Chapter 2 Application Layer - Simon Fraser University€¦ ·  · 2011-05-25Chapter 2: Application layer ... Application 2-25 10 3 4 5 12 15 ... creating client-local TCP socket

File Distribution: Server-Client vs P2P

Question : 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

Application 2-4

Page 5: Chapter 2 Application Layer - Simon Fraser University€¦ ·  · 2011-05-25Chapter 2: Application layer ... Application 2-25 10 3 4 5 12 15 ... creating client-local TCP socket

File distribution time: server-client

us

u2d1 d2u1

uN

dN

Server

Network (with abundant bandwidth)

Fserver sequentially sends N copies:

– NF/us time

client i takes F/di time to download

Application 2-5

Page 6: Chapter 2 Application Layer - Simon Fraser University€¦ ·  · 2011-05-25Chapter 2: Application layer ... Application 2-25 10 3 4 5 12 15 ... creating client-local TCP socket

File distribution time: server-client

us

u2d1 d2u1

uN

dN

Server

Network (with abundant bandwidth)

Fserver sequentially sends N copies:

NF/us time

client i takes F/di time to download

Application 2-6

= dcs = max { NF/us, F/min(di) }i

Time to distribute F to N clients using client/server approach

increases linearly in N(for large N)

Page 7: Chapter 2 Application Layer - Simon Fraser University€¦ ·  · 2011-05-25Chapter 2: Application layer ... Application 2-25 10 3 4 5 12 15 ... creating client-local TCP socket

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

Application 2-7

Page 8: Chapter 2 Application Layer - Simon Fraser University€¦ ·  · 2011-05-25Chapter 2: Application layer ... Application 2-25 10 3 4 5 12 15 ... creating client-local TCP socket

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

Application 2-8

Page 9: Chapter 2 Application Layer - Simon Fraser University€¦ ·  · 2011-05-25Chapter 2: Application layer ... Application 2-25 10 3 4 5 12 15 ... creating client-local TCP socket

0 5 10 15 20 25 30 350

0.5

1

1.5

2

2.5

3

3.5

P2PClient-Server

N

Min

imum

Dis

trib

utio

n T

ime

Server-client vs. P2P: example

Client upload rate = u, F/u = 1 hour, us = 10u, dmin ≥ us

Application 2-9

Page 10: Chapter 2 Application Layer - Simon Fraser University€¦ ·  · 2011-05-25Chapter 2: Application layer ... Application 2-25 10 3 4 5 12 15 ... creating client-local TCP socket

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

Application 2-10

Page 11: Chapter 2 Application Layer - Simon Fraser University€¦ ·  · 2011-05-25Chapter 2: Application layer ... Application 2-25 10 3 4 5 12 15 ... creating client-local TCP socket

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

Application 2-11

Page 12: Chapter 2 Application Layer - Simon Fraser University€¦ ·  · 2011-05-25Chapter 2: Application layer ... Application 2-25 10 3 4 5 12 15 ... creating client-local TCP socket

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”

Application 2-12

Page 13: Chapter 2 Application Layer - Simon Fraser University€¦ ·  · 2011-05-25Chapter 2: Application layer ... Application 2-25 10 3 4 5 12 15 ... creating client-local TCP socket

BitTorrent: Tit-for-tat

(1) Alice “optimistically unchokes” Bob

Application 2-13

Page 14: Chapter 2 Application Layer - Simon Fraser University€¦ ·  · 2011-05-25Chapter 2: Application layer ... Application 2-25 10 3 4 5 12 15 ... creating client-local TCP socket

BitTorrent: Tit-for-tat

(1) Alice “optimistically unchokes” Bob(2) Alice becomes one of Bob’s top-four providers;

Bob reciprocates

Application 2-14

Page 15: Chapter 2 Application Layer - Simon Fraser University€¦ ·  · 2011-05-25Chapter 2: Application layer ... Application 2-25 10 3 4 5 12 15 ... creating client-local TCP socket

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!

Application 2-15

Page 16: Chapter 2 Application Layer - Simon Fraser University€¦ ·  · 2011-05-25Chapter 2: Application layer ... Application 2-25 10 3 4 5 12 15 ... creating client-local TCP socket

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

Application 2-16

Page 17: Chapter 2 Application Layer - Simon Fraser University€¦ ·  · 2011-05-25Chapter 2: Application layer ... Application 2-25 10 3 4 5 12 15 ... creating client-local TCP socket

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.

e.g., key = h(“Led Zeppelin IV”)

this is why they call it a distributed “hash” table

Application 2-17

Page 18: Chapter 2 Application Layer - Simon Fraser University€¦ ·  · 2011-05-25Chapter 2: Application layer ... Application 2-25 10 3 4 5 12 15 ... creating client-local TCP socket

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.

e.g.,: n=4; peers: 1,3,4,5,8,10,12,14;

key = 13, then successor peer = 14

key = 15, then successor peer = 1

Application 2-18

Page 19: Chapter 2 Application Layer - Simon Fraser University€¦ ·  · 2011-05-25Chapter 2: Application layer ... Application 2-25 10 3 4 5 12 15 ... creating client-local TCP socket

1

3

4

5

810

12

15

Circular DHT (1)

each peer only aware of immediate successor and predecessor.

“overlay network”

Application 2-19

Page 20: Chapter 2 Application Layer - Simon Fraser University€¦ ·  · 2011-05-25Chapter 2: Application layer ... Application 2-25 10 3 4 5 12 15 ... creating client-local TCP socket

Circular DHT (2)

0001

0011

0100

0101

10001010

1100

1111

Define closestas closestsuccessor

Application 2-20

Page 21: Chapter 2 Application Layer - Simon Fraser University€¦ ·  · 2011-05-25Chapter 2: Application layer ... Application 2-25 10 3 4 5 12 15 ... creating client-local TCP socket

Circular DHT (2)

0001

0011

0100

0101

10001010

1100

1111

Who’s resp for key 1110 ?

Define closestas closestsuccessor

Application 2-21

Page 22: Chapter 2 Application Layer - Simon Fraser University€¦ ·  · 2011-05-25Chapter 2: Application layer ... Application 2-25 10 3 4 5 12 15 ... creating client-local TCP socket

Circular DHT (2)

0001

0011

0100

0101

10001010

1100

1111

Who’s resp for key 1110 ?

I am

1110

1110

1110

1110

1110

1110

Define closestas closestsuccessor

Application 2-22

Page 23: Chapter 2 Application Layer - Simon Fraser University€¦ ·  · 2011-05-25Chapter 2: Application layer ... Application 2-25 10 3 4 5 12 15 ... creating client-local TCP socket

Circular DHT (2)

0001

0011

0100

0101

10001010

1100

1111

Who’s resp for key 1110 ?

I am

O(N) messageson avg to resolvequery, when thereare N peers

1110

1110

1110

1110

1110

1110

Define closestas closestsuccessor

Application 2-23

Page 24: Chapter 2 Application Layer - Simon Fraser University€¦ ·  · 2011-05-25Chapter 2: Application layer ... Application 2-25 10 3 4 5 12 15 ... creating client-local TCP socket

Circular DHT with Shortcuts

Each peer keeps track of IP addresses of predecessor, successor, short cuts.

8

Application 2-24

1

10

3

4

512

15

Who’s resp for key 1110? Who’s resp for key 1110?

8

Page 25: Chapter 2 Application Layer - Simon Fraser University€¦ ·  · 2011-05-25Chapter 2: Application layer ... Application 2-25 10 3 4 5 12 15 ... creating client-local TCP socket

1Circular DHT with Shortcuts

Each peer keeps track of IP addresses of predecessor, successor, short cuts. Reduced from 6 to 2 messages. Possible to design shortcuts so O(log N) neighbors, O(log N)

messages in query

Application 2-25

10

3

4

512

15

Who’s resp for key 1110? Who’s resp for key 1110?

8

Page 26: Chapter 2 Application Layer - Simon Fraser University€¦ ·  · 2011-05-25Chapter 2: Application layer ... Application 2-25 10 3 4 5 12 15 ... creating client-local TCP socket

Peer Churn1

3

4

5

810

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

are still alive.

Application 2-26

Page 27: Chapter 2 Application Layer - Simon Fraser University€¦ ·  · 2011-05-25Chapter 2: Application layer ... Application 2-25 10 3 4 5 12 15 ... creating client-local TCP socket

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.

1

3

4

5

810

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

are still alive.

Application 2-27

Page 28: Chapter 2 Application Layer - Simon Fraser University€¦ ·  · 2011-05-25Chapter 2: Application layer ... Application 2-25 10 3 4 5 12 15 ... creating client-local TCP socket

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

Application 2-28

Page 29: Chapter 2 Application Layer - Simon Fraser University€¦ ·  · 2011-05-25Chapter 2: Application layer ... Application 2-25 10 3 4 5 12 15 ... creating client-local TCP socket

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 stream-oriented

a host-local, application-created, OS-controlled interface (a “door”) into whichapplication process can both send and receive messages to/from another application process

socket

Goal: learn how to build client/server application that communicate using sockets

Application 2-29

Page 30: Chapter 2 Application Layer - Simon Fraser University€¦ ·  · 2011-05-25Chapter 2: Application layer ... Application 2-25 10 3 4 5 12 15 ... creating client-local TCP socket

Socket-programming using TCP

Socket: a door between application process and end-end-transport protocol (UCP or TCP)

TCP service: reliable transfer of bytes from one process to another

process

TCP withbuffers,

variables

socket

controlled byapplicationdeveloper

controlled byoperating

system

host orserver

process

TCP withbuffers,

variables

socket

controlled byapplicationdeveloper

controlled byoperatingsystem

host orserver

internet

Application 2-30

Page 31: Chapter 2 Application Layer - Simon Fraser University€¦ ·  · 2011-05-25Chapter 2: Application layer ... Application 2-25 10 3 4 5 12 15 ... creating client-local TCP socket

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

Application 2-31

Page 32: Chapter 2 Application Layer - Simon Fraser University€¦ ·  · 2011-05-25Chapter 2: Application layer ... Application 2-25 10 3 4 5 12 15 ... creating client-local TCP socket

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)

TCP provides reliable, in-order transfer of bytes (“pipe”) between client and server

application viewpoint

Application 2-32

Page 33: Chapter 2 Application Layer - Simon Fraser University€¦ ·  · 2011-05-25Chapter 2: Application layer ... Application 2-25 10 3 4 5 12 15 ... creating client-local TCP socket

Client/server socket interaction: TCP

Server (running on hostid) Client

Application 2-33

Page 34: Chapter 2 Application Layer - Simon Fraser University€¦ ·  · 2011-05-25Chapter 2: Application layer ... Application 2-25 10 3 4 5 12 15 ... creating client-local TCP socket

Client/server socket interaction: TCP

create socket,port=x, forincoming request:welcomeSocket =

ServerSocket()

Server (running on hostid) Client

Application 2-34

Page 35: Chapter 2 Application Layer - Simon Fraser University€¦ ·  · 2011-05-25Chapter 2: Application layer ... Application 2-25 10 3 4 5 12 15 ... creating client-local TCP socket

Client/server socket interaction: TCP

wait for incomingconnection requestconnectionSocket =welcomeSocket.accept()

create socket,port=x, forincoming request:welcomeSocket =

ServerSocket()

Server (running on hostid) Client

Application 2-35

Page 36: Chapter 2 Application Layer - Simon Fraser University€¦ ·  · 2011-05-25Chapter 2: Application layer ... Application 2-25 10 3 4 5 12 15 ... creating client-local TCP socket

Client/server socket interaction: TCP

wait for incomingconnection requestconnectionSocket =welcomeSocket.accept()

create socket,port=x, forincoming request:welcomeSocket =

ServerSocket()

create socket,connect to hostid, port=xclientSocket =

Socket()

Server (running on hostid) Client

Application 2-36

Page 37: Chapter 2 Application Layer - Simon Fraser University€¦ ·  · 2011-05-25Chapter 2: Application layer ... Application 2-25 10 3 4 5 12 15 ... creating client-local TCP socket

Client/server socket interaction: TCP

wait for incomingconnection requestconnectionSocket =welcomeSocket.accept()

create socket,port=x, forincoming request:welcomeSocket =

ServerSocket()

create socket,connect to hostid, port=xclientSocket =

Socket()

Server (running on hostid) Client

TCP connection setup

Application 2-37

Page 38: Chapter 2 Application Layer - Simon Fraser University€¦ ·  · 2011-05-25Chapter 2: Application layer ... Application 2-25 10 3 4 5 12 15 ... creating client-local TCP socket

Client/server socket interaction: TCP

wait for incomingconnection requestconnectionSocket =welcomeSocket.accept()

create socket,port=x, forincoming request:welcomeSocket =

ServerSocket()

create socket,connect to hostid, port=xclientSocket =

Socket()

Server (running on hostid) Client

send request usingclientSocket

TCP connection setup

Application 2-38

Page 39: Chapter 2 Application Layer - Simon Fraser University€¦ ·  · 2011-05-25Chapter 2: Application layer ... Application 2-25 10 3 4 5 12 15 ... creating client-local TCP socket

Client/server socket interaction: TCP

wait for incomingconnection requestconnectionSocket =welcomeSocket.accept()

create socket,port=x, forincoming request:welcomeSocket =

ServerSocket()

create socket,connect to hostid, port=xclientSocket =

Socket()

Server (running on hostid) Client

send request usingclientSocketread request from

connectionSocket

write reply toconnectionSocket

TCP connection setup

Application 2-39

Page 40: Chapter 2 Application Layer - Simon Fraser University€¦ ·  · 2011-05-25Chapter 2: Application layer ... Application 2-25 10 3 4 5 12 15 ... creating client-local TCP socket

Client/server socket interaction: TCP

wait for incomingconnection requestconnectionSocket =welcomeSocket.accept()

create socket,port=x, forincoming request:welcomeSocket =

ServerSocket()

create socket,connect to hostid, port=xclientSocket =

Socket()

closeconnectionSocket

read reply fromclientSocket

closeclientSocket

Server (running on hostid) Client

send request usingclientSocketread request from

connectionSocket

write reply toconnectionSocket

TCP connection setup

Application 2-40

Page 41: Chapter 2 Application Layer - Simon Fraser University€¦ ·  · 2011-05-25Chapter 2: Application layer ... Application 2-25 10 3 4 5 12 15 ... creating client-local TCP socket

outT

oSer

ver

to network from network

inFr

omS

erve

r

inFr

omU

ser

keyboard monitor

Process

clientSocket

inputstream

inputstream

outputstream

TCPsocket

Client

process

client TCP socket

Stream jargon

stream is a sequence of characters that flow into or out of a process.

input stream is attached to some input source for the process, e.g., keyboard or socket.

output stream is attached to an output source, e.g., monitor or socket.

Application 2-41

Page 42: Chapter 2 Application Layer - Simon Fraser University€¦ ·  · 2011-05-25Chapter 2: Application layer ... Application 2-25 10 3 4 5 12 15 ... creating client-local TCP socket

Socket programming with TCP

Example client-server app: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)

Application 2-42

Page 43: Chapter 2 Application Layer - Simon Fraser University€¦ ·  · 2011-05-25Chapter 2: Application layer ... Application 2-25 10 3 4 5 12 15 ... creating client-local TCP socket

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());

Application 2-43

This package defines Socket() and ServerSocket() classes

Page 44: Chapter 2 Application Layer - Simon Fraser University€¦ ·  · 2011-05-25Chapter 2: Application layer ... Application 2-25 10 3 4 5 12 15 ... creating client-local TCP socket

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());

createinput stream

Application 2-44

This package defines Socket() and ServerSocket() classes

Page 45: Chapter 2 Application Layer - Simon Fraser University€¦ ·  · 2011-05-25Chapter 2: Application layer ... Application 2-25 10 3 4 5 12 15 ... creating client-local TCP socket

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());

createinput stream

create clientSocket object

of type Socket, connect to server

Application 2-45

This package defines Socket() and ServerSocket() classes

Page 46: Chapter 2 Application Layer - Simon Fraser University€¦ ·  · 2011-05-25Chapter 2: Application layer ... Application 2-25 10 3 4 5 12 15 ... creating client-local TCP socket

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());

createinput stream

create clientSocket object

of type Socket, connect to server

Application 2-46

This package defines Socket() and ServerSocket() classes

server port #

server name,e.g., www.umass.edu

Page 47: Chapter 2 Application Layer - Simon Fraser University€¦ ·  · 2011-05-25Chapter 2: Application layer ... Application 2-25 10 3 4 5 12 15 ... creating client-local TCP socket

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());

createinput stream

create clientSocket object

of type Socket, connect to server

createoutput stream

attached to socket

Application 2-47

This package defines Socket() and ServerSocket() classes

server port #

server name,e.g., www.umass.edu

Page 48: Chapter 2 Application Layer - Simon Fraser University€¦ ·  · 2011-05-25Chapter 2: Application layer ... Application 2-25 10 3 4 5 12 15 ... creating client-local TCP socket

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(); } }

createinput stream

attached to socket

send lineto server

read linefrom server

Application 2-48

close socket(clean up behind yourself!)

Page 49: Chapter 2 Application Layer - Simon Fraser University€¦ ·  · 2011-05-25Chapter 2: Application layer ... Application 2-25 10 3 4 5 12 15 ... creating client-local TCP socket

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()));

Application 2-49

createwelcoming socket

at port 6789

Page 50: Chapter 2 Application Layer - Simon Fraser University€¦ ·  · 2011-05-25Chapter 2: Application layer ... Application 2-25 10 3 4 5 12 15 ... creating client-local TCP socket

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()));

wait, on welcomingsocket accept() method

for client contact create, new socket on return

Application 2-50

createwelcoming socket

at port 6789

Page 51: Chapter 2 Application Layer - Simon Fraser University€¦ ·  · 2011-05-25Chapter 2: Application layer ... Application 2-25 10 3 4 5 12 15 ... creating client-local TCP socket

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()));

wait, on welcomingsocket accept() method

for client contact create, new socket on return

Application 2-51

createwelcoming socket

at port 6789

create inputstream, attached

to socket

Page 52: Chapter 2 Application Layer - Simon Fraser University€¦ ·  · 2011-05-25Chapter 2: Application layer ... Application 2-25 10 3 4 5 12 15 ... creating client-local TCP socket

Example: Java server (TCP), cont

DataOutputStream outToClient = new DataOutputStream(connectionSocket.getOutputStream());

clientSentence = inFromClient.readLine();

capitalizedSentence = clientSentence.toUpperCase() + '\n';

outToClient.writeBytes(capitalizedSentence); } } }

read in linefrom socket

create outputstream, attached

to socket

write out lineto socket

end of while loop,loop back and wait foranother client connection

Application 2-52

Page 53: Chapter 2 Application Layer - Simon Fraser University€¦ ·  · 2011-05-25Chapter 2: Application layer ... Application 2-25 10 3 4 5 12 15 ... creating client-local TCP socket

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

Application 2-53

Page 54: Chapter 2 Application Layer - Simon Fraser University€¦ ·  · 2011-05-25Chapter 2: Application layer ... Application 2-25 10 3 4 5 12 15 ... creating client-local TCP socket

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

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

Application 2-54

Page 55: Chapter 2 Application Layer - Simon Fraser University€¦ ·  · 2011-05-25Chapter 2: Application layer ... Application 2-25 10 3 4 5 12 15 ... creating client-local TCP socket

Client/server socket interaction: UDP

Server (running on hostid)

create socket,port= x.serverSocket = DatagramSocket()

Application 2-55

Page 56: Chapter 2 Application Layer - Simon Fraser University€¦ ·  · 2011-05-25Chapter 2: Application layer ... Application 2-25 10 3 4 5 12 15 ... creating client-local TCP socket

Client/server socket interaction: UDP

Server (running on hostid)

create socket,clientSocket = DatagramSocket()

Client

Create datagram with server IP andport=x; send datagram via clientSocket

create socket,port= x.serverSocket = DatagramSocket()

Application 2-56

Page 57: Chapter 2 Application Layer - Simon Fraser University€¦ ·  · 2011-05-25Chapter 2: Application layer ... Application 2-25 10 3 4 5 12 15 ... creating client-local TCP socket

Client/server socket interaction: UDP

Server (running on hostid)

create socket,clientSocket = DatagramSocket()

Client

Create datagram with server IP andport=x; send datagram via clientSocket

create socket,port= x.serverSocket = DatagramSocket()

read datagram fromserverSocket

Application 2-57

Page 58: Chapter 2 Application Layer - Simon Fraser University€¦ ·  · 2011-05-25Chapter 2: Application layer ... Application 2-25 10 3 4 5 12 15 ... creating client-local TCP socket

Client/server socket interaction: UDP

Server (running on hostid)

create socket,clientSocket = DatagramSocket()

Client

Create datagram with server IP andport=x; send datagram via clientSocket

create socket,port= x.serverSocket = DatagramSocket()

read datagram fromserverSocket

write reply toserverSocketspecifying client address,port number

Application 2-58

Page 59: Chapter 2 Application Layer - Simon Fraser University€¦ ·  · 2011-05-25Chapter 2: Application layer ... Application 2-25 10 3 4 5 12 15 ... creating client-local TCP socket

Client/server socket interaction: UDP

Server (running on hostid)

closeclientSocket

read datagram fromclientSocket

create socket,clientSocket = DatagramSocket()

Client

Create datagram with server IP andport=x; send datagram via clientSocket

create socket,port= x.serverSocket = DatagramSocket()

read datagram fromserverSocket

write reply toserverSocketspecifying client address,port number

Application 2-59

Page 60: Chapter 2 Application Layer - Simon Fraser University€¦ ·  · 2011-05-25Chapter 2: Application layer ... Application 2-25 10 3 4 5 12 15 ... creating client-local TCP socket

Example: Java client (UDP)

sen

dP

ack

et

to network from network

rece

ive

Pa

cke

t

inF

rom

Use

r

keyboard monitor

Process

clientSocket

UDPpacket

inputstream

UDPpacket

UDPsocket

Output: sends packet (recall that TCP sent “byte stream”)

Input: receives packet (recall thatTCP received “byte stream”)

Client

process

client UDP socket

Application 2-60

Page 61: Chapter 2 Application Layer - Simon Fraser University€¦ ·  · 2011-05-25Chapter 2: Application layer ... Application 2-25 10 3 4 5 12 15 ... creating client-local TCP socket

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();

createinput stream

create client socket

translate hostname to IP address using DNS

Application 2-61

Page 62: Chapter 2 Application Layer - Simon Fraser University€¦ ·  · 2011-05-25Chapter 2: Application layer ... Application 2-25 10 3 4 5 12 15 ... creating client-local TCP socket

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 datagramto server

read datagramfrom server

Application 2-62

Page 63: Chapter 2 Application Layer - Simon Fraser University€¦ ·  · 2011-05-25Chapter 2: Application layer ... Application 2-25 10 3 4 5 12 15 ... creating client-local TCP socket

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

createdatagram socket

at port 9876

create space forreceived datagram

receivedatagram

Application 2-63