Professional Documents
Culture Documents
Transport layer 1
Transport Layer
Chapter goals: Chapter Overview:
understand principles transport layer services
behind transport layer multiplexing/demultiplexing
services: connectionless transport: UDP
multiplexing/demultiplexing
principles of reliable data transfer
reliable data transfer
flow control connection-oriented transport:
congestion control
TCP
reliable transfer
flow control
instantiation and
implementation in the connection management
Internet principles of congestion control
TCP congestion control
Transport layer 2
Transport services and protocols
provide logical communication application
between app’ processes transport
network
running on different hosts data link network
physical data link
network
implemented in end systems, data link
physical
• Constrained by service
model of Network-layer Let’s look at a simple
protocol
analogy to see their
subtle differences
Transport layer 3
Transport Layer vs. Network Layer
An Analogy: Cousins sending letters
Postal-service
Uncle Sam mail carrier Uncle Bill
Uncle Sam & Uncle Bill - responsible Postal service – carries the mails from
for mail collection, distribution, and house to house
communicating with postal service Transport layer 4
Transport Layer vs. Network Layer
Transport layer 5
Transport Layer vs. Network Layer
Their services are constrained by the
possible services that the postal service
provides
Transport layer 7
Logical Communication
sending receiving
Transport layer 10
Multiplexing / demultiplexing
Multiplexing:
gathering data from multiple 32 bits
app processes, enveloping
data with header (later used source port # dest port #
for demultiplexing)
other header fields
multiplexing/demultiplexing:
based on sender, receiver
port numbers, IP addresses
application
source, dest port #s in
data
each segment (message)
recall: well-known port
numbers for specific
applications TCP/UDP segment format
source port:23
dest. port: x
Source IP: C Source IP: C
Dest IP: B Dest IP: B
source port: y source port: x
port use: simple telnet app dest. port: 80 dest. port: 80
Source IP: A
Dest IP: B
source port: x
Web
Web client dest. port: 80 server B
host A
port use: Web server
Transport layer 14
UDP checksum
Sender: Receiver:
treat segment contents as compute checksum of received
sequence of 16-bit integers segment
checksum: addition (1’s check if computed checksum
complement sum) of segment equals checksum field value:
contents NO - error detected
sender puts checksum value YES - no error detected.
into UDP checksum field But maybe errors
nonetheless? More later ….
Transport layer 15
UDP checksum example:
Three packets of 16 bits The 1’s complement of
each ‘r’ is:
0110011001100110 0011010100110101
0101010101010101 at destination, the sum
0000111100001111 of four packets should
adding the three, calling be:
it ‘r’: 1111111111111111
1100101011001010 If the packet is
Send the four packets, damaged:
the original three and 1111101111111111
1’s complement of ‘r’ to (zeros!!)
destination
send receive
side side
Transport layer 20
Reliable data transfer: getting started
We’ll:
incrementally develop sender, receiver sides of reliable
data transfer protocol (rdt)
consider only unidirectional data transfer
• but control info will flow on both directions!
use finite state machines (FSM) to specify sender,
receiver
actions taken on state transition
state: when in
this “state” state state
next state 1 event
2
uniquely actions
determined by
next event
Transport layer 21
Rdt1.0: reliable transfer over a reliable
channel
underlying channel perfectly reliable
no bit errors
no loss of packets
Transport layer 22
Rdt2.0: channel with bit errors
Occurs during transmission, propagation and buffering
Transport layer 27
rdt3.0 sender
Transport layer 33
Performance of rdt3.0
rdt3.0 works, but performance is not acceptable
8kb/pkt
Ttransmit = = 8 microsec
10**9 b/sec
fraction of time 0.008 msec
Utilization = U = sender busy sending = = 0.000267
30.008 msec
Transport layer 34
Pipelined protocols
Pipelining: sender allows multiple, “in-flight”, yet-to-
be-acknowledged packets
range of sequence numbers must be defined
buffering at sender and/or receiver
Sender:
base
Sequence
Number Space
Defined in packet
header, with k-bit
sequence #
nextseqnum
nextseqnum
nextseqnum
nextseqnum
nextseqnum
nextseqnum
nextseqnum
nextseqnum Transport layer 36
Go-Back-N: Sender
Sender: Receiver:
expectedseqnum++
Sample Run
base
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
Initially, base=nextseqnum=8
N=16,
nextseqnum
nextseqnum
nextseqnum
nextseqnum
nextseqnum
nextseqnum
nextseqnum
nextseqnum base+N =8+16=24
Start timer 37
Transport layer
Go-Back-N: Sender
Transport layer 38
Go-Back-N: Extended FSM for the Sender
expectedseqnum++
Receiver:
Respond by ACK-only: always send ACK for
correctly-received pkt with highest in-order seq #
may generate duplicate ACKs
need only remember expectedseqnum
Discards out-of-order pkts
no receiver buffering!
ACK pkt with highest in-order seq #
Transport layer 40
Go-Back-N in action
N=4
Transport layer 41
Selective Repeat
Sender Window:
N consecutive Seq #’s
again limits seq #s of sent, unACKed pkts
Transport layer 42
Selective Repeat: sender, receiver windows
Transport layer 43
Selective Repeat
sender receiver
data from above : pkt n in [rcvbase, rcvbase+N-1]
Send pkt if seq # is within the send ACK(n)
sender’s window; otherwise, it is out-of-order: place in buffer
buffered or returned to app. in-order: deliver (also deliver
process buffered, in-order pkts),
timeout(n): advance window to next not-
resend only a single pkt n, then, yet-received pkt
restart timer pkt n in [rcvbase-N,rcvbase-1]
ACK(n) in [sendbase, sendbase+N-1]: ACK(n)
mark pkt n as received otherwise:
if n smallest unACKed pkt, ignore
advance window base to next
unACKed seq #
Transport layer 44
Selective repeat in action
Transport layer 45
Selective repeat in action