Advanced Computer
Networking
(CS 723)
Chapter 3: Transport Layer
Transport Layer
3-2
Transport Layer
3-3
Transport Layer
accepts data from above, splits it up into
3-4
logical communication
between app processes
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,
passes to app layer
more than one transport
protocol available to apps
Internet: TCP and UDP
provide
application
transport
network
data link
physical
application
transport
network
data link
physical
Transport Layer
3-5
Transport Layer
3-6
Transport Layer
3-7
network
data link
physical
le
ca
nd
-e
nd
network
data link
physicalnetwork
a
tr
rt
po
ns
UDP (Connectionless)
Unreliable
unordered delivery
No delay guarantees
No bandwidth guarantees
application
transport
network
data link
physical
gi
lo
network
data link
physical
data link
physical
network
data link
physical
application
transport
network
data link
physical
Transport Layer
3-8
3.2 Multiplexing/demultiplexing
Multiplexing at send host:
gathering data from multiple
sockets, enveloping data with
header (later used for
demultiplexing)
application
P3
transport
network
P1
P1
application
transport
network
link
P2
P4
application
transport
network
link
link
physical
host 1
= socket
physical
host 2
= process
physical
host 3
Transport Layer
3-9
32 bits
source port #
dest port #
application
data
(message)
TCP/UDP segment format
Transport Layer
3-10
Connectionless demultiplexing
Create sockets with port
numbers:
two-tuple:
Dest IP address,
Dest port number
segment:
IP datagrams with
different source IP
addresses and/or source
port numbers directed
to same socket
Transport Layer
3-11
SP: 6428
DP: 9157
client
IP: A
P1
P1
P3
SP: 9157
DP: 6428
SP: 6428
DP: 5775
server
IP: C
SP: 5775
DP: 6428
Client
IP:B
3-12
Connection-oriented demux
TCP socket identified
by 4-tuple:
source IP address
source port number
dest IP address
dest port number
values to direct
segment to appropriate
socket
Transport Layer
3-13
P4
P5
P2
P6
P1P3
SP: 5775
DP: 80
S-IP: B
D-IP:C
client
IP: A
SP: 9157
DP: 80
S-IP: A
D-IP:C
server
IP: C
SP: 9157
DP: 80
S-IP: B
D-IP:C
Client
IP:B
Transport Layer
3-14
[RFC 768]
Transport Layer
3-15
UDP: more
often used for streaming
multimedia apps
loss tolerant
rate sensitive
Length, in
bytes of UDP
segment,
including
header
UDP:
32 bits
source port #
dest port #
length
checksum
Application
data
(message)
UDP segment format
Transport Layer
3-16
UDP checksum
Goal: detect errors (e.g., flipped bits) in transmitted
segment
Sender:
treat segment contents as sequence of 16-bit integers
checksum: addition (1s complement sum) of segment contents
sender puts checksum value into UDP checksum field
Receiver:
compute checksum of received segment
check if computed checksum equals checksum field value:
NO - error detected
YES - no error detected.
Transport Layer
3-17
Checksum Example
Note
3-18
TCP: Overview
point-to-point:
one sender, one receiver
reliable, in-order
steam:
byte
no message boundaries
pipelined:
TCP congestion and flow
control set window size
socket
door
a p p lic a t io n
re a d s d a ta
TC P
s e n d b u ffe r
TC P
r e c e iv e b u f f e r
segm ent
Transport Layer
3-19
source port #
dest port #
sequence number
acknowledgement number
head not
UA P R S F
len used
checksum
Receive window
Urg data pnter
counting
by bytes
of data
(not segments!)
# bytes
rcvr willing
to accept
application
data
(variable length)
Transport Layer
3-20
Host B
Host A
User
types
C
Seq=4
2, AC
K
=79, d
ata =
C
= C
a
t
a
d
=43,
K
C
A
79,
Seq=
host ACKs
receipt
of echoed
C
Seq=4
3, ACK
host ACKs
receipt of
C, echoes
back C
=80
time
3-21
If too short:
premature timeout
unnecessary
retransmissions
If too long: slow
reaction to segment
loss
Transport Layer
3-22
Transport Layer
3-23
DevRTT = (1-)*DevRTT +
*|SampleRTT-EstimatedRTT|
(typically, = 0.25)
Then set timeout interval:
TimeoutInterval = EstimatedRTT + 4*DevRTT
Transport Layer
3-24
Retransmissions are
triggered by:
timeout events
duplicate acks
Initially consider
Transport Layer
3-25
timeout:
retransmit segment
that caused timeout
restart timer
Ack rcvd:
If acknowledges
previously unacked
segments
Transport Layer
3-26
NextSeqNum = InitialSeqNum
SendBase = InitialSeqNum
loop (forever) {
switch(event)
event: data received from application above
create TCP segment with sequence number NextSeqNum
if (timer currently not running)
start timer
pass segment to IP
NextSeqNum = NextSeqNum + length(data)
TCP
sender
(simplified)
Transport Layer
3-27
connection has a
receive buffer:
flow control
speed-matching
3-28
guarantees receive
buffer doesnt overflow
= RcvWindow
= RcvBuffer-[LastByteRcvd LastByteRead]
Transport Layer
3-29
Transport Layer
3-30
client
close
close
FIN
timed wait
FIN
ACK
server
A CK
closed
Transport Layer
3-31
client
closing
closing
FIN
timed wait
Connection closed.
FIN
ACK
server
A CK
closed
closed
Transport Layer
3-32
Transport Layer
3-33
network
congestion inferred from
end-system observed loss,
delay
approach taken by TCP
Network-assisted
congestion control:
routers provide feedback
to end systems
single bit indicating
congestion (SNA,
DECbit, TCP/IP ECN,
ATM)
explicit rate sender
should send at
Transport Layer
3-34
underloaded:
sender should use
available bandwidth
if senders path
congested:
sender throttled to
minimum guaranteed
rate
RM (resource management)
cells:
sent by sender, interspersed
Transport Layer
3-35
additive increase,
multiplicative decrease
Transport Layer
3-36
CongWin
Bytes/sec
RTT
of perceived network
congestion
Transport Layer
3-37
Transport Layer
3-38
RTT
Host A
Host B
one segm
en
two segm
ents
four segm
ents
time
Transport Layer
3-39
Philosophy:
network capable of
delivering some segments
timeout indicates a
more alarming
congestion scenario
Transport Layer
3-40
3-41
Event
Commentary
Slow Start
(SS)
ACK receipt
for previously
unacked
data
Resulting in a doubling of
CongWin every RTT
Congestion
Avoidance
(CA)
ACK receipt
for previously
unacked
data
CongWin = CongWin+MSS *
(MSS/CongWin)
SS or CA
Loss event
detected by
triple
duplicate
ACK
Threshold = CongWin/2,
CongWin = Threshold,
Set state to Congestion
Avoidance
Fast recovery,
implementing multiplicative
decrease. CongWin will not
drop below 1 MSS.
SS or CA
Timeout
Threshold = CongWin/2,
CongWin = 1 MSS,
Set state to Slow Start
SS or CA
Duplicate
ACK
Transport Layer
3-42
Chapter 3: Summary
principles behind transport
layer services:
multiplexing, demultiplexing
reliable data transfer
flow control
congestion control
instantiation and
implementation in the Internet
UDP
TCP
Next:
leaving the network
edge (application,
transport layers)
into the network
core
Transport Layer
3-43