Professional Documents
Culture Documents
Transport Layer: Computer Networking: A Top Down Approach
Transport Layer: Computer Networking: A Top Down Approach
Transport
Layer
lo
gi
transport protocols run in
ca
l
end systems
en
d -e
send side: breaks app
nd
messages into
tra
ns
segments, passes to
po
rt
network layer
rcv side: reassembles application
transport
segments into network
data link
messages, passes to physical
app layer
more than one transport
protocol available to apps
Internet: TCP and UDP
Transport Layer 3-4
Transport vs. network
layer
network layer: household analogy:
logical
communication 12 kids in Ann’s house
sending letters to 12
between hosts kids in Bill’s house:
transport layer: hosts = houses
lo
data link physical
gi
flow control physical
ca
network
le
data link
connection setup
nd
physical
-en
unreliable, network
d
tra
data link
ns
po
network
UDP
rt
data link
physical
network
no-frills extension of data link
physical
application
transport
“best-effort” IP network
data link network
data link
services not
physical
physical
available:
delay guarantees
bandwidth guarantees
Transport Layer 3-6
Chapter 3 outline
3.1 transport-layer 3.5 connection-oriented
services transport: TCP
3.2 multiplexing segment structure
and reliable data transfer
demultiplexing flow control
connection
3.3 connectionless management
transport: UDP
3.6 principles of
3.4 principles of congestion control
reliable data 3.7 TCP congestion
transfer control
length checksum
why is there a UDP?
no connection
application establishment (which
data can add delay)
(payload) simple: no connection
state at sender, receiver
small header size
no congestion control:
UDP segment format UDP can blast away as
fast as desired
wraparound 1 1 0 1 1 1 0 1 1 1 0 1 1 1 0 1 1
sum 1 1 0 1 1 1 0 1 1 1 0 1 1 1 1 0 0
checksum 1 0 1 0 0 0 1 0 0 0 1 0 0 0 0 1 1
send receive
side side
sender receiver
rdt_rcv(rcvpkt) &&
notcorrupt(rcvpkt)
extract(rcvpkt,data)
deliver_data(data)
udt_send(ACK)
rdt_rcv(rcvpkt) &&
notcorrupt(rcvpkt)
extract(rcvpkt,data)
deliver_data(data)
udt_send(ACK)
rdt_rcv(rcvpkt) &&
notcorrupt(rcvpkt)
extract(rcvpkt,data)
deliver_data(data)
udt_send(ACK)
L 8000 bits
Dtrans = R = = 8 microsecs
109 bits/sec
U L/R .008
sender = = = 0.00027
RTT + L / R 30.008
U 3L / R .0024
sender = = = 0.00081
RTT + L / R 30.008
A: problem in (b)?
window size <= Transport Layer 3-56
½(seq# size)
Chapter 3 outline
3.1 transport-layer 3.5 connection-oriented
services transport: TCP
3.2 multiplexing segment structure
and reliable data transfer
demultiplexing flow control
connection
3.3 connectionless management
transport: UDP
3.6 principles of
3.4 principles of congestion control
reliable data 3.7 TCP congestion
transfer control
window size
acknowledgements: N
seq # of next byte
expected from other
side sender sequence number space
cumulative ACK
sent sent, not- usable not
Q: how receiver handles ACKed yet ACKed but not usable
(“in-flight”) yet sent
out-of-order segments
A: TCP spec doesn’t incoming segment to sender
say, - up to source port # dest port #
sequence number
implementer acknowledgement number
A rwnd
checksum urg pointer
User
types
‘C’
Seq=42, ACK=79, data = ‘C’
host ACKs
receipt of
‘C’, echoes
Seq=79, ACK=43, data = ‘C’ back ‘C’
host ACKs
receipt
of echoed
‘C’ Seq=43, ACK=80
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) Transport Layer 3-63
SampleRTT Estimated RTT
TCP round trip time,
timeout
timeout interval: EstimatedRTT plus “safety margin”
large variation in EstimatedRTT -> larger safety margin
estimate SampleRTT deviation from EstimatedRTT:
DevRTT = (1-)*DevRTT +
*|SampleRTT-EstimatedRTT|
(typically, = 0.25)
SendBase=92
Seq=92, 8 bytes of data Seq=92, 8 bytes of data
timeout
ACK=100
X
ACK=100
ACK=120
SendBase=120
X
ACK=120
cumulative ACK
Transport Layer 3-70
TCP ACK generation [RFC 1122, RFC
2581]
ACK=100
timeout
ACK=100
ACK=100
ACK=100
Seq=100, 20 bytes of data
receiver is delivering
(sender is sending) TCP
code
IP
flow control code
receiver controls sender,
so sender won’t overflow
receiver’s buffer by from sender
transmitting too much,
receiver protocol stack
too fast
network network
choose x
req_conn(x)
ESTAB
acc_conn(x)
ESTAB
choose x choose x
req_conn(x) req_conn(x)
ESTAB ESTAB
retransmit acc_conn(x) retransmit acc_conn(x)
req_conn(x) req_conn(x)
ESTAB ESTAB
data(x+1) accept
req_conn(x)
retransmit data(x+1)
data(x+1)
connection connection
client x completes server x completes server
client
terminates forgets x terminates forgets x
req_conn(x)
ESTAB ESTAB
data(x+1) accept
half open connection! data(x+1)
(no client!)
Transport Layer 3-80
TCP 3-way handshake
Socket connectionSocket =
welcomeSocket.accept();
Socket clientSocket =
SYN(x) newSocket("hostname","port
number");
SYNACK(seq=y,ACKnum=x+1)
create new socket for listen SYN(seq=x)
communication back to client
SYN SYN
rcvd sent
SYNACK(seq=y,ACKnum=x+1)
ESTAB ACK(ACKnum=y+1)
ACK(ACKnum=y+1)
LAST_ACK
FINbit=1, seq=y
TIMED_WAIT can no longer
send data
ACKbit=1; ACKnum=y+1
timed wait
for 2*max CLOSED
segment lifetime
CLOSED
Host B
R/2
delay
out
Host A
out
sender sends only when
router buffers available
in R/2
A no buffer space!
Host B
Transport Layer 3-90
Causes/costs of congestion:
scenario 2
Idealization: known R/2
loss packets can be
lost, dropped at router when sending at R/2,
due to full buffers some packets are
out
retransmissions but
sender only resends if asymptotic goodput
packet known to be lost is still R/2 (why?)
in R/2
Host B
Transport Layer 3-91
Causes/costs of congestion:
scenario 2
Realistic: duplicates R/2
packets can be lost,
dropped at router due when sending at R/2,
some packets are
to full buffers
out
retransmissions
including duplicated
sender times out that are delivered!
prematurely, sending in R/2
two copies, both of
which are delivered
in
timeout
copy out
'in
Host B
Transport Layer 3-92
Causes/costs of congestion:
scenario 2
Realistic: duplicates R/2
packets can be lost,
dropped at router due when sending at R/2,
some packets are
to full buffers
out
retransmissions
including duplicated
sender times out that are delivered!
prematurely, sending in R/2
two copies, both of
which are delivered
“costs” of congestion:
more work (retrans) for given “goodput”
unneeded retransmissions: link carries multiple
copies of pkt
decreasing goodput
Host D
Host C
in’ C/2
time
Transport Layer 3-100
TCP Congestion Control:
details
sender sequence number space
cwnd TCP sending rate:
roughly: send
cwnd bytes, wait
last byte last byte RTT for ACKS,
ACKed sent, not-
yet ACKed
sent then send more
(“in-flight”)
bytes cwnd
sender limits transmission: rate ~
~ bytes/sec
RTT
LastByteSent- < cwnd
LastByteAcked
cwnd is dynamic, function of
perceived network congestion
RTT
initially cwnd = 1 MSS two segm
ents
double cwnd every RTT
done by incrementing
cwnd for every ACK four segm
ents
received
summary: initial rate
is slow but ramps up
exponentially fast time
Implementation:
variable ssthresh
on loss event, ssthresh
is set to 1/2 of cwnd
just before loss event
W/2
TCP connection 1
bottleneck
router
capacity R
TCP connection 2
Connection 1 throughput R
Transport Layer 3-109
Fairness (more)
Fairness and UDP Fairness, parallel TCP
multimedia apps connections
often do not use application can open