Beruflich Dokumente
Kultur Dokumente
0
rdt3.0 works, but performance stinks
8kb/pkt
= 8 microsec
10**9 b/sec
8 microsec
fraction of time
=
= 0.00015
Utilization = U = sender busy sending
30.016 msec
1KB pkt every 30 msec -> 33kB/sec thruput over 1 Gbps link
network protocol limits use of physical resources!
3: Transport Layer
3b-1
Pipelined protocols
Pipelining: sender allows multiple, in-flight, yet-tobe-acknowledged pkts
selective repeat
go-Back-N,
3: Transport Layer
3b-2
Go-Back-N
Sender:
k-bit seq # in pkt header
window of up to N, consecutive unacked pkts allowed
3: Transport Layer
3b-3
3: Transport Layer
3b-4
receiver simple:
ACK-only: always send ACK for correctly-received
pkt with highest in-order seq #
out-of-order pkt:
discard (dont buffer) -> no receiver buffering!
ACK pkt with highest in-order seq #
3: Transport Layer
3b-5
GBN in
action
N=4
3: Transport Layer
3b-6
Selective Repeat
receiver
received pkts
received
sender window
N consecutive seq #s
again limits seq #s of sent, unACKed pkts
3: Transport Layer
3b-7
3: Transport Layer
3b-8
Selective repeat
sender
data from above :
receiver
pkt n in [rcvbase, rcvbase+N-1]
send ACK(n)
timeout(n):
ACK(n) in [sendbase,sendbase+N]:
mark pkt n as received
if n smallest unACKed pkt,
out-of-order: buffer
pkt n in
[rcvbase-N,rcvbase-1]
ACK(n)
otherwise:
ignore
3: Transport Layer
3b-9
Selective repeat:
dilemma
Example:
seq #s: 0, 1, 2, 3
window size=3
receiver sees no
difference in two
scenarios!
incorrectly passes
duplicate data as new
in (a)
Q: what relationship
between seq # size
and window size?
3: Transport Layer 3b-11
TCP: Overview
point-to-point:
one sender, one receiver
reliable, in-order
stream:
byte
no message boundaries
pipelined:
TCP congestion and flow
control set window size
socket
door
application
writes data
application
reads data
TCP
send buffer
TCP
receive buffer
segment
MSS
socket
door
ACK: ACK #
valid
PSH: push data now
(generally not used)
RST, SYN, FIN:
connection estab
(setup, teardown
commands)
Internet
checksum
(as in UDP)
source port #
dest port #
sequence number
acknowledgement number
head not
UA P R S F
len used
checksum
counting
by bytes
of data
(not segments!)
# bytes
rcvr willing
to accept
application
data
(variable length)
Host A
User
types
C
Host B
host ACKs
receipt of
C, echoes
back C
host ACKs
receipt
of echoed
C
time
wait
wait
for
for
event
event
TCP:
reliable
data
transfer
Simplified
TCP
sender
Event
time
Host A
Host B
loss
Host B
Seq=100 timeout
Seq=92 timeout
timeout
Host A
time
premature timeout,
cumulative ACKs
3: Transport Layer 3b-18
acknowledgement
avoids retransmission
of first segment
receiver buffering
receiver: explicitly
informs sender of
(dynamically changing)
amount of free buffer
space
rcvr window
size field in TCP
segment
sender: amount of
transmitted, unACKed
data less than most
recently-received rcvr
window size
3: Transport Layer 3b-20
client
close
close
timed wait
server
closed
3: Transport Layer 3b-24
client
server
closing
closing
timed wait
closed
3: Transport Layer 3b-25
TCP server
lifecycle
TCP client
lifecycle