Sie sind auf Seite 1von 76

Chapter 2

Application Layer

A note on the use of these ppt slides:


Were making these slides freely available to all (faculty, students, readers).
Theyre in PowerPoint form so you can add, modify, and delete slides
(including this one) and slide content to suit your needs. They obviously Computer Networking:
represent a lot of work on our part. In return for use, we only ask the
following: A Top Down Approach
If you use these slides (e.g., in a class) in substantially unaltered form, Featuring the Internet.
that you mention their source (after all, wed like people to use our book!)
If you post any slides in substantially unaltered form on a www site, that Jim Kurose, Keith Ross
you note that they are adapted from (or perhaps identical to) our slides, and Addison-Wesley.
note our copyright of this material.

Thanks and enjoy! JFK/KWR

All material copyright


J.F Kurose and K.W. Ross, All Rights Reserved
2: Application Layer 1
Some network apps

E-mail Internet telephone


Web Real-time video
Instant messaging conference
Remote login Massive parallel
P2P file sharing
computing

Multi-user network
games
Streaming stored
video clips

2: Application Layer 2
Part 2: Application layer

2.1 Principles of 2.5 P2P file sharing


network applications 2.6 Socket programming
2.2 Web and HTTP
2.3 FTP
2.4 Electronic Mail
SMTP, POP3, IMAP

2: Application Layer 3
Client-server architecture
server:
always-on host
permanent IP address
server farms for scaling
clients:
communicate with
server
may be intermittently
connected
may have dynamic IP
addresses
do not communicate
directly with each other

2: Application Layer 4
Processes communicating

Process: program running Client process: process


within a host. that initiates
within same host, two
communication
processes communicate Server process: process
using inter-process that waits to be
communication (defined contacted
by OS).
processes in different
hosts communicate by
exchanging messages

2: Application Layer 5
Addressing processes
to receive messages,
process must have
identifier
host device has
unique32-bit IP
address
Q: does IP address of
host on which process
runs suffice for
identifying the
process?

2: Application Layer 6
Addressing processes
to receive messages, identifier includes both
process must have IP address and port
identifier numbers associated with
host device has process on host.
unique32-bit IP Example port numbers:
address HTTP server: 80
Q: does IP address of Mail server: 25
host on which process to send HTTP message
runs suffice for to gaia.cs.umass.edu web
identifying the server:
process? IP address: 128.119.245.12
Answer: NO, many Port number: 80
processes can be running
more shortly
on same host
2: Application Layer 7
App-layer protocol defines

Types of messages Public-domain protocols:


exchanged, defined in RFCs
e.g., request, response allows for
Message syntax: interoperability
what fields in messages &
e.g., HTTP, SMTP
how fields are delineated
Proprietary protocols:
Message semantics
meaning of information in
e.g., KaZaA
fields
Rules for when and how
processes send &
respond to messages
2: Application Layer 8
Part 2: Application layer

2.1 Principles of 2.5 P2P file sharing


network applications 2.6 Socket programming
app architectures
app requirements
2.2 Web and HTTP
2.3 FTP
2.4 Electronic Mail
SMTP, POP3, IMAP

2: Application Layer 9
Web and HTTP

First some jargon


Web page consists of objects
Object can be HTML file, JPEG image, Java
applet, audio file,
Web page consists of base HTML-file which
includes several referenced objects
Each object is addressable by a URL
Example URL:
www.someschool.edu/someDept/pic.gif

host name path name

2: Application Layer 10
HTTP overview

HTTP: hypertext
transfer protocol
Webs application layer PC running
protocol Explorer

client/server model
client: browser that
requests, receives, Server
displays Web objects running
Apache Web
server: Web server
server
sends objects in
response to requests
Mac running
HTTP 1.0: RFC 1945 Navigator
HTTP 1.1: RFC 2068

2: Application Layer 11
HTTP overview (continued)

Uses TCP: HTTP is stateless


client initiates TCP server maintains no
connection (creates socket) information about
to server, port 80 past client requests
server accepts TCP
connection from client aside
Protocols that maintain
HTTP messages (application- state are complex!
layer protocol messages) past history (state) must
exchanged between browser be maintained
(HTTP client) and Web
if server/client crashes,
server (HTTP server)
their views of state may
TCP connection closed
be inconsistent, must be
reconciled

2: Application Layer 12
HTTP request message

two types of HTTP messages: request, response


HTTP request message:
ASCII (human-readable format)

request line
(GET, POST, GET /somedir/page.html HTTP/1.1
DELETE commands) Host: www.someschool.edu
User-agent: Mozilla/4.0
header Connection: close
lines Accept-language:fr

Carriage return,
line feed (extra carriage return, line feed)
indicates end
of message
2: Application Layer 13
HTTP request message: general format

2: Application Layer 14
HTTP response message
status line
(protocol
status code HTTP/1.1 200 OK
status phrase) Connection close
Date: Thu, 06 Aug 1998 12:00:15 GMT
Server: Apache/1.3.0 (Unix)
header
Last-Modified: Mon, 22 Jun 1998 ...
lines
Content-Length: 6821
Content-Type: text/html

data, e.g., data data data data data ...


requested
HTML file

2: Application Layer 15
HTTP response status codes
In first line in server->client response message.
A few sample codes:
200 OK
request succeeded, requested object later in this message
301 Moved Permanently
requested object moved, new location specified later in
this message (Location:)
400 Bad Request
request message not understood by server
404 Not Found
requested document not found on this server
505 HTTP Version Not Supported
2: Application Layer 16
Trying out HTTP (client side) for yourself

1. Telnet to your favorite Web server:


telnet cis.poly.edu 80 Opens TCP connection to port 80
(default HTTP server port) at cis.poly.edu.
Anything typed in sent
to port 80 at cis.poly.edu

2. Type in a GET HTTP request:


GET /~ross/ HTTP/1.1 By typing this in (hit carriage
Host: cis.poly.edu return twice), you send
this minimal (but complete)
GET request to HTTP server

3. Look at response message sent by HTTP server!

2: Application Layer 17
Uploading form input

Post method:
Web page often
includes form input URL method:
Input is uploaded to Uses GET method
server in entity body Input is uploaded in
URL field of request
line:

www.somesite.com/animalsearch?monkeys&banana

2: Application Layer 18
Part 2: Application layer

2.1 Principles of 2.5 P2P file sharing


network applications 2.6 TCP Socket
2.2 Web and HTTP programming
2.3 FTP
2.4 Electronic Mail
SMTP, POP3, IMAP

2: Application Layer 19
Sockets

process sends/receives
host or host or
server server
messages to/from its
socket controlled by
app developer
socket analogous to door process process

sending process shoves socket socket


message out door TCP with TCP with
Internet buffers,
sending process relies on buffers,
variables variables
transport infrastructure
on other side of door which
brings message to socket controlled
by OS
at receiving process

API: (1) choice of transport protocol; (2) ability to fix


a few parameters (lots more on this later)
2: Application Layer 20
Socket programming
Goal: learn how to build client/server application that
communicate using sockets

Socket API socket


introduced in BSD4.1 UNIX,
a host-local,
1981 application-created,
explicitly created, used, OS-controlled interface
released by apps (a door) into which
client/server paradigm application process can
two types of transport both send and
service via socket API: receive messages to/from
another application
unreliable datagram
process
reliable, byte stream-
oriented

2: Application Layer 21
Socket programming with TCP
Client must contact server When contacted by client,
server process must first server TCP creates new
be running socket for server process to
server must have created communicate with client
socket (door) that allows server to talk with
welcomes clients contact multiple clients
source port numbers
Client contacts server by:
used to distinguish
creating client-local TCP
clients (more in Chap 3)
socket
specifying IP address, port application viewpoint
number of server process
TCP provides reliable, in-order
When client creates
transfer of bytes (pipe)
socket: client TCP
between client and server
establishes connection to
server TCP
2: Application Layer 22
Client/server socket interaction: TCP
Server (running on hostid) Client
create socket,
port=x, for
incoming request:
welcomeSocket =
ServerSocket()

TCP create socket,


wait for incoming
connection request connection setup connect to hostid, port=x
connectionSocket = clientSocket =
welcomeSocket.accept() Socket()

send request using


read request from clientSocket
connectionSocket

write reply to
connectionSocket read reply from
clientSocket
close
connectionSocket close
clientSocket
2: Application Layer 23
Stream jargon
keyboard monitor

A stream is a sequence of
characters that flow into

inFromUser
or out of a process. input
stream

An input stream is Client


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

inFromServer
outToServer
source, e.g., monitor or
output input
stream stream

socket.
client TCP
clientSocket
socket TCP
socket

to network from network

2: Application Layer 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;
Create
input stream BufferedReader inFromUser =
new BufferedReader(new InputStreamReader(System.in));
Create
client socket, Socket clientSocket = new Socket("hostname", 6789);
connect to server
Create DataOutputStream outToServer =
output stream new DataOutputStream(clientSocket.getOutputStream());
attached to socket
2: Application Layer 25
Example: Java client (TCP), cont.

Create BufferedReader inFromServer =


input stream new BufferedReader(new
attached to socket InputStreamReader(clientSocket.getInputStream()));

sentence = inFromUser.readLine();
Send line
to server outToServer.writeBytes(sentence + '\n');

Read line modifiedSentence = inFromServer.readLine();


from server
System.out.println("FROM SERVER: " + modifiedSentence);

clientSocket.close();

}
}
2: Application Layer 26
Example: Java server (TCP)
import java.io.*;
import java.net.*;

class TCPServer {

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


{
String clientSentence;
Create String capitalizedSentence;
welcoming socket
ServerSocket welcomeSocket = new ServerSocket(6789);
at port 6789
while(true) {
Wait, on welcoming
socket for contact Socket connectionSocket = welcomeSocket.accept();
by client
BufferedReader inFromClient =
Create input new BufferedReader(new
stream, attached InputStreamReader(connectionSocket.getInputStream()));
to socket

2: Application Layer 27
Example: Java server (TCP), cont

Create output
stream, attached DataOutputStream outToClient =
to socket new DataOutputStream(connectionSocket.getOutputStream());
Read in line
from socket clientSentence = inFromClient.readLine();

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


Write out line
outToClient.writeBytes(capitalizedSentence);
to socket
}
}
} End of while loop,
loop back and wait for
another client connection

2: Application Layer 28
Part 2: Application layer

2.1 Principles of 2.5 P2P file sharing


network applications 2.6 TCP Socket
2.2 Web and HTTP programming
2.3 FTP
2.4 Electronic Mail
SMTP, POP3, IMAP

2: Application Layer 29
User-server state: cookies

Many major Web sites Example:


use cookies Susan access Internet
Four components: always from same PC
She visits a specific e-
1) cookie header line of
commerce site for first
HTTP response message
time
2) cookie header line in
When initial HTTP
HTTP request message
requests arrives at site,
3) cookie file kept on site creates a unique ID
users host, managed by and creates an entry in
users browser backend database for
4) back-end database at ID
Web site

2: Application Layer 30
Cookies: keeping state (cont.)

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

Cookie file
usual http request msg
amazon: 1678 cookie: 1678 cookie-
ebay: 8734 specific
usual http response msg action
one week later:
usual http request msg
Cookie file cookie-
cookie: 1678
amazon: 1678 spectific
ebay: 8734 usual http response msg action

2: Application Layer 31
HTTP connections

Nonpersistent HTTP Persistent HTTP


At most one object is Multiple objects can
sent over a TCP be sent over single
connection. TCP connection
HTTP/1.0 uses between client and
nonpersistent HTTP server.
HTTP/1.1 uses
persistent connections
in default mode

2: Application Layer 32
Non-Persistent HTTP: Response time

Definition of RTT: time to


send a small packet to
travel from client to
server and back. initiate TCP
connection
Response time: RTT
one RTT to initiate TCP request
connection file
time to
RTT
one RTT for HTTP transmit
file
request and first few file

bytes of HTTP response


received

to return time time


file transmission time
total = 2RTT+transmit time
2: Application Layer 33
Persistent HTTP

Nonpersistent HTTP issues: Persistent without pipelining:


requires 2 RTTs per object client issues new request
OS overhead for each TCP only when previous
connection response has been received
browsers often open parallel one RTT for each
TCP connections to fetch referenced object
referenced objects Persistent with pipelining:
Persistent HTTP default in HTTP/1.1
server leaves connection client sends requests as
open after sending response soon as it encounters a
subsequent HTTP messages referenced object
between same client/server as little as one RTT for all
sent over open connection the referenced objects

2: Application Layer 34
Web caches (proxy server)
Goal: satisfy client request without involving origin server

user sets browser: Web origin


accesses via cache server

browser sends all HTTP Proxy


requests to cache server
object in cache: cache client
returns object
else cache requests
object from origin
server, then returns
object to client
client
origin
server

2: Application Layer 35
More about Web caching

Cache acts as both client Why Web caching?


and server Reduce response time for
Typically cache is installed client request.
by ISP (university, Reduce traffic on an
company, residential ISP) institutions access link.
Internet dense with
caches: enables poor
content providers to
effectively deliver content

2: Application Layer 36
Caching example
origin
Assumptions
servers
average object size = 100,000
bits public
Internet
avg. request rate from
institutions browsers to origin
servers = 15/sec
1.5 Mbps
delay from institutional router
access link
to any origin server and back
institutional
to router = 2 sec
network
10 Mbps LAN
Consequences
utilization on LAN = 15%
utilization on access link = 100%
total delay = Internet delay + institutional
access delay + LAN delay cache
= 2 sec + minutes + milliseconds
2: Application Layer 37
Caching example (cont)
origin
Possible solution
servers
increase bandwidth of access
link to, say, 10 Mbps public
Internet
Consequences
utilization on LAN = 15%
utilization on access link = 15%
10 Mbps
Total delay = Internet delay + access link
access delay + LAN delay
institutional
= 2 sec + msecs + msecs
network
often a costly upgrade 10 Mbps LAN

institutional
cache

2: Application Layer 38
Caching example (cont)
origin
Install cache servers
suppose hit rate is .4 public
Consequence Internet
40% requests will be
satisfied almost immediately
60% requests satisfied by
origin server 1.5 Mbps
access link
utilization of access link
reduced to 60%, resulting in institutional
negligible delays (say 10 network
10 Mbps LAN
msec)
total avg delay = Internet
delay + access delay + LAN
delay = .6*(2.01) secs +
.4*milliseconds < 1.4 secs institutional
cache

2: Application Layer 39
Conditional GET

Goal: dont send object if cache server


cache has up-to-date cached HTTP request msg
version If-modified-since:
object
cache: specify date of
<date>
not
cached copy in HTTP request modified
HTTP response
If-modified-since:
HTTP/1.0
<date> 304 Not Modified
server: response contains no
object if cached copy is up-
HTTP request msg
to-date: If-modified-since:
HTTP/1.0 304 Not <date> object
Modified modified
HTTP response
HTTP/1.0 200 OK
<data>
2: Application Layer 40
Part 2: Application layer

2.1 Principles of 2.5 P2P file sharing


network applications 2.6 Socket programming
2.2 Web and HTTP
2.3 FTP
2.4 Electronic Mail
SMTP, POP3, IMAP

2: Application Layer 41
FTP: the file transfer protocol

FTP file transfer


FTP FTP
user client server
interface
user
at host local file remote file
system system

transfer file to/from remote host


client/server model
client: side that initiates transfer (either to/from
remote)
server: remote host
ftp: RFC 959
ftp server: port 21

2: Application Layer 42
FTP: separate control, data connections
TCP control connection
FTP client contacts FTP port 21
server at port 21, specifying
TCP as transport protocol
TCP data connection
Client obtains authorization FTP port 20 FTP
over control connection client server
Client browses remote
Server opens another TCP
directory by sending
commands over control data connection to transfer
connection. another file.
Control connection: out of
When server receives file
transfer command, server band
opens 2nd TCP connection (for FTP server maintains state:
file) to client current directory, earlier
After transferring one file, authentication
server closes data Active (PORT) and Passive
connection. (PASV)
FTP commands, responses

Sample commands: Sample return codes


sent as ASCII text over status code and phrase (as
control channel in HTTP)
USER username 331 Username OK,
PASS password password required
125 data connection
LIST return list of file in
already open;
current directory
transfer starting
RETR filename retrieves 425 Cant open data
(gets) file connection
STOR filename stores 452 Error writing
(puts) file onto remote file
host

2: Application Layer 44
Part 2: Application layer

2.1 Principles of 2.5 P2P file sharing


network applications 2.6 Socket programming
2.2 Web and HTTP
2.3 FTP
2.4 Electronic Mail
SMTP, POP3, IMAP

2: Application Layer 45
Electronic Mail outgoing
message queue
user mailbox
user
Three major components: agent
user agents mail
user
server
mail servers agent
simple mail transfer SMTP mail
protocol: SMTP server user
SMTP agent
User Agent
a.k.a. mail reader SMTP
mail user
composing, editing, reading agent
server
mail messages
e.g., Eudora, Outlook, elm, user
Netscape Messenger SMTP agent
user
outgoing, incoming messages agent
stored on server
2: Application Layer 46
Electronic Mail: mail servers

user
Mail Servers agent
mailbox contains incoming mail
user
messages for user server
agent
message queue of outgoing
SMTP
(to be sent) mail messages mail
server user
SMTP protocol between mail
servers to send email SMTP agent

messages SMTP
client: sending mail mail user
agent
server server
server: receiving mail
user
server agent
user
agent

2: Application Layer 47
Electronic Mail: SMTP [RFC 2821]

uses TCP to reliably transfer email message from client


to server, port 25
direct transfer: sending server to receiving server
three phases of transfer
handshaking (greeting)
transfer of messages
closure
persistent connections
command/response interaction
commands: ASCII text
response: status code and phrase

messages must be in 7-bit ASCII


CRLF.CRLF to determine end of message
2: Application Layer 48
Scenario: Alice sends message to Bob
1) Alice uses UA to compose 4) SMTP client sends Alices
message and to message over the TCP
bob@someschool.edu connection
2) Alices UA sends message 5) Bobs mail server places the
to her mail server; message message in Bobs mailbox
placed in message queue 6) Bob invokes his user agent
3) Client side of SMTP opens to read message
TCP connection with Bobs
mail server

1 mail
mail
server user
user server
2 agent
agent 3 6
4 5

2: Application Layer 49
Sample SMTP interaction
S: 220 hamburger.edu
C: HELO crepes.fr
S: 250 Hello crepes.fr, pleased to meet you
C: MAIL FROM: <alice@crepes.fr>
S: 250 alice@crepes.fr... Sender ok
C: RCPT TO: <bob@hamburger.edu>
S: 250 bob@hamburger.edu ... 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 50
Mail access protocols
SMTP SMTP access user
user
agent protocol agent

senders mail receivers mail


server server

SMTP: delivery/storage to receivers 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: Hotmail , Yahoo! Mail, etc.

2: Application Layer 51
POP3 protocol S: +OK POP3 server ready
C: user bob
authorization phase S: +OK
C: pass hungry
client commands: S: +OK user successfully logged on
user: declare username
C: list
pass: password S: 1 498
server responses S: 2 912
S: .
+OK
C: retr 1
-ERR S: <message 1 contents>
transaction phase, client: S: .
C: dele 1
list: list message numbers C: retr 2
retr: retrieve message by S: <message 1 contents>
number S: .
C: dele 2
dele: delete
C: quit
quit S: +OK POP3 server signing off
2: Application Layer 52
POP3 (more) and IMAP
More about POP3 IMAP
Previous example uses Keep all messages in
download and delete one place: the server
mode. Allows user to
Bob cannot re-read e- organize messages in
mail if he changes folders
client IMAP keeps user state
Download-and-keep: across sessions:
copies of messages on names of folders and
different clients mappings between
message IDs and folder
POP3 is stateless
name
across sessions

2: Application Layer 53
Mail message format

SMTP: protocol for


exchanging email msgs header
blank
RFC 822: standard for text
line
message format:
header lines, e.g.,
To:

body
From:
Subject:
different from SMTP
commands!
body
the message, ASCII
characters only

2: Application Layer 54
Part 2: Application layer

2.1 Principles of 2.5 P2P file sharing


network applications 2.6 Socket programming
app architectures
app requirements
2.2 Web and HTTP
2.4 Electronic Mail
SMTP, POP3, IMAP

2: Application Layer 55
Pure P2P architecture

no always-on server
arbitrary end systems
directly communicate
peers are intermittently
connected and change IP
addresses
example: Gnutella

Highly scalable but


difficult to manage

2: Application Layer 56
P2P file sharing
Alice chooses one of
Example the peers, Bob.
Alice runs P2P client File is copied from
application on her Bobs PC to Alices
notebook computer notebook: HTTP
Intermittently While Alice downloads,
connects to Internet; other users uploading
gets new IP address from Alice.
for each connection Alices peer is both a
Asks for Hey Jude Web client and a
transient Web server.
Application displays
other peers that have All peers are servers =
copy of Hey Jude. highly scalable!
2: Application Layer 57
P2P: centralized directory
Bob
original Napster design centralized
1) when peer connects, it directory server
1
informs central server: peers

IP address 1

content
1 3
2) Alice queries for Hey
2
Jude 1

3) Alice requests file from


Bob

Alice

2: Application Layer 58
P2P: problems with centralized directory

Single point of failure file transfer is


Performance decentralized, but
bottleneck locating content is
Copyright
highly centralized
infringement

2: Application Layer 59
Query flooding: Gnutella

fully distributed overlay network: graph


no central server edge between peer X
public domain protocol and Y if theres a TCP
many Gnutella clients connection
implementing protocol all active peers and
edges is overlay net
Edge is not a physical
link
Given peer will
typically be connected
with < 10 overlay
neighbors

2: Application Layer 60
Gnutella: protocol
File transfer:
Query message HTTP
sent over existing TCP
connections
Query
peers forward
QueryHit
Query message
QueryHit
sent over
reverse
path

Scalability:
limited scope
flooding
2: Application Layer 61
Gnutella: Peer joining

1. Joining peer X must find some other peer in


Gnutella network: use list of candidate peers
2. X sequentially attempts to make TCP with peers
on list until connection setup with Y
3. X sends Ping message to Y; Y forwards Ping
message.
4. All peers receiving Ping message respond with
Pong message
5. X receives many Pong messages. It can then
setup additional TCP connections

2: Application Layer 62
Exploiting heterogeneity: KaZaA

Each peer is either a


group leader or assigned
to a group leader.
TCP connection between
peer and its group leader.
TCP connections between
some pairs of group
leaders.
Group leader tracks the
content in all its ordinary peer

children. group-leader peer

neighoring relationships
in overlay network

2: Application Layer 63
KaZaA: Querying

Each file has a hash and a descriptor


Client sends keyword query to its group
leader
Group leader responds with matches:
For each match: metadata, hash, IP address
If group leader forwards query to other
group leaders, they respond with matches
Client then selects files for downloading
HTTP requests using hash as identifier sent to
peers holding desired file

2: Application Layer 64
Hybrid of client-server and P2P

Skype/SIP
Internet telephony app
Finding address of remote party: centralized server(s)
Client-client connection is direct (not through server)

2: Application Layer 65
Part 2: Application layer

2.1 Principles of 2.5 P2P file sharing


network applications 2.6 UDP socket
2.2 Web and HTTP programming
2.3 FTP
2.4 Electronic Mail
SMTP, POP3, IMAP

2: Application Layer 66
What transport service does an app need?
Data loss Bandwidth
some apps (e.g., audio) can some apps (e.g.,
tolerate some loss multimedia) require
other apps (e.g., file minimum amount of
transfer, telnet) require bandwidth to be
100% reliable data
effective
transfer
other apps (elastic
Timing apps) make use of
some apps (e.g., whatever bandwidth
Internet telephony, they get
interactive games)
require low delay to be
effective
2: Application Layer 67
Transport service requirements of common apps

Application Data loss Bandwidth Time Sensitive

file transfer no loss elastic no


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

2: Application Layer 68
Internet transport protocols services

TCP service: UDP service:


reliable transport between unreliable data transfer
sending and receiving process between sending and
flow control: sender wont receiving process
overwhelm receiver does not provide:
congestion control: throttle connection setup,
sender when network reliability, flow control,
overloaded congestion control, timing,
or bandwidth guarantee
does not provide: timing,
minimum bandwidth
guarantees Q: why bother? Why is
there a UDP?

2: Application Layer 69
Socket programming with UDP

UDP: no connection between


client and server
no handshaking
sender explicitly attaches application viewpoint
IP address and port of
destination to each packet UDP provides unreliable transfer
of groups of bytes (datagrams)
server must extract IP
between client and server
address, port of sender
from received packet
UDP: transmitted data may be
received out of order, or
lost

2: Application Layer 70
Client/server socket interaction: UDP
Server (running on hostid) Client

create socket, create socket,


port=x, for clientSocket =
incoming request: DatagramSocket()
serverSocket =
DatagramSocket()
Create, address (hostid, port=x,
send datagram request
using clientSocket
read request from
serverSocket

write reply to
serverSocket
specifying client read reply from
host address, clientSocket
port number close
clientSocket

2: Application Layer 71
Example: Java client (UDP)
keyboard monitor

inFromUser
input
stream

Client
Process
Input: receives
process
packet (recall
Output: sends thatTCP received
packet (recall byte stream)

receivePacket
sendPacket
that TCP sent UDP
packet
UDP
packet
byte stream)
client UDP
clientSocket
socket UDP
socket

to network from network

2: Application Layer 72
Example: Java client (UDP)

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

class UDPClient {
public static void main(String args[]) throws Exception
{
Create
input stream BufferedReader inFromUser =
new BufferedReader(new InputStreamReader(System.in));
Create
client socket DatagramSocket clientSocket = new DatagramSocket();
Translate
InetAddress IPAddress = InetAddress.getByName("hostname");
hostname to IP
address using DNS byte[] sendData = new byte[1024];
byte[] receiveData = new byte[1024];

String sentence = inFromUser.readLine();


sendData = sentence.getBytes();
2: Application Layer 73
Example: Java client (UDP), cont.
Create datagram
with data-to-send, DatagramPacket sendPacket =
length, IP addr, port new DatagramPacket(sendData, sendData.length, IPAddress, 9876);

Send datagram clientSocket.send(sendPacket);


to server
DatagramPacket receivePacket =
new DatagramPacket(receiveData, receiveData.length);
Read datagram
clientSocket.receive(receivePacket);
from server
String modifiedSentence =
new String(receivePacket.getData());

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


clientSocket.close();
}
}

2: Application Layer 74
Example: Java server (UDP)

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

class UDPServer {
public static void main(String args[]) throws Exception
Create {
datagram socket
DatagramSocket serverSocket = new DatagramSocket(9876);
at port 9876
byte[] receiveData = new byte[1024];
byte[] sendData = new byte[1024];

while(true)
{
Create space for
DatagramPacket receivePacket =
received datagram
new DatagramPacket(receiveData, receiveData.length);
Receive serverSocket.receive(receivePacket);
datagram
2: Application Layer 75
Example: Java server (UDP), cont
String sentence = new String(receivePacket.getData());
Get IP addr
InetAddress IPAddress = receivePacket.getAddress();
port #, of
sender int port = receivePacket.getPort();

String capitalizedSentence = sentence.toUpperCase();

sendData = capitalizedSentence.getBytes();
Create datagram
DatagramPacket sendPacket =
to send to client new DatagramPacket(sendData, sendData.length, IPAddress,
port);
Write out
datagram serverSocket.send(sendPacket);
to socket }
}
} End of while loop,
loop back and wait for
another datagram
2: Application Layer 76

Das könnte Ihnen auch gefallen