Chapter 3 New
Chapter 3 New
household analogy:
12 kids in Ann’s house sending
letters to 12 kids in Bill’s house:
▪ hosts = houses
▪ processes = kids
▪ app messages = letters in envelopes
household analogy:
▪transport layer:
communication between 12 kids in Ann’s house sending
processes letters to 12 kids in Bill’s house:
▪ hosts = houses
• relies on, enhances, network
▪ processes = kids
layer services
▪ app messages = letters in envelopes
▪network layer: ▪ transport protocol = Ann and Bill
who demux to in-house siblings
communication between
hosts ▪ network-layer protocol = postal
service
Sender:
application ▪ is passed an application- application
app. msg
layer message
transport ▪ determines segment TThhtransport
app. msg
header fields values
network (IP) ▪ creates segment network (IP)
physical physical
Receiver:
application ▪ receives segment from IP application
▪ checks header values
transport
app. msg ▪ extracts application-layer transport
message
network (IP) network (IP)
▪ demultiplexes message up
link to application via socket link
physical physical
Th app. msg
• congestion control
• flow control
• connection setup
local or
▪ UDP: User Datagram Protocol regional ISP
• Transport-layer services
• Multiplexing and demultiplexing
• Connectionless transport: UDP
• Connection-oriented transport: TCP
• TCP congestion control
application
application
transport
multiplexing
application
? transport
de-multiplexing
B D
source port: 6428 source port: ?
dest port: 9157 dest port: ?
A C
source port: 9157 source port: ?
dest port: 6428 dest port: ?
IP/UDP datagrams with same dest. port #, but different source IP addresses
and/or source port numbers will be directed to same socket at receiving host
ENSF 462 – Networked Systems
Connection-oriented demultiplexing
• Transport-layer services
• Multiplexing and demultiplexing
• Connectionless transport: UDP
• Connection-oriented transport: TCP
• TCP congestion control
▪ UDP use:
▪ streaming multimedia apps (loss tolerant, rate sensitive)
▪ DNS
▪ HTTP/3
▪ if reliable transfer needed over UDP (e.g., HTTP/3):
▪ add needed reliability at application layer
▪ add congestion control at application layer
• It is possible for two UDP segments to be sent from the same socket
with source port 5723 at a server to two different clients. True or False?
application application
transport transport
(UDP) (UDP)
link link
physical physical
physical physical
32 bits
source port # dest port #
length checksum
data to/from
UDP segment format application layer
Transmitted: 5 6 11
Received: 4 6 11
receiver-computed sender-computed
checksum
= checksum (as received)
sum 1 0 1 1 1 0 1 1 1 0 1 1 1 1 0 0
checksum 0 1 0 0 0 1 0 0 0 1 0 0 0 0 1 1
Note: when adding numbers, a carryout from the most significant bit needs to be
added to the result
• Transport-layer services
• Multiplexing and demultiplexing
• Connectionless transport: UDP
• Connection-oriented transport: TCP
• segment structure
• reliable data transfer
• flow control
• connection management
• TCP congestion control
window size
Acknowledgements: N
User types‘C’
Seq=42, ACK=79, data = ‘C’
host ACKs receipt
of‘C’, echoes back ‘C’
Seq=79, ACK=43, data = ‘C’
host ACKs receipt
of echoed ‘C’
Seq=43, ACK=80
RTT (milliseconds)
300
250
RTT (milliseconds)
200
sampleRTT
150
EstimatedRTT
100
1 8 15 22 29 36 43 50 57 64 71 78 85 92 99 106
time (seconnds)
time (seconds)
ENSF 462 – Networked Systems SampleRTT Estimated RTT Transport
Layer: 3-41
TCP round trip time, timeout
▪ timeout interval: EstimatedRTT plus “safety margin”
• large variation in EstimatedRTT: want a larger safety margin
TimeoutInterval = EstimatedRTT + 4*DevRTT
SendBase=92
Seq=92, 8 bytes of data Seq=92, 8 bytes of data
timeout
ACK=100
X
ACK=100
ACK=120
SendBase=120
timeout
Receipt of three duplicate ACKs
indicates 3 segments received Seq=100, 20 bytes of data
• Transport-layer services
• Multiplexing and demultiplexing
• Connectionless transport: UDP
• Connection-oriented transport: TCP
• segment structure
• reliable data transfer
• flow control
• connection management
• TCP congestion control
TCP
code
Network layer
delivering IP datagram
payload into TCP
IP
socket buffers
code
from sender
TCP
code
Network layer
receive window
flow control: # bytes delivering IP datagram
receiver willing to accept payload into TCP
IP
socket buffers
code
from sender
TCP
code
flow control Network layer
receiver controls sender, so delivering IP datagram
payload into TCP
sender won’t overflow socket buffers IP
code
receiver’s buffer by
transmitting too much, too fast
from sender
• Consider the TCP scenario below. Why is it that the receiver sends an ACK
that is one larger than the sequence number in the received datagram?
a. Because TCP sequence numbers
always increase by 1, with every new
segment, and the TCP receiver always
send the sequence number of the
next expected segment
b. Because the send-to-receiver segment
carries only one byte of data, and
after that segment is received, the
next expected byte of data is just the
next byte in the data stream.
• Consider the TCP Telnet scenario below (from Fig. 3.36 in text). What
timer-related action does the sender take on the receipt of ACK 120?
a. Leaves any currently-running timers running.
b. Cancels any running timers.
c. Restarts a timer for the segment with
sequence number 92.
• With TCP‘s flow control mechanism, where the receiver tells the
sender how much free buffer space it has, and the sender always
limits the amount of unACKed, in-flight data to less than this amount,
it is not possible for the sender to send more data than the receiver
has room to buffer. True or False?
application application
network network
choose x
req_conn(x)
ESTAB
acc_conn(x)
ESTAB
data(x+1) accept
data(x+1)
ACK(x+1)
No problem!
choose x
req_conn(x)
ESTAB
retransmit acc_conn(x)
req_conn(x)
ESTAB
req_conn(x)
connection
client x completes server
terminates forgets x
ESTAB
acc_conn(x)
choose x
req_conn(x)
ESTAB
retransmit acc_conn(x)
req_conn(x)
ESTAB
data(x+1) accept
data(x+1)
retransmit
data(x+1)
connection
x completes server
client
terminates forgets x
req_conn(x)
ESTAB
data(x+1) accept
data(x+1)
Problem: dup data
ENSF 462 – Networked Systems accepted!
TCP 3-way handshake
32 bits Server state
Client state serverSocket = socket(AF_INET,SOCK_STREAM)
clientSocket = socket(AF_INET, SOCK_STREAM) serverSocket.bind((‘’,serverPort))
serverSocket.listen(1)
LISTEN
clientSocket.connect((serverName,serverPort)) LISTEN
choose init seq num, x
send TCP SYN msg
connectionSocket, addr = serverSocket.accept()
SYNSENT R S F Seq=x
SYNbit=1,
choose init seq num, y
send TCP SYNACK
msg, acking SYN SYN RCVD
SYNbit=1, Seq=y
ACKbit=1; ACKnum=x+1
received SYNACK(x)
ESTAB indicates server is live;
send ACK for SYNACK;
this segment may contain ACKbit=1, ACKnum=y+1
client-to-server data
received ACK(y)
indicates client is live
RST, SYN, FIN: ESTAB
connection management
ENSF 462 – Networked Systems Transport
Layer: 3-62
Closing a TCP connection
▪ client, server each can close their
side of connection
• send TCP segment with FIN bit = 1
▪ respond to received FIN with ACK
• on receiving FIN, ACK can be
combined with own FIN
▪ simultaneous FIN exchanges can
be handled
• Transport-layer services
• Multiplexing and demultiplexing
• Connectionless transport: UDP
• Connection-oriented transport: TCP
• TCP congestion control
Why AIMD?
▪ AIMD – a distributed, asynchronous algorithm – has been shown to:
• optimize congested flow rates network wide!
• have desirable stability properties
RTT
• initially cwnd = 1 MSS
• Increase cwnd by 1 MSS for
every ACK received
• double cwnd every RTT
▪ summary: initial rate is
slow, but ramps up
exponentially fast time
RTT
Discover available bandwidth fast - desirable to
quickly ramp up to respectable rate
- When cwnd > threshold, move to
congestion avoidance phase to slow down
the sending rate
time
2. Congestion avoidance
Implementation:
▪ variable ssthresh
▪ tracks the transition point between
slow start and congestion avoidance
▪ on loss event, ssthresh is set to
1/2 of cwnd just before loss event
source destination
application application
TCP TCP
network network
link link
physical physical
packet queue almost
never empty, sometimes
overflows packet (loss)
ECN=10 ECN=11
IP datagram
ENSF 462 – Networked Systems Transport
Layer: 3-80
TCP fairness
Fairness goal: if K TCP sessions share same bottleneck link of
bandwidth R, each should have average rate of R/K
TCP connection 1
bottleneck
TCP connection 2 router
capacity R
Connection 1 throughput R
ENSF 462 – Networked Systems Transport
Layer: 3-82
Fairness: must all network apps be “fair”?
Fairness and UDP Fairness, parallel TCP
▪ multimedia apps often do not connections
use TCP ▪ application can open multiple
• do not want rate throttled by
congestion control parallel connections between two
hosts
▪ instead use UDP:
• send audio/video at constant rate, ▪ web browsers do this , e.g., link of
tolerate packet loss rate R with 9 existing connections:
▪ there is no “Internet police” • new app asks for 1 TCP, gets rate R/10
policing use of congestion • new app asks for 11 TCPs, gets R/2
control
rcv_base
Not received
ENSF 462 – Networked Systems Transport
Layer: 3-85
Go-Back-N in action
sender window (N=4) sender receiver
012345678 send pkt0
012345678 send pkt1
012345678 send pkt2 receive pkt0, send ack0
012345678 send pkt3 Xloss receive pkt1, send ack1
(wait)
receive pkt3, discard,
012345678 rcv ack0, send pkt4 (re)send ack1
012345678 rcv ack1, send pkt5 receive pkt4, discard,
(re)send ack1
ignore duplicate ACK receive pkt5, discard,
(re)send ack1
pkt 2 timeout
012345678 send pkt2
012345678 send pkt3
012345678 send pkt4 rcv pkt2, deliver, send ack2
012345678 send pkt5 rcv pkt3, deliver, send ack3
rcv pkt4, deliver, send ack4
rcv pkt5, deliver, send ack5
0123012 pkt0
example: 0123012 pkt1 0123012
0123012 pkt2 0123012
▪ seq #s: 0, 1, 2, 3 (base 4 counting) 0123012
pkt3
▪ window size=3
0123012
X
0123012
pkt0 will accept packet
with seq number 0
(a) no problem
0123012 pkt0
0123012 pkt1 0123012
0123012 pkt2 X 0123012
X 0123012
X
timeout
retransmit pkt0
0123012 pkt0
will accept packet
with seq number 0
(b) oops!
ENSF 462 – Networked Systems Transport
Layer: 3-91
Selective repeat: a dilemma!
sender window receiver window
(after receipt) (after receipt)
0123012 pkt0
example: 0123012 pkt1 0123012
pkt2 0123012
▪ seq #s: 0, 1, 2, 3 (base 4 counting) ▪0receiver
123012
can’t
0123012
0see
1 2 3sender side
pkt3
▪ window size=3
012
▪0receiver X
123012
behavior pkt0 will accept packet
with seq number 0
identical in both
(a) no problem
cases!
▪0something’s
123012 pkt0
Q: what relationship is needed 0(very)
1 2 3 0 1wrong!
2 pkt1 0123012
pkt2 X
between sequence # size and 0123012
X
0123012
0123012
window size to avoid problem X
timeout
in scenario (b)? retransmit pkt0
0123012 pkt0
will accept packet
with seq number 0
(b) oops!
ENSF 462 – Networked Systems Transport
Layer: 3-92
Knowledge Check