Transport Layer: Computer Networking: A Top Down Approach
Transport Layer: Computer Networking: A Top Down Approach
Transport Layer
different hosts
lo
transport protocols run in end
gi
ca
systems
enl
d -e
send side: breaks app messages
nd
tra
into segments, passes to
ns
network layer
po
rt
rcv side: reassembles segments application
into messages, passes to app transport
network
layer data link
physical
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 kids in
between hosts Bill’s house:
transport layer: hosts = houses
lo
data link physical
gi
physical
flow control
ca
network
le
data link
nd
connection setup physical
-en
network
d
unreliable, unordered
tra
data link
physical
ns
delivery: UDP
po
network
rt
data link
physical
no-frills extension of network
data link application
“ best-effort” IP physical
network
data link
transport
network
data link
services not available:
physical
physical
delay guarantees
bandwidth guarantees
application
application
application P1 application
P3 P4
transport
transport transport
network
network link network
link physical link
physical physical
application
application P4 P5 P6 application
P3 P2 P3
transport
transport transport
network
network link network
link physical link
physical server: IP physical
address B
length checksum
why is there a UDP?
no connection
application establishment (which can
data 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
characteristics of unreliable channel will determine complexity of reliable data transfer protocol (rdt)
characteristics of unreliable channel will determine complexity of reliable data transfer protocol (rdt)
characteristics of unreliable channel will determine complexity of reliable data transfer protocol (rdt)
send receive
side side
udt_send(packet)
sender receiver
rdt_rcv(rcvpkt) &&
Wait for
isNAK(rcvpkt)
Wait for call rdt_rcv(rcvpkt) &&
corrupt(rcvpkt)
from above ACK or NAK
udt_send(sndpkt)
udt_send(NAK)
sender
rdt_rcv(rcvpkt) &&
notcorrupt(rcvpkt)
extract(rcvpkt,data)
deliver_data(data)
udt_send(ACK)
rdt_rcv(rcvpkt) &&
Wait for
isNAK(rcvpkt)
Wait for call rdt_rcv(rcvpkt) &&
corrupt(rcvpkt)
from above ACK or NAK
udt_send(sndpkt)
udt_send(NAK)
rdt_rcv(rcvpkt) &&
notcorrupt(rcvpkt)
extract(rcvpkt,data)
deliver_data(data)
udt_send(ACK)
rdt_rcv(rcvpkt) &&
Wait for
isNAK(rcvpkt)
Wait for call rdt_rcv(rcvpkt) &&
corrupt(rcvpkt)
from above ACK or NAK
udt_send(sndpkt)
udt_send(NAK)
rdt_rcv(rcvpkt) &&
notcorrupt(rcvpkt)
extract(rcvpkt,data)
deliver_data(data)
udt_send(ACK)
Wait for ACK Wait for
or NAK 1 call 1 from
rdt_rcv(rcvpkt) && above
( corrupt(rcvpkt) ||
isNAK(rcvpkt) )
rdt_send(data)
sndpkt = make_pkt(1, data, checksum)
udt_send(sndpkt) udt_send(sndpkt)
extract(rcvpkt,data)
deliver_data(data)
sndpkt = make_pkt(ACK, chksum)
udt_send(sndpkt)
rdt_rcv(rcvpkt) &&
(corrupt(rcvpkt) ||
has_seq1(rcvpkt))
Wait for
0 from receiver FSM
sndpkt = make_pkt(ACK1,
below
fragment
chksum)
udt_send(sndpkt) rdt_rcv(rcvpkt) && notcorrupt(rcvpkt)
&& has_seq0(rcvpkt)
extract(rcvpkt,data)
deliver_data(data)
sndpkt = make_pkt(ACK0, chksum)
udt_send(sndpkt)
U L/R .008
sender = = = 0.00027
RTT + L / R 30.008
if RTT=30 msec, 1KB pkt every 30 msec: 33kB/sec thruput over 1 Gbps link
network protocol limits use of physical resources!
U L/R .008
sender = = = 0.00027
RTT + L / R 30.008
U 3L / R .0024
sender = = = 0.00081
RTT + L / R 30.008
timeout
X
retransmit pkt0 X
0123012 pkt0
will accept packet
with seq number 0
(b) oops!
Transport Layer 3-53