CS F303
(Computer Networks)
Vishal Gupta
Department of Computer Science and Information Systems
BITS Pilani Birla Institute of Technology and Science
Pilani|Dubai|Goa|Hyderabad
Pilani Campus, Pilani
BITS Pilani
Pilani|Dubai|Goa|Hyderabad
Agenda: Transport Layer: Sockets,
Multiplexing, De-multiplexing
Transport services and protocols
application
transport
provide logical communication network
data link
between app processes physical
running on different hosts
transport protocols run in end
systems
send side: breaks app
messages into segments,
passes to network layer
rcv side: reassembles
segments into messages, application
transport
passes to app layer network
data link
physical
more than one transport
protocol available to apps
Internet: TCP and UDP
Transport Layer 3-3
Internet transport-layer protocols
application
• reliable, in-order transport
network
data link
delivery (TCP) physical
network
network data link
– congestion control data link
physical
physical
– flow control network
data link
physical
– connection setup network
data link
• unreliable, unordered physical
network
delivery: UDP network
data link
physical
– no-frills extension of data link
physical
network
application
transport
“best-effort” IP data link
physical
network
data link
physical
• services not available:
– delay guarantees
– bandwidth guarantees
Transport Layer 3-4
Multiplexing/demultiplexing
multiplexing at sender:
handle data from multiple demultiplexing at receiver:
sockets, add transport header use header info to deliver
(later used for demultiplexing) received segments to correct
socket
application
application P1 P2 application socket
P3 transport P4
process
transport network transport
network link network
link physical link
physical physical
Transport Layer 3-5
How demultiplexing works
host receives IP datagrams 32 bits
each datagram has source IP address,
destination IP address source port # dest port #
each datagram carries one transport-
layer segment
each segment has source, destination
port number other header fields
host uses IP addresses & port
numbers to direct segment to
appropriate socket application
data
(payload)
TCP/UDP segment format
Transport Layer 3-6
Connectionless demultiplexing
recall: created socket has recall: when creating
host-local port #: datagram to send into
DatagramSocket mySocket1 UDP socket, must specify
= new DatagramSocket(12534); destination IP address
destination port #
when host receives UDP IP datagrams with same
segment: dest. port #, but different
source IP addresses
checks destination port # and/or source port
in segment numbers will be directed
directs UDP segment to to same socket at dest
socket with that port #
Transport Layer 3-7
Connectionless demux: example
DatagramSocket serverSocket
= new DatagramSocket
DatagramSocket (6428);
DatagramSocket
mySocket2 = new mySocket1 = new
DatagramSocket DatagramSocket
(9157); application
(5775);
application application
P1
P3 P4
transport
transport transport
network
network link network
link physical link
physical physical
source port: 6428 source port: ?
dest port: 9157 dest port: ?
source port: 9157 source port: ?
dest port: 6428 dest port: ?
Transport Layer 3-8 BITS Pilani, Deemed to be University under Section 3 of UGC Act, 1956
Connection-oriented demux
TCP socket identified by server host may support
4-tuple: many simultaneous TCP
source IP address
sockets:
each socket identified by
source port number its own 4-tuple
dest IP address
web servers have
dest port number different sockets for
demux: receiver uses each connecting client
all four values to direct non-persistent HTTP will
segment to appropriate have different socket for
each request
socket
Transport Layer 3-9
Connection-oriented demux: example
application
application P4 P5 P6 application
P3 P2 P3
transport
transport transport
network
network link network
link physical link
physical server: IP physical
address B
host: IP source IP,port: B,80 host: IP
address A dest IP,port: A,9157 source IP,port: C,5775 address C
dest IP,port: B,80
source IP,port: A,9157
dest IP, port: B,80
source IP,port: C,9157
dest IP,port: B,80
three segments, all destined to IP address: B,
dest port: 80 are demultiplexed to different sockets
Transport Layer 3-10 BITS Pilani, Deemed to be University under Section 3 of UGC Act, 1956
Connection-oriented demux: example
threaded server
application
application application
P4
P3 P2 P3
transport
transport transport
network
network link network
link physical link
physical server: IP physical
address B
host: IP source IP,port: B,80 host: IP
address A dest IP,port: A,9157 source IP,port: C,5775 address C
dest IP,port: B,80
source IP,port: A,9157
dest IP, port: B,80
source IP,port: C,9157
dest IP,port: B,80
Transport Layer 3-11 BITS Pilani, Deemed to be University under Section 3 of UGC Act, 1956
Socket Programming with UDP
VISHAL GUPTA, PhD 12 BITS Pilani, Deemed to be University under Section 3 of UGC Act, 1956
Socket programming
Two socket types for two transport services:
– UDP: unreliable datagram
– TCP: reliable, byte stream-oriented
Application Example:
1. Client reads a line of characters (data) from its
keyboard and sends the data to the server.
2. The server receives the data and converts
characters to uppercase.
3. The server sends the modified data to the client.
4. The client receives the modified data and displays
the line on its screen.
Application Layer 2-13 BITS Pilani, Deemed to be University under Section 3 of UGC Act, 1956
Socket programming with UDP
UDP: no “connection” between client & server
• no handshaking before sending data
• sender explicitly attaches IP destination address and
port # to each packet
• rcvr extracts sender IP address and port# from
received packet
UDP: transmitted data may be lost or received
out-of-order
Application viewpoint:
• UDP provides unreliable transfer of groups of bytes
(“datagrams”) between client and server
Application Layer 2-14
Client/server socket interaction: UDP
server (running on serverIP) client
create socket:
create socket, port= x: clientSocket =
serverSocket = socket(AF_INET,SOCK_DGRAM)
socket(AF_INET,SOCK_DGRAM)
Create datagram with server IP and
port=x; send datagram via
read datagram from clientSocket
serverSocket
write reply to
serverSocket read datagram from
specifying clientSocket
client address,
port number close
clientSocket
Application
BITS Pilani, Deemed to be University under Section 3 of UGC Act,2-15
1956
Example app: UDP client
Python UDPClient
include Python’s socket
library
from socket import *
serverName = ‘hostname’
serverPort = 12000
create UDP socket for clientSocket = socket(socket.AF_INET,
server
get user keyboard
socket.SOCK_DGRAM)
input message = raw_input(’Input lowercase sentence:’)
Attach server name, port to
message; send into socket clientSocket.sendto(message,(serverName, serverPort))
read reply characters from modifiedMessage, serverAddress =
socket into string
clientSocket.recvfrom(2048)
print out received string print modifiedMessage
and close socket
clientSocket.close()
Application Layer 2-16
Example app: UDP server
Python UDPServer
from socket import *
serverPort = 12000
create UDP socket serverSocket = socket(AF_INET, SOCK_DGRAM)
bind socket to local port
number 12000
serverSocket.bind(('', serverPort))
print “The server is ready to receive”
loop forever while 1:
Read from UDP socket into message, clientAddress = serverSocket.recvfrom(2048)
message, getting client’s
address (client IP and port) modifiedMessage = message.upper()
send upper case string serverSocket.sendto(modifiedMessage, clientAddress)
back to this client
Application Layer 2-17
The client-server application
using TCP
VISHAL GUPTA, PhD 18 BITS Pilani, Deemed to be University under Section 3 of UGC Act, 1956
Socket programming with TCP
client must contact server • when contacted by client, server
• server process must first be TCP creates new socket for server
running process to communicate with
• server must have created that particular client
socket (door) that welcomes – allows server to talk with
client’s contact multiple clients
– source port numbers used to
client contacts server by: distinguish clients (more in
• Creating TCP socket, Chap 3)
specifying IP address, port
number of server process application viewpoint:
• when client creates socket: TCP provides reliable, in-order
client TCP establishes byte-stream transfer (“pipe”)
connection to server TCP between client and server
Application Layer 2-19
Client/server socket interaction: TCP
server (running on hostid) client
create socket,
port=x, for incoming
request:
serverSocket = socket()
wait for incoming create socket,
connection request
TCP connect to hostid, port=x
connectionSocket = connection setup clientSocket = socket()
serverSocket.accept()
send request using
read request from clientSocket
connectionSocket
write reply to
connectionSocket read reply from
clientSocket
close
connectionSocket close
clientSocket
Application Layer 2-20
BITS Pilani, Deemed to be University under Section 3 of UGC Act, 1956
Example app: TCP client
Python TCPClient
from socket import *
serverName = ’servername’
create TCP socket for
serverPort = 12000
server, remote port 12000
clientSocket = socket(AF_INET, SOCK_STREAM)
clientSocket.connect((serverName,serverPort))
sentence = raw_input(‘Input lowercase sentence:’)
No need to attach server clientSocket.send(sentence)
name, port
modifiedSentence = clientSocket.recv(1024)
print ‘From Server:’, modifiedSentence
clientSocket.close()
Application Layer 2-21
Example app: TCP server
Python TCPServer
from socket import *
create TCP welcoming serverPort = 12000
socket serverSocket = socket(AF_INET,SOCK_STREAM)
serverSocket.bind((‘’,serverPort))
server begins listening for
incoming TCP requests serverSocket.listen(1)
print ‘The server is ready to receive’
loop forever
while 1:
server waits on accept()
for incoming requests, new
connectionSocket, addr = serverSocket.accept()
socket created on return
sentence = connectionSocket.recv(1024)
read bytes from socket (but
not address as in UDP) capitalizedSentence = sentence.upper()
close connection to this connectionSocket.send(capitalizedSentence)
client (but not welcoming
socket) connectionSocket.close()
Application Layer 2-22
BITS Pilani
Pilani|Dubai|Goa|Hyderabad