Nothing Special   »   [go: up one dir, main page]

CS F303 (Computer Networks) : Vishal Gupta

Download as pdf or txt
Download as pdf or txt
You are on page 1of 23

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

You might also like