Socket Programming in TCP and UDP at the Application Layer, Study notes of Computer Systems Networking and Telecommunications

Socket programming using both tcp and udp at the application layer. It covers the concept of a socket as a door between application processes and transport protocols, the reliable transfer of bytes using tcp, and the unreliable transfer of datagrams using udp. The document also provides examples of java client-server applications using both tcp and udp.

Typology: Study notes

Pre 2010

Uploaded on 07/30/2009

koofers-user-6p7-1
koofers-user-6p7-1 🇺🇸

10 documents

1 / 3

Toggle sidebar

This page cannot be seen from the preview

Don't miss anything!

bg1
1
2: Application Layer 1
Socket Programming
2: Application Layer 2
Socket-programming using TCP
Socket: a door between app lication process and end-
end-transport protocol (UC P or TCP)
TCP service: reliable transf er of bytes from one
process to another
process
TCP with
buffers,
variables
socket
controlled by
application
developer
controlled by
operating
system
host or
server
process
TCP with
buffers,
variables
socket
controlled by
application
developer
controlled by
operating
system
host or
server
internet
2: Application Layer 3
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 reliabl e, in-order
transfer of bytes ( “pipe”)
between client and s erver
application viewpoint
2: Application Layer 4
Stream jargon
A stream is a sequence
of characters that flow
into or out of a process.
An input stream is
attached to some input
source for the process,
eg, keyboard or socke t.
An output stream is
attached to an output
source, eg, monitor o r
socket.
outToServer
to network from network
inFromServer
inFromUser
keyboard monitor
Process
clientSocket
input
stream
input
stream
output
stream
TCP
socket
Client
process
client TCP
socket
2: Application Layer 5
Socket programming with TCP
Example client-server app:
1) client reads line f rom
standard input (inFr omUser
stream) , sends to se rver via
socket (outToS erver
stream)
2) server reads line from socket
3) server converts li ne to
uppercase, sends bac k to
client
4) client reads, print s modified
line from socket
(inFromServer stream)
outToServer
to network from network
inFromServer
inFromUser
keyboard monitor
Process
clientSocket
input
stream
input
stream
output
stream
TCP
socket
Client
process
client TCP
socket
2: Application Layer 6
Client/server socket interaction: TCP
wait for incoming
connection request
connectionSocket =
welcomeSocket.accept()
create socket,
port=x, for
incoming request:
welcomeSocket =
ServerSocket()
create socket,
connect to hostid, port=x
clientSocket =
Socket()
close
connectionSocket
read reply from
clientSocket
close
clientSocket
Server (running on hostid)Client
send request using
clientSocket
read request from
connectionSocket
write reply to
connectionSocket
TCP
connection setup
pf3

Partial preview of the text

Download Socket Programming in TCP and UDP at the Application Layer and more Study notes Computer Systems Networking and Telecommunications in PDF only on Docsity!

2: Application Layer 1

Socket Programming

2: Application Layer 2

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 with buffers, variables socket controlled by application developer controlled by operating system

host or

server

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

host or

server

internet

2: Application Layer 3

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

2: Application Layer 4

Stream jargon

❒ A stream is a sequence

of characters that flow

into or out of a process.

❒ An input stream is

attached to some input

source for the process,

eg, keyboard or socket.

❒ An output stream is

attached to an output

source, eg, monitor or

socket.

outToServer to network from network inFromServer inFromUser keyboard monitor

Process

clientSocket stream^ input stream^ input output stream socket^ TCP

Client

process

client TCP socket 2: Application Layer 5

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)

outToServer to network from network inFromServer inFromUser keyboard monitor

Process

clientSocket stream^ input stream^ input output stream socket^ TCP

Client

process

client TCP socket 2: Application Layer 6

Client/server socket interaction: TCP

wait for incoming connection request connectionSocket welcomeSocket.accept() = create socket, port= x , for incoming request: welcomeSocket = ServerSocket() create socket, connect to hostid , port= x clientSocket Socket() = close connectionSocket read reply from clientSocket close clientSocket

Server (running on hostid ) Client

read request from^ send request using clientSocket connectionSocket write reply to connectionSocket

TCP

connection setup

2: Application Layer 7 Example: Java client (TCP) import java.io.; import java.net.; class TCPClient { public static void main(String argv[]) throws Exception { String sentence; String modifiedSentence; BufferedReader inFromUser = new BufferedReader(new InputStreamReader(System.in)); Socket clientSocket = new Socket("hostname", 6789); DataOutputStream outToServer = new DataOutputStream(clientSocket.getOutputStream()); Create input stream Create client socket, connect to server Create output stream attached to socket 2: Application Layer 8 Example: Java client (TCP), cont. BufferedReader inFromServer = new BufferedReader(new InputStreamReader(clientSocket.getInputStream())); sentence = inFromUser.readLine(); outToServer.writeBytes(sentence + '\n'); modifiedSentence = inFromServer.readLine(); System.out.println("FROM SERVER: " + modifiedSentence); clientSocket.close(); } } Create input stream attached to socket Send line to server Read line from server 2: Application Layer 9 Example: Java server (TCP) import java.io.; import java.net.; class TCPServer { public static void main(String argv[]) throws Exception { String clientSentence; String capitalizedSentence; ServerSocket welcomeSocket = new ServerSocket(6789); while(true) { Socket connectionSocket = welcomeSocket.accept(); BufferedReader inFromClient = new BufferedReader(new InputStreamReader(connectionSocket.getInputStream())); Create welcoming socket at port 6789 Wait, on welcoming socket for contact by client Create input stream, attached to socket 2: Application Layer 10 Example: Java server (TCP), cont DataOutputStream outToClient = new DataOutputStream(connectionSocket.getOutputStream()); clientSentence = inFromClient.readLine(); capitalizedSentence = clientSentence.toUpperCase() + '\n'; outToClient.writeBytes(capitalizedSentence); } } } Read in line from socket Create output stream, attached to socket Write out line to socket End of while loop, loop back and wait for another client connection 2: Application Layer 11 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

2: Application Layer 12 Client/server socket interaction: UDP close clientSocket Server (running on hostid ) read reply from clientSocket create socket, clientSocket = DatagramSocket() Client Create, address ( send datagram request hostid, port=x, using clientSocket create socket, port= x , for incoming request: serverSocket = DatagramSocket() read request from serverSocket write reply to serverSocket specifying client host address, port number