Transport Layer
All material copyright 1996-2012
J.F Kurose and K.W. Ross, All Rights Reserved
George Parisis
School of Engineering and Informatics
University of Sussex
Transport Layer 3-2
Transport Layer
objectives:
v understand principles
behind transport layer
services:
§ multiplexing,
demultiplexing
§ reliable data transfer
§ flow control
§ congestion control
v learn about Internet
transport layer protocols:
§ UDP: connectionless
transport
§ TCP: connection-oriented
reliable transport
§ TCP congestion control
Transport Layer 3-3
Outline
v transport-layer services
v multiplexing and demultiplexing
v connectionless transport: UDP
v principles of reliable data transfer
v connection-oriented transport: TCP
§ segment structure
§ reliable data transfer
§ flow control
§ connection management
v principles of congestion control
v TCP congestion control
Transport Layer 3-4
Transport services and protocols
v provide logical
communication between app
processes running on
different hosts
v transport protocols run in
end systems
§ send side: breaks app
messages into segments,
passes to network layer
§ rcv side: reassembles
segments into messages,
passes to app layer
v more than one transport
protocol available to apps
§ Internet: TCP and UDP
application
transport
network
data link
physical
application
transport
network
data link
physical
Transport Layer 3-5
Transport vs. network layer
v network layer: logical communication between
hosts
v transport layer: logical communication between
processes
§ relies on, enhances, network layer services
Transport Layer 3-6
Internet transport-layer protocols
v reliable, in-order
delivery (TCP)
§ congestion control
§ flow control
§ connection setup
v unreliable, unordered
delivery: UDP
§ no-frills extension of
“best-effort” IP
v services not
available:
§ delay guarantees
§ bandwidth guarantees
application
transport
network
data link
physical
application
transport
network
data link
physical
network
data link
physical
network
data link
physical
network
data link
physical
network
data link
physical
network
data link
physical
network
data link
physical
network
data link
physical
Transport Layer 3-7
Outline
v transport-layer services
v multiplexing and demultiplexing
v connectionless transport: UDP
v principles of reliable data transfer
v connection-oriented transport: TCP
§ segment structure
§ reliable data transfer
§ flow control
§ connection management
v principles of congestion control
v TCP congestion control
Transport Layer 3-8
Multiplexing/demultiplexing
process
socket
use header info to deliver
received segments to correct
socket
demultiplexing at receiver: handle data from multiple
sockets, add transport header
(later used for demultiplexing)
multiplexing at sender:
transport
application
physical
link
network
P2 P1
transport
application
physical
link
network
P4
transport
application
physical
link
network
P3
Transport Layer 3-9
How demultiplexing works
v host receives IP datagrams
§ each datagram has source IP
address, destination IP address
§ each datagram carries one
transport-layer segment
§ each segment has source,
destination port number
v host uses IP addresses &
port numbers to direct
segment to appropriate
socket
source port # dest port #
32 bits
application
data
(payload)
other header fields
TCP/UDP segment format
Transport Layer 3-10
Connectionless demultiplexing
v recall: created socket has
host-local port #:
DatagramSocket mySocket1
= new DatagramSocket(12534);
v when host receives
UDP segment:
§ checks destination port
# in segment
§ directs UDP segment to
socket with that port #
v recall: when creating
datagram to send into
UDP socket, must
specify
§ destination IP address
§ destination port #
IP datagrams with
same dest. port #, but
different source IP
addresses and/or
source port numbers
will be directed to same
socket at dest
Transport Layer 3-11
Connectionless demux: example
DatagramSocket
serverSocket = new
DatagramSocket
(6428);
transport
application
physical
link
network
P3
transport
application
physical
link
network
P1
transport
application
physical
link
network
P4
DatagramSocket
mySocket1 = new
DatagramSocket
(5775);
DatagramSocket
mySocket2 = new
DatagramSocket
(9157);
source port: 9157
dest port: 6428
source port: 6428
dest port: 9157
source port: ?
dest port: ?
source port: ?
dest port: ?
Transport Layer 3-12
Connection-oriented demux
v TCP socket identified
by 4-tuple:
§ source IP address
§ source port number
§ dest IP address
§ dest port number
v demux: receiver uses
all four values to
direct segment to
appropriate socket
v server host may
support many
simultaneous TCP
sockets:
§ each socket identified
by its own 4-tuple
v servers have different
sockets for each
connecting client
Transport Layer 3-13
Connection-oriented demux: example
transport
application
physical
link
network
P3
transport
application
physical
link
P4
transport
application
physical
link
network
P2
source IP,port: A,9157
dest IP, port: B,80
source IP,port: B,80
dest IP,port: A,9157
host: IP
address
A
host: IP
address
C
network
P6 P5
P3
source IP,port: C,5775
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
server:
IP
address
B
Transport Layer 3-14
Connection-oriented demux: example
transport
application
physical
link
network
P3
transport
application
physical
link
transport
application
physical
link
network
P2
source IP,port: A,9157
dest IP, port: B,80
source IP,port: B,80
dest IP,port: A,9157
host: IP
address
A
host: IP
address
C
server:
IP
address
B
network
P3
source IP,port: C,5775
dest IP,port: B,80
source IP,port: C,9157
dest IP,port: B,80
P4
threaded server
Transport Layer 3-15
Outline
v transport-layer services
v multiplexing and demultiplexing
v connectionless transport: UDP
v principles of reliable data transfer
v connection-oriented transport: TCP
§ segment structure
§ reliable data transfer
§ flow control
§ connection management
v principles of congestion control
v TCP congestion control
Transport Layer 3-16
UDP: User Datagram Protocol [RFC 768]
v “no frills,” “bare bones”
Internet transport protocol
v “best effort” service, UDP
segments may be:
§ lost
§ delivered out-of-order to app
v connectionless:
§ no handshaking between
UDP sender, receiver
§ each UDP segment handled
independently of others
v UDP use:
§ streaming multimedia apps
(loss tolerant, rate sensitive)
§ DNS
§ SNMP
v reliable transfer over UDP:
§ add reliability at application
layer
§ application-specific error
recovery!
Transport Layer 3-17
UDP: segment header
source port # dest port #
32 bits
application
data
(payload)
UDP segment format
length checksum
length, in bytes of
UDP segment,
including header
v no connection
establishment (which
can add delay)
v simple: no connection
state at sender, receiver
v small header size
v no congestion control:
UDP can blast away as
fast as desired
why is there a UDP?
Transport Layer 3-18
UDP checksum
sender:
v treat segment contents,
including header fields, as
sequence of 16-bit integers
v checksum: addition (one’s
complement sum) of
segment contents
v sender puts checksum
value into UDP checksum
field
receiver:
v compute checksum of received
segment
v check if computed checksum
equals checksum field value:
§ NO – error detected
§ YES – no error detected.
§ But maybe errors
nonetheless?
Goal: detect “errors” (e.g., flipped bits) in transmitted
segment
Transport Layer 3-19
Internet checksum: example
example: add two 16-bit integers
1 1 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0
1 1 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1
1 1 0 1 1 1 0 1 1 1 0 1 1 1 0 1 1
1 1 0 1 1 1 0 1 1 1 0 1 1 1 1 0 0
1 0 1 0 0 0 1 0 0 0 1 0 0 0 0 1 1
wraparound
sum
checksum
Note: when adding numbers, a carryout from the most
significant bit needs to be added to the result
Transport Layer 3-20
Summary
v principles behind transport layer services:
§ multiplexing, demultiplexing
§ reliable data transfer
v UDP