Lecture 17-TCP Reliable Data Transfer
Lecture 17-TCP Reliable Data Transfer
Lecture 17
TCP reliable data transfer
Lecture 17:TCP reliable data transfer
300
(milliseconds)
250
RTT (milliseconds)
200
RTT
sampleRTT
150
EstimatedRTT
100
1 8 15 22 29 36 43 50 57 64 71 78 85 92 99 106
time (seconnds)
DevRTT = (1-)*DevRTT +
*|SampleRTT-EstimatedRTT|
(typically, = 0.25)
if (y > SendBase) {
SendBase = y
/* SendBase–1: last cumulatively ACKed byte */
if (there are currently not-yet-acked segments)
start timer
}
Lecture 17:TCP reliable data transfer
TCP: retransmission
scenarios
Host A Host B Host A Host B
SendBase=92
Seq=92, 8 bytes of data Seq=92, 8 bytes of data
timeo
ACK=100
X
ut
ut
ACK=100
ACK=120
SendBase=120
X
ut
ACK=120
cumulative ACK
Transport Layer 3-9
Lecture 17:TCP reliable data transfer
Modified TCP – Doubling Timeout
Interval
• Whenever the timeout event occurs, it sets the next
timeout interval to twice the previous value,
– rather than deriving it from the last EstimatedRTT and DevRTT
– However, in case of other two events (app data received or ACK
received), it is derived.
• When it is sent/received?
Lecture 17:TCP reliable data transfer
TCP ACK generation [RFC 1122,
RFC 2581]
ACK=100
ACK=100
timeo
ACK=100
ut
ACK=100
Seq=100, 20 bytes of data