Sie sind auf Seite 1von 62

II.B.

Application Layer
Goals: More goals
❒ conceptual + ❒ specific protocols:
implementation aspects of ❍ http
network application
protocols
❍ ftp
❍ client server paradigm
❍ SMTP
❍ service models
❍ pop
❒ learn about protocols by
❍ DNS
examining popular ❒ programming network
application-level protocols applications
❍ socket programming

1
Applications and application-layer protocols

Application: communicating, application


transport
distributed processes network
data link
❍ running in network hosts in physical

“user space”
❍ exchange messages to
implement app
❍ e.g., email, file transfer, the
Web
Application-layer protocols
application
application
❍ one “piece” of an app transport
transport
network
network data link
❍ define messages exchanged data link physical
physical
by apps and actions taken
❍ user services provided by
lower layer protocols

2
Client-server paradigm
Typical network app has two application
pieces: client and server transport
network
data link
physical
Client:
❒ initiates contact with server request
(“speaks first”)
❒ typically requests service from
server,
❒ e.g.: request WWW page, send reply
email
application
Server: transport
network
data link
❒ provides requested service to physical

client
❒ e.g., sends requested WWW
page, receives/stores received
email
3
Application-layer protocols (cont).

API: application Q: how does a process


programming interface “identify” the other
❒ defines interface process with which it
between application and wants to communicate?
transport layer ❍ IP address of host
running other process
❒ socket: Internet API
❍ “port number” - allows
❍ two processes receiving host to
communicate by sending determine to which local
data into socket, reading process the message
data out of socket should be delivered

… lots more on this later.


4
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 Timing
data transfer ❒ some apps (e.g., Internet
telephony, interactive
Bandwidth games) require low delay to
❒ some apps (e.g., multimedia) be “effective”
require minimum amount of
bandwidth to be “effective”
❒ other apps (“elastic apps”)
make use of whatever
bandwidth they get

5
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 loss-tolerant elastic no
real-time audio/video loss-tolerant audio: 5Kb-1Mb yes, 100’s msec
video:10Kb-5Mb
stored audio/video loss-tolerant same as above yes, few secs
interactive games loss-tolerant few Kbps up yes, 100’s msec
financial apps no loss elastic yes and no

6
Services provided by Internet transport
protocols
TCP service: UDP service:
❒ connection-oriented: setup ❒ unreliable data transfer
required between client, server between sending and
❒ reliable transport between receiving process
sending and receiving process ❒ does not provide:
❒ flow control: sender won’t connection setup, reliability,
overwhelm receiver flow control, congestion
control, timing, or
❒ congestion control: throttle
bandwidth guarantee
sender when network
overloaded
❒ does not providing: timing, Q: why bother? Why is there a
minimum bandwidth UDP?
guarantees

7
Internet apps: their protocols and transport
protocols
Application Underlying
Application layer protocol transport protocol

e-mail smtp [RFC 821] TCP


remote terminal access telnet [RFC 854] TCP
Web http [RFC 2068] TCP
file transfer ftp [RFC 959] TCP
streaming multimedia proprietary TCP or UDP
(e.g. RealNetworks)
remote file server NSF TCP or UDP
Internet telephony proprietary typically UDP
(e.g., Vocaltec)

8
WWW: the http protocol

http: hypertext transfer


protocol htt
pr
equ
❒ WWW’s application layer PC running htt est
pr
protocol Explorer esp
o nse
❒ client/server model
❍ client: browser that
st
que
requests, receives, r e Server
p nse
“displays” WWW objects htt p o running
res
tp NCSA Web
❍ server: WWW server ht
server
sends objects in
response to requests
Mac running
❒ http1.0: RFC 1945 Navigator
❒ http1.1: RFC 2068

9
The http protocol: more
http: TCP transport service: http is “stateless”
❒ client initiates TCP connection ❒ server maintains no
(creates socket) to server, information about past
port 80 client requests
❒ server accepts TCP
connection from client aside
Protocols that maintain “state”
❒ http messages (application- are complex!
layer protocol messages) ❒ past history (state) must be
exchanged between browser maintained
(http client) and WWW server
❒ if server/client crashes, their
(http server)
views of “state” may be
❒ TCP connection closed
inconsistent, must be
reconciled

10
http example
Suppose user enters URL (contains text,
www.someSchool.edu/someDepartment/home.index references to 10
jpeg images)
1a. http client initiates TCP
connection to http server
(process) at
1b. http server at host
www.someSchool.edu waiting
www.someSchool.edu. Port 80
for TCP connection at port 80.
is default for http server.
“accepts” connection, notifying
client
2. http client sends http request
message (containing URL) into
TCP connection socket 3. http server receives request
message, forms response
message containing requested
object
(someDepartment/home.index),
sends message into socket
time
11
http example (cont.)
4. http server closes TCP
connection.
5. http client receives response
message containing html file,
displays html. Parsing html file,
findis10 referenced jpeg objects

6. Steps 1-5 repeated for each of


10 jpeg objects
time

❒ non-persistent connection: one object in each TCP connection


❍some browsers create multiple TCP connections
simultaneously - one per object
❒ persistent connection: multiple objects transferred within one
TCP connection

12
http message format: request

❒ 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
HEAD commands) Connection: close
User-agent: Mozilla/4.0
header Accept: text/html, image/gif,image/jpeg
lines Accept-language:fr

Carriage return,
(extra carriage return, line feed)
line feed
indicates end
of message
13
http request message: general format

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

data, e.g.,
requested
html file

15
http reply 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
16
Trying out http (client side) for yourself

1. Telnet to your favorite WWW server:


telnet www.eurecom.fr 80 Opens TCP connection to port 80
(default http server port) at www.eurecom.fr.
Anything typed in sent
to port 80 at www.eurecom.fr

2. Type in a GET http request:


GET /~ross/index.html HTTP/1.0 By typing this in (hit carriage
return twice), you send
this minimal (but complete)
GET request to http server

3. Look at response message sent by http server!

17
User-server interaction: authentication

Authentication goal: control client server


access to server documents usual http request msg
❒ stateless: client must present 401: authorization req.
authorization in each request WWW authenticate:
❒ authorization: typically name,
password usual http request msg
❍ authorization: header + Authorization:line
line in request
usual http response msg
❍ if no authorization
presented, server refuses
access, sends usual http request msg
WWW authenticate: + Authorization:line

header line in response usual http response msg time

18
User-server interaction: cookies

❒ server sends “cookie” to client server


client in response usual http request msg
Set-cookie: # usual http response +
❒ client present cookie in Set-cookie: #
later requests
cookie: # usual http request msg
❒ server matches presented- cookie: # cookie-
cookie with server-stored spectific
usual http response msg action
cookies
❍ authentication
❍ remembering user usual http request msg
cookie-
preferences, previous cookie: #
spectific
choices usual http response msg action

19
User-server interaction: conditional GET

❒ Goal: don’t send object if client server


client has up-to-date stored
http request msg
(cached) version If-modified-since: object
❒ client: specify date of cached <date> not
copy in http request http response modified
If-modified-since: HTTP/1.0
<date> 304 Not Modified
❒ server: response contains no
object if cached copy up-to-
date: http request msg
If-modified-since:
HTTP/1.0 304 Not
<date>
object
Modified modified
http response
HTTP/1.1 200 OK

<data>
20
Web Caches (proxy server)
Goal: satisfy client request without involving origin server
❒ user sets browser: origin
WWW accesses via server
web cache
htt
Proxy
❒ client sends all http st
pr
equ server q ue
re se
requests to web cache client http est t p on
res ht es
p
pon r
❍ if object at web cache, se tp
ht
web cache
uest htt
immediately returns eq pr
t t p r
o nse htt
equ
est
object in http response h
r esp pr
esp
tp ons
❍ else requests object ht e
from origin server,
then returns http client
origin
response to client server

21
Why WWW Caching?
origin
servers
Assume: cache is “close”
to client (e.g., in same public
Internet
network)
❒ smaller response time:
cache “closer” to client 1.5 Mbps
❒ decrease traffic to access link
institutional
distant servers network
10 Mbps LAN
❍ link out of
institutional/local ISP
network often bottleneck
institutional
cache

22
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

23
ftp: separate control, data connections

❒ ftp client contacts ftp server at


port 21, specifying TCP as
transport protocol
TCP control connection
❒ two parallel TCP connections port 21
opened:
❍ control: exchange
TCP data connection
commands, responses FTP port 20 FTP
between client, server. client server
“out of band control”
❍ data: file data to/from
server
❒ ftp server maintains “state”:
current directory, earlier
authentication
24
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
❒ LIST return list of file in ❒ 125 data connection
current directory already open;
transfer starting
❒ RETR filename retrieves
❒ 425 Can’t open data
(gets) file connection
❒ STOR filename stores ❒ 452 Error writing
(puts) file onto remote host file

25
Electronic Mail outgoing
message queue
user mailbox
user
Three major components: agent
❒ user agents mail
user
server
❒ mail servers agent
❒ simple mail transfer protocol: SMTP mail
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, pine, elm, user
Netscape Messenger agent
user
❒ outgoing, incoming messages agent
stored on server
26
Electronic Mail: mail servers
user
Mail Servers agent
❒ mailbox contains incoming mail
user
messages (yet ot be read) for server
agent
user
❒ message queue of outgoing
SMTP mail
server user
(to be sent) mail messages
❒ smtp protocol between mail SMTP agent

server to send email SMTP


messages mail user
server agent
❍ client: sending mail server
❍ “server”: receiving mail
user
server agent
user
agent

27
Electronic Mail: smtp [RFC 821]
❒ uses tcp to reliably transfer email msg from client to server,
port 25
❒ direct transfer: sending server to receiving server
❒ three phases of transfer
❍ handshaking (greeting)
❍ transfer
❍ closure
❒ command/response interaction
❍ commands: ASCI text
❍ response: status code and phrase

28
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

29
smtp: final words
try smtp interaction for Comparison with http
yourself: ❒ http: pull
❒ telnet servername 25 ❒ email: push
❒ see 220 reply from server
❒ both have ASCII
❒ enter HELO, MAIL FROM,
RCPT TO, DATA, QUIT command/response
interaction, status codes
commands
above lets you send email ❒ http: multiple objects in file
without using email client sent in separate connections
(reader) ❒ smtp: multiple message
parts sent in one connection

30
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
❒ line containing only `.’

31
Message format: multimedia extensions
❒ MIME: multimedia mail extension, RFC 2045, 2056
❒ additional lines in msg header declare MIME content type

From: alice@crepes.fr
MIME version To: bob@hamburger.edu
Subject: Picture of yummy crepe.
method used MIME-Version: 1.0
to encode data Content-Transfer-Encoding: base64
Content-Type: image/jpeg
multimedia data
type, subtype, base64 encoded data .....
parameter declaration .........................
......base64 encoded data
encoded data .

32
MIME types
Text Video
❒ example subtypes: plain, ❒ example subtypes:
html mpeg, quicktime

Image
❒ example subtypes: jpeg,
Application
gif ❒ other data that must be
processed by reader
before “viewable”
Audio
❒ example subtypes:
❒ exampe subtypes: basic (8-
msword, octet-
bit mu-law encoded),
32kadpcm (32 kbps
stream
coding)
33
Mail access protocols
SMTP SMTP POP3 or user
user
agent IMAP agent

sender’s mail receiver’s mail


server server
❒ SMTP: delivery/storage to receiver’s server
❒ Mail access protocol: retrieval from server
❍ POP: Post Office Protocol [RFC 1939]
• authorization (agent <-->server) and download
❍ IMAP: Internet Mail Access Protocol [RFC 1730]
• more features (more complex)
• manipulation of stored msgs on server

34
POP3 protocol S: +OK POP3 server ready
C: user alice
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
❍ +OK
S: .
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
35
DNS: Domain Name System

People: many identifiers: Domain Name System:


❍ SSN, name, Passport # ❒ distributed database
implemented in hierarchy of
Internet hosts, routers:
many name servers
❍ IP address (32 bit) - used
❒ application-layer protocol host,
for addressing
routers, name servers to
datagrams
communicate to resolve names
❍ “name”, e.g., (address/name translation)
gaia.cs.umass.edu -
❍ note: core Internet function
used by humans
implemented as application-
Q: map between IP layer protocol
addresses and name ? ❍ complexity at network’s
“edge”

36
DNS name servers
Why not centralize DNS? ❒ no server has all name-to-
❒ single point of failure IP address mappings
❒ traffic volume local name servers:
❍ each ISP, company has
❒ distant centralized
local (default) name server
database ❍ host DNS query first goes to
❒ maintenance local name server
authoritative name server:
doesn’t scale! ❍ for a host: stores that host’s
IP address, name
❍ can perform name/address
translation for that host’s
name

37
DNS: Root name servers
❒ contacted by local name
server that can not
resolve name
❒ root name server:
❍ contacts
authoritative name
server if name
mapping not known
❍ gets mapping
❍ returns mapping to
local name server
❒ ~ dozen root name
servers worldwide

38
Simple DNS example root name server

host surf.eurecom.fr wants


2 4
IP address of 3
5
gaia.cs.umass.edu
1. Contacts its local DNS
server, dns.eurecom.fr
2. dns.eurecom.fr contacts local name server authorititive name server
root name server, if dns.eurecom.fr dns.umass.edu
necessary
1 6
3. root name server contacts
authoritative name server,
dns.umass.edu, if
necessary requesting host gaia.cs.umass.edu
surf.eurecom.fr

39
DNS example root name server

Root name server: 2 6


❒ may not know 7 3
authoratiative name
server
❒ may know intermediate
name server: who to local name server intermediate name server
contact to find dns.eurecom.fr dns.umass.edu
authoritative name 4 5
1 8
server
authoritative name server
dns.cs.umass.edu
requesting host
surf.eurecom.fr

gaia.cs.umass.edu

40
DNS: iterated queries root name server

recursive query: 2 iterated query


❒ puts burden of name 3
resolution on contacted 4
name server
❒ heavy load? 7

local name server intermediate name server


iterated query: dns.eurecom.fr dns.umass.edu
❒ contacted server 5 6
1 8
replies with name of
server to contact
authoritative name server
❒ “I don’t know this dns.cs.umass.edu
name, but ask this requesting host
server” surf.eurecom.fr

gaia.cs.umass.edu

41
DNS: caching and updating records
❒ once (any) name server learns mapping, it caches
mapping
❍ cache entries timeout (disappear) after some
time
❒ update/notify mechanisms under design by IETF
❍ RFC 2136
❍ http://www.ietf.org/html.charters/dnsind-charter.html

42
DNS records
DNS: distributed db storing resource records (RR)
RR format: (name, value, type,ttl)

❒ Type=A ❒ Type=CNAME
❍ name is hostname ❍ name is an alias name for
❍ value is IP address some “cannonical” (the
real) name
❒ Type=NS ❍ value is cannonical
❍ name is domain (e.g. name
foo.com)
❒ Type=MX
❍ value is IP address of
❍ value is hostname of
authoritative name server
for this domain mailserver associated with
name
43
DNS protocol, messages
DNS protocol : query and repy messages, both with
same message format

msg header
❒ identification: 16 bit # for
query, repy to query uses
same #
❒ flags:
❍ query or reply
❍ recursion desired
❍ recursion available
❍ reply is authoritative

44
DNS protocol, messages

Name, type fields


for a query

RRs in reponse
to query

records for
authoritative servers

additional “helpful”
info that may be used

45
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, application-
1981
created/owned,
❒ explicitly created, used, OS-controlled interface
released by apps (a “door”) into which
❒ client/server paradigm application process can
❒ two types of transport service both send and
via socket API: receive messages to/from
❍ unreliable datagram another (remote or
local) application process
❍ reliable, byte stream-
oriented

46
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

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

host or host or
server server

47
Socket programming with TCP
Client must contact server ❒ When client creates socket:
❒ server process must first be client TCP establishes
running connection to server TCP
❒ server must have created ❒ When contacted by client,
socket (door) that welcomes server TCP creates new
client’s contact socket for server process to
communicate with client
Client contacts server by:
❍ allows server to talk with
❒ creating client-local TCP
multiple clients
socket
❒ specifying IP address, port application viewpoint
number of server process
TCP provides reliable, in-order
transfer of bytes (“pipe”)
between client and server

48
Socket programming with TCP

Example client-server app: Input stream: sequence of


❒ client reads line from standard bytes into process
input (inFromUser stream) , Output stream: sequence of
sends to server via socket bytes out of process
(outToServer stream)

iinFromServer
❒ server reads line from socket

outToServer
❒ server converts line to
uppercase, sends back to client
❒ client reads, prints modified
line from socket inFromUser
(inFromServer stream)

client socket

49
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
connectionSocket
close
connectionSocket close
clientSocket
50
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
51
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();

}
}
52
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

53
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

54
Socket programming with UDP

UDP: no “connection” between


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

55
Client/server socket interaction: UDP
Server (running on hostid) Client

create socket,
port=x, for create socket,
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 umber close
clientSocket

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

58
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
59
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 client connection
60
Chapter 2: Summary
Our study of network apps now complete!
❒ application service ❒ specific protocols:
requirements: ❍ http
❍ reliability, bandwidth, ❍ ftp
delay ❍ smtp, pop3
❒ client-server paradigm ❍ dns
❒ Internet transport ❒ socket programming
service model ❍ client/server
❍ connection-oriented, implementation
reliable: TCP ❍ using tcp, udp sockets
❍ unreliable, datagrams:
UDP

61
Chapter 2: Summary
Most importantly: learned about protocols
❒ typical request/reply
❒ control vs. data msgs
message exchange:
❍ in-based, out-of-band
❍ client requests info or
service
❒ centralized vs. decentralized
❍ server responds with
❒ stateless vs. stateful
data, status code ❒ reliable vs. unreliable msg
transfer
❒ message formats:
❒ “complexity at network edge”
❍ headers: fields giving info
❒ security: authentication
about data
❍ data: info being
communicated

62

Das könnte Ihnen auch gefallen