0% found this document useful (0 votes)
2 views

CN_Module-5_Application Layer

Module 5 of 'Computer Networking: A Top Down Approach' covers the Application Layer, detailing principles of network applications, various protocols like HTTP, FTP, and email, and application architectures such as client-server and peer-to-peer. It also discusses socket programming, transport service requirements, and the specifics of HTTP connections and messages. The module emphasizes the importance of addressing processes and the transport protocols that support different types of applications.
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
2 views

CN_Module-5_Application Layer

Module 5 of 'Computer Networking: A Top Down Approach' covers the Application Layer, detailing principles of network applications, various protocols like HTTP, FTP, and email, and application architectures such as client-server and peer-to-peer. It also discusses socket programming, transport service requirements, and the specifics of HTTP connections and messages. The module emphasizes the importance of addressing processes and the transport protocols that support different types of applications.
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 80

Module - 5

Application Layer

Computer Networking: A Top Down Approach,

By

Jim Kurose, Keith Ross, Addison-Wesley.

2: Application Layer 1
Module 5: Application layer
 1. Principles of  6. P2P applications
network applications  7. Socket programming
 2. Web and HTTP with TCP
 3. FTP  8. Socket programming
 4. Electronic Mail with UDP
❖ SMTP, POP3, IMAP
 5. DNS

2
Some network apps
 e-mail  voice over IP
 web  real-time video
 instant messaging conferencing
 remote login  Social Networking

 P2P file sharing  Online Games

 multi-user network
games
 streaming stored video
clips

3
Creating a network app application
transport
network
data link

write programs that physical

❖ run on (different) end


systems
❖ communicate over network
❖ e.g., web server software
communicates with browser
software application

No need to write software


transport
network
data link
for network-core devices
application
physical
transport
network
❖ Network-core devices do data link
physical
not run user applications

4
Module 5: Application layer
 1. Principles of  6. P2P applications
network applications  7. Socket programming
 2. Web and HTTP with TCP
 3. FTP  8. Socket programming
 4. Electronic Mail with UDP
❖ SMTP, POP3, IMAP
 5. DNS

5
Application architectures
 Client-server
 Peer-to-peer (P2P)
 Hybrid of client-server and P2P

6
Client-server architecture
server:
❖ always-on host
❖ permanent IP address
❖ server farms for
scaling(Data Center)
clients:
client/server ❖ communicate with server
❖ may be intermittently
connected
❖ may have dynamic IP
addresses
❖ do not communicate
directly with each other
7
Pure P2P architecture
 no always-on server
 arbitrary end systems
directly communicate peer-peer
 peers are intermittently
connected and change IP
addresses

Highly scalable but


difficult to manage

8
Hybrid of client-server and P2P
Skype
❖ voice-over-IP P2P application
❖ centralized server: finding address of remote
party:
❖ client-client connection: direct (not through
server)
Instant messaging
❖ chatting between two users is P2P
❖ centralized service: client presence
detection/location
• user registers its IP address with central
server when it comes online
• user contacts central server to find IP
addresses of buddies
9
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  Note: applications with
hosts communicate by P2P architectures have
exchanging messages client processes &
server processes

10
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
sending process relies on buffers, 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)
11
Addressing processes
 to receive messages,
process must have
identifier
 host device has unique
32-bit IP address
 Q: does IP address of
host suffice for
identifying the process?

12
Addressing processes
 to receive messages,  identifier includes both
process must have IP address and port
identifier numbers associated with
 host device has unique process on host.
32-bit IP address  Example port numbers:
 Q: does IP address of ❖ HTTP server: 80
host on which process ❖ Mail server: 25
runs suffice for  to send HTTP message
identifying the to gaia.cs.umass.edu web
process? server:
❖ A: No, many ❖ IP address: 128.119.245.12
processes can be ❖ Port number: 80
running on same host
13
What transport service does an app need?
Data loss Throughput
 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 throughput to be
100% reliable data “effective”
transfer
 other apps (“elastic apps”)
Timing make use of whatever
 some apps (e.g., throughput they get
Internet telephony,
interactive games) Security
require low delay to be  Encryption, data
“effective” integrity, …

14
Transport service requirements of common apps

Application Data loss Throughput Time Sensitive

file transfer no loss elastic no


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

15
Internet transport protocols services

TCP service: UDP service:


 connection-oriented: setup  unreliable data transfer
required between client and between sending and
server processes receiving process
 reliable transport between  does not provide:
sending and receiving process connection setup,
 flow control: sender won’t reliability, flow control,
overwhelm receiver congestion control, timing,
throughput guarantee, or
 congestion control: throttle
security
sender when network
overloaded
 does not provide: timing,
minimum throughput
guarantees, security
16
Internet apps: application, transport protocols

Application Underlying
Application layer protocol transport protocol

e-mail SMTP [RFC 2821] TCP


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

17
Module 5: Application layer
 1. Principles of  6. P2P applications
network applications  7. Socket programming
 2. Web and HTTP with TCP
 3. FTP  8. Socket programming
 4. Electronic Mail with UDP
❖ SMTP, POP3, IMAP
 5. DNS

18
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

19
HTTP overview

HTTP: hypertext
transfer protocol
 Web’s 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
Navigator

20
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
server (HTTP server)
 TCP connection closed

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

22
Nonpersistent HTTP
(contains text,
Suppose user enters URL references to 10
www.someSchool.edu/someDepartment/home.index jpeg images)

1a. HTTP client initiates TCP


connection to HTTP server
1b. HTTP server at host
(process) at
www.someSchool.edu waiting
www.someSchool.edu on port 80
for TCP connection at port 80.
“accepts” connection, notifying
client
2. HTTP client sends HTTP
request message (containing
URL) into TCP connection 3. HTTP server receives request
socket. Message indicates message, forms response
that client wants object message containing requested
someDepartment/home.index object, and sends message
into its socket

time
23
Nonpersistent HTTP (cont.)

4. HTTP server closes TCP


connection.
5. HTTP client receives response
message containing html file,
displays html. Parsing html
file, finds 10 referenced jpeg
objects
time 6. Steps 1-5 repeated for each
of 10 jpeg objects

24
Non-Persistent HTTP: Response time
Definition of RTT: time for
a small packet to travel
from client to server
and back. initiate TCP
connection
Response time: RTT
 one RTT to initiate TCP request
file
connection time to
RTT
transmit
 one RTT for HTTP file
request and first few file
received
bytes of HTTP response
to return time time
 file transmission time
total = 2RTT+transmit time
25
Persistent HTTP

Nonpersistent HTTP issues: Persistent HTTP


 requires 2 RTTs per object  server leaves connection
 OS overhead for each TCP open after sending
connection response
 browsers often open parallel  subsequent HTTP messages
TCP connections to fetch between same
referenced objects client/server sent over
open connection
 client sends requests as
soon as it encounters a
referenced object
 as little as one RTT for all
the referenced objects

26
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
HEAD 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
27
HTTP request message: general format

28
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

29
Method types HTTP/1.1
 DELETE
HTTP/1.0 ❖ deletes file specified in the
URL field
 GET
 POST  TRACE
 HEAD ❖ Echoes request msg
❖ asks server to leave from server
requested object out of  OPTIONS
response
❖ Returns HTTP methods
HTTP/1.1
that the server supports
 GET, POST, HEAD
 CONNECT
 PUT
❖ TCP/IP tunnel for HTTP
❖ uploads file in entity
body to path specified
in URL field 30
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
header Server: Apache/1.3.0 (Unix)
lines Last-Modified: Mon, 22 Jun 1998 …...
Content-Length: 6821
Content-Type: text/html

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


requested
HTML file

31
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
32
Module 5: Application layer
 1. Principles of  6. P2P applications
network applications  7. Socket programming
 2. Web and HTTP with TCP
 3. FTP  8. Socket programming
 4. Electronic Mail with UDP
❖ SMTP, POP3, IMAP
 5. DNS

33
FTP: the file transfer protocol

FTP file transfer


FTP FTP
user client server
interface
user
at host remote file
local 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 server: port 21

34
FTP: separate control, data connections
TCP control connection
 FTP client contacts FTP server port 21
at port 21, TCP is transport
protocol TCP data connection
 client authorized over control FTP port 20 FTP
connection client server
 client browses remote
 server opens another TCP
directory by sending commands
data connection to transfer
over control connection.
another file.
 when server receives file
 control connection: “out of
transfer command, server
band”
opens 2nd TCP connection (for
file) to client  FTP server maintains “state”:
current directory, earlier
 after transferring one file,
authentication
server closes data connection.
35
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 Can’t open data
(gets) file connection
 STOR filename stores  452 Error writing
(puts) file onto remote file
host

36
Module 5: Application layer
 1. Principles of  6. P2P applications
network applications  7. Socket programming
 2. Web and HTTP with TCP
 3. FTP  8. Socket programming
 4. Electronic Mail with UDP
❖ SMTP, POP3, IMAP
 5. DNS

37
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
Mozilla Thunderbird agent
user
 outgoing, incoming messages agent
stored on server
38
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

39
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
 command/response interaction
❖ commands: ASCII text
❖ response: status code and phrase

 messages must be in 7-bit ASCII(Max. 1000


char)

40
Scenario: Alice sends message to Bob
1) Alice uses UA to compose 4) SMTP client sends Alice’s
message and “to” message over the TCP
[email protected] connection
2) Alice’s UA sends message 5) Bob’s mail server places the
to her mail server; message message in Bob’s mailbox
placed in message queue 6) Bob invokes his user agent
3) Client side of SMTP opens to read message
TCP connection with Bob’s
mail server

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

41
Sample SMTP interaction
S: 220 hamburger.edu
C: HELO crepes.fr
S: 250 Hello crepes.fr, pleased to meet you
C: MAIL FROM: <[email protected]>
S: 250 [email protected]... Sender ok
C: RCPT TO: <[email protected]>
S: 250 [email protected] ... Recipient ok
C: DATA
S: 354 Enter mail, end with "." on a line by itself
C: Do you like ketchup?
C: How about pickles?
C: .
S: 250 Message accepted for delivery
C: QUIT
S: 221 hamburger.edu closing connection

42
SMTP: final words
 SMTP uses persistent Comparison with HTTP:
connections
 HTTP: pull
 SMTP requires message
(header & body) to be in 7-  SMTP: push
bit ASCII  both have ASCII
 SMTP server uses command/response
CRLF.CRLF to determine interaction, status codes
end of message
 HTTP: each object
encapsulated in its own
response msg
 SMTP: multiple objects
sent in multipart msg

43
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

44
Mail access protocols
SMTP SMTP access user
user
agent protocol 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
❖ HTTP: gmail, Hotmail, Yahoo! Mail, etc.

45
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
46
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

47
Module 5: Application layer
 1. Principles of  6. P2P applications
network applications  7. Socket programming
 2. Web and HTTP with TCP
 3. FTP  8. Socket programming
 4. Electronic Mail with UDP
❖ SMTP, POP3, IMAP
 5. DNS

48
DNS: Domain Name System

People: many identifiers: Domain Name System:


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

49
DNS
DNS services Why not centralize DNS?
 hostname to IP  single point of failure
address translation  traffic volume
 host aliasing  distant centralized
❖ Canonical, alias names database
 mail server aliasing  maintenance
 load distribution
❖ replicated Web doesn’t scale!
servers: set of IP
addresses for one
canonical name

50
Distributed, Hierarchical Database
Root DNS Servers

com DNS servers org DNS servers edu DNS servers

pbs.org poly.edu umass.edu


yahoo.com amazon.com
DNS servers DNS serversDNS servers
DNS servers DNS servers

Client wants IP for www.amazon.com; 1st approx:


 client queries a root server to find com DNS server
 client queries com DNS server to get amazon.com
DNS server
 client queries amazon.com DNS server to get IP
address for www.amazon.com
51
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
a Verisign, Dulles, VA
c Cogent, Herndon, VA (also LA)
d U Maryland College Park, MD k RIPE London (also 16 other locations)
g US DoD Vienna, VA
h ARL Aberdeen, MD i Autonomica, Stockholm (plus
j Verisign, ( 21 locations) 28 other locations)
e NASA Mt View, CA m WIDE Tokyo (also Seoul,
f Internet Software C. Palo Alto, Paris, SF)
CA (and 36 other locations)

13 root name
servers worldwide
b USC-ISI Marina del Rey, CA
l ICANN Los Angeles, CA

52
TLD and Authoritative Servers
 Top-level domain (TLD) servers:
❖ responsible for com, org, net, edu, etc, and all
top-level country domains uk, fr, ca, jp.
❖ Network Solutions maintains servers for com TLD
❖ Educause for edu TLD
 Authoritative DNS servers:
❖ organization’s DNS servers, providing
authoritative hostname to IP mappings for
organization’s servers (e.g., Web, mail).
❖ can be maintained by organization or service
provider

53
Local Name Server
 does not strictly belong to hierarchy
 each ISP (residential ISP, company,
university) has one.
❖ also called “default name server”
 when host makes DNS query, query is sent
to its local DNS server
❖ acts as proxy, forwards query into hierarchy

54
DNS name root DNS server

resolution example
2
 Host at cis.poly.edu 3
TLD DNS server
wants IP address for 4
gaia.cs.umass.edu 5

iterated query: local DNS server


dns.poly.edu
 contacted server 7 6
replies with name of 1 8
server to contact
authoritative DNS server
 “I don’t know this
dns.cs.umass.edu
name, but ask this requesting host
server” cis.poly.edu

gaia.cs.umass.edu

55
DNS name
resolution example root DNS server

recursive query: 2 3
 puts burden of name 6
7
resolution on
TLD DNS server
contacted name
server
 heavy load? local DNS server
dns.poly.edu 5 4

1 8

authoritative DNS server


dns.cs.umass.edu
requesting host
cis.poly.edu

gaia.cs.umass.edu

56
DNS: caching and updating records
 once (any) name server learns mapping, it caches
mapping
❖ cache entries timeout (disappear) after some
time
❖ TLD servers typically cached in local name
servers
• Thus root name servers not often visited

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

 Type=A  Type=CNAME
❖ name is hostname ❖ name is alias name for some
❖ value is IP address “canonical” (the real) name
www.ibm.com is really
 Type=NS
servereast.backup2.ibm.com
❖ name is domain (e.g.
❖ value is canonical name
foo.com)
❖ value is hostname of
 Type=MX
authoritative name
❖ value is name of mailserver
server for this domain
associated with name

58
DNS protocol, messages
DNS protocol : query and reply messages, both with
same message format

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

59
DNS protocol, messages

Name, type fields


for a query

RRs in response
to query

records for
authoritative servers

additional “helpful”
info that may be used

60
Module 5: Application layer
 1. Principles of  6. P2P applications
network applications  7. Socket programming
 2. Web and HTTP with TCP
 3. FTP  8. Socket programming
 4. Electronic Mail with UDP
❖ SMTP, POP3, IMAP
 5. DNS

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

Socket API socket


 client/server paradigm a host-local,
 two types of transport application-created,
service via socket API: OS-controlled interface
(a “door”) into which
❖ unreliable datagram
application process can
❖ reliable, byte stream-
both send and
oriented receive messages to/from
another application
process

62
Socket-programming using TCP
Socket: a door between application process and end-
transport protocol (UDP 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
controlled by TCP with TCP with controlled by
buffers, operating
operating buffers, internet system
system variables variables

host or host or
server server

63
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
welcomes client’s contact application viewpoint
TCP provides reliable, in-order
Client contacts server by:
transfer of bytes (“pipe”)
 creating client-local TCP between client and server
socket
 specifying IP address, port
number of server process
 When client creates
socket: client TCP
establishes connection to
server TCP
64
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
65
Stream
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

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

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

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

70
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

71
Module-5: Application layer
 2.1 Principles of  2.6 P2P applications
network applications  2.7 Socket programming
 2.2 Web and HTTP with TCP
 2.3 FTP  2.8 Socket programming
 2.4 Electronic Mail with UDP
❖ SMTP, POP3, IMAP
 2.5 DNS

72
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

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

create socket, create socket,


port= x. clientSocket =
serverSocket = DatagramSocket()
DatagramSocket()
Create datagram with server IP and
port=x; send datagram via
read datagram from clientSocket
serverSocket

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

74
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

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

77
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
78
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
79
Module-5:Summary
our study of network apps now complete!
 application architectures  specific protocols:
❖ client-server ❖ HTTP

❖ P2P ❖ FTP

❖ hybrid ❖ SMTP, POP, IMAP


❖ DNS
 application service
❖ P2P: BitTorrent, Skype
requirements:
❖ reliability, bandwidth,  socket programming
delay
 Internet transport
service model
❖ connection-oriented,
reliable: TCP
❖ unreliable, datagrams: UDP
80

You might also like