Lecture_08_CN214 Transport Layer TCP
Lecture_08_CN214 Transport Layer TCP
Transport
Layer
Computer Networking: A
Top-Down Approach
8th edition
Jim Kurose, Keith Ross
Pearson, 2020
sending receiving
process process
application data data
transport
sender-side of receiver-side
Complexity of reliable data reliable data
transfer protocol
of reliable data
transfer protocol
transfer protocol will depend
(strongly) on characteristics of transport
network
unreliable channel (lose, unreliable channel
corrupt, reorder data?)
reliable service implementation
sending receiving
process process
application data data
transport
sender-side of receiver-side
reliable data of reliable data
Sender, receiver do not know transfer protocol transfer protocol
the “state” of each other, e.g.,
was a message received? transport
network
unless communicated via a unreliable channel
message
reliable service implementation
unreliable channel
udt_send(): called by rdt rdt_rcv(): called when packet
to transfer packet over Bi-directional communication over arrives on receiver side of
unreliable channel to receiver unreliable channel channel
Transport Layer: 3-8
Reliable data transfer: getting started
incrementally develop sender, receiver sides
reliable data transfer protocol (rdt)
rcv_base
Not received
Transport Layer: 3-16
Go-Back-N in action
sender window (N=4) sender receiver
012345678 send pkt0
012345678 send pkt1
send pkt2 receive pkt0, send ack0
012345678
send pkt3 Xloss receive pkt1, send ack1
012345678
(wait)
receive pkt3, discard,
012345678 rcv ack0, send (re)send ack1
012345678 pkt4
rcv ack1, send receive pkt4, discard,
pkt5 (re)send ack1
ignore duplicate ACK
receive pkt5, discard,
pkt 2 timeout (re)send ack1
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
pkt1
a dilemma!
0123012 0123012
0123012 pkt2 0123012
0123012
example: 0123012 pkt3
X
seq #s: 0, 1, 2, 3 (base 4 counting) 0123012
pkt0 will accept packet
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!
Transport Layer: 3-24
Selective repeat: sender window
(after receipt)
receiver window
(after receipt)
0123012 pkt0
pkt1
a dilemma!
0123012 0123012
0123012 pkt2 0123012
0123012
example: 0123012 pkt3
X
seq #s: 0, 1, 2, 3 (base 4 counting) receiver can’t
0123012
pkt0 will accept packet
see sender side
window size=3 (a) no problem
receiver
with seq number 0
behavior
identical in both
cases!
0something’s
123012 pkt0
0(very)
1 2 3 0 1wrong!
Q: what relationship is needed 2 pkt1
pkt2
0123012
X
between sequence # size and 0123012 0123012
X 0123012
window size to avoid problem timeout
X
in scenario (b)? retransmit pkt0
0123012 pkt0
will accept packet
with seq number 0
(b) oops!
Transport Layer: 3-25
Chapter 3: roadmap
Transport-layer services
Multiplexing and demultiplexing
Connectionless transport: UDP
Principles of reliable data transfer
Connection-oriented transport: TCP
• segment structure
• reliable data transfer
• flow control
• connection management
Principles of congestion control
TCP congestion control
Transport Layer: 3-26
TCP: overview RFCs: 793,1122, 2018, 5681, 7323
options (variable
C, E: congestion notification length)
TCP options
application data sent by
RST, SYN, FIN: connection data application into
management (variable length) TCP socket
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
350
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
SampleRTT
Estimated RTT
Transport Layer: 3-34
(seconds)
TCP round trip time, timeout
timeout interval: EstimatedRTT plus “safety margin”
• large variation in EstimatedRTT: want a larger safety margin
TimeoutInterval = EstimatedRTT + 4*DevRTT
* Check out the online interactive exercises for more examples: h ttp://gaia.cs.umass.edu/kurose_ross/interactive/
Transport Layer: 3-35
Timeout example
(set initially)
36
TCP Sender (simplified)
event: data received from event: timeout
application retransmit segment that
create segment with seq # caused timeout
restart timer
seq # is byte-stream number
of first data byte in segment
event: ACK received
start timer if not already
if ACK acknowledges
running
• think of timer as for oldest
previously unACKed segments
unACKed segment • update what is known to be
ACKed
• expiration interval:
TimeOutInterval • start timer if there are still
unACKed segments
Transport Layer: 3-37
TCP ACK generation [RFC 1122, RFC 2581]
SendBase=92
Seq=92, 8 bytes of data Seq=92, 8 bytes of data Seq=92, 8 bytes of data
timeout
timeout
Seq=100, 20 bytes of data Seq=100, 20 bytes of data
ACK=100
ACK=100
X
ACK=100 X
ACK=120 ACK=120
SendBase=120
cumulative ACK
lost ACK scenario premature timeout covers for earlier
lost ACK
Transport Layer: 3-39
TCP fast retransmit
Host A Host B
TCP fast retransmit
if sender receives 3 additional
ACKs for same data (“triple Se q= 9
2, 8 by
Seq= data tes of
duplicate ACKs”), resend unACKed 100, 2
data
0 b yt e
s of
segment with smallest seq # X
likely that unACKed segment lost,
=100
so don’t wait for timeout ACK
timeout
=100
ACK
CK =100
A
= 10 0
Receipt of three duplicate ACKs ACK