MCIS 6163
Computer Networks
Lecture 5
Transport Layer
Oct 28th, 2022
Dr. Wen Cheng
Chapter 3: Transport Layer
our goals:
❖ learn about Internet
transport layer protocols:
▪ UDP: connectionless
transport
▪ TCP: connection-oriented
reliable transport
Transport Layer 3-2
Chapter 3 outline
3.1 transport-layer
services
3.3 connectionless
transport: UDP
3.5 connection-oriented
transport: TCP
Transport Layer 3-3
Transport services and protocols
application
transport
❖ provide logical communication network
data link
between app processes physical
running on different hosts
❖ transport protocols run in
end systems
▪ sending side: breaks app
messages into segments,
passes to network layer
▪ receive side: reassembles application
segments into messages, transport
network
passes to app 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: logical household analogy:
communication
between hosts 12 kids in Ann’s house sending
letters to 12 kids in Bill’s
❖ transport layer: house:
logical ❖ app messages = letters in
communication envelopes
❖ processes = kids
between processes ❖ hosts = houses
▪ relies on, enhances, ❖ transport protocol = Ann
network layer and Bill who demux to in-
services house siblings
❖ network-layer protocol =
postal service
Transport Layer 3-5
Internet transport-layer protocols
application
❖ unreliable, unordered transport
network
delivery: UDP data link
physical
network
▪ no-frills extension of network
data link
data link
physical
“best-effort” IP physical
network
data link
❖ reliable, in-order physical
delivery (TCP) network
data link
physical
▪ congestion control network
data link
▪ flow control network
data link
physical
application
▪ connection setup physical
network
data link
transport
network
data link
❖ services not available: physical
physical
▪ delay guarantees
▪ bandwidth guarantees
Transport Layer 3-6
Chapter 3 outline
3.1 transport-layer
services
3.3 connectionless
transport: UDP
3.5 connection-oriented
transport: TCP
Transport Layer 3-7
UDP: User Datagram Protocol [RFC 768]
❖ “no frills,” “bare bones” ❖ UDP use:
Internet transport ▪ streaming multimedia
protocol apps (loss tolerant, rate
❖ “best effort” service, sensitive)
UDP segments may be: ▪ DNS
▪ lost ▪ SNMP
▪ delivered out-of-order ❖ reliable transfer over
to app
UDP:
❖ connectionless:
▪ add reliability at
▪ no handshaking application layer
between UDP sender,
receiver ▪ application-specific error
recovery!
▪ each UDP segment
handled independently
of others
Transport Layer 3-8
UDP: segment header
length, in bytes of
32 bits UDP segment,
source port # dest port # including header
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
UDP segment format ❖ no congestion control:
UDP can blast away as
fast as desired
Transport Layer 3-9
UDP checksum
Goal: detect “errors” (e.g., flipped bits) in transmitted
segment
sender: receiver:
❖ treat segment contents, ❖ compute checksum of
including header fields, received segment
as sequence of 16-bit ❖ check if computed
integers
checksum equals checksum
❖ checksum: addition field value:
(one’s complement
sum) of segment ▪ NO - error detected
contents ▪ YES - no error detected.
❖ sender puts checksum But maybe errors
value into UDP nonetheless? More later
checksum field ….
Transport Layer 3-10
Internet checksum: example
example: add two 16-bit integers
1 1 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0
1 1 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1
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
Note: when adding numbers, a carryout from the most
significant bit needs to be added to the result
Transport Layer 3-11
Chapter 3 outline
3.1 transport-layer
services
3.3 connectionless
transport: UDP
3.5 connection-oriented
transport: TCP
Transport Layer 3-12
TCP: Overview RFCs: 793,1122,1323, 2018, 2581
❖ point-to-point: ❖ full duplex data:
▪ one sender, one receiver ▪ bi-directional data flow
❖ reliable, in-order byte in same connection
steam: ▪ MSS: maximum segment
size
▪ no “message
boundaries” ❖ connection-oriented:
❖ pipelined: ▪ handshaking (exchange
of control msgs) inits
▪ TCP congestion and sender, receiver state
flow control set window before data exchange
size
❖ flow controlled:
▪ sender will not
overwhelm receiver
Transport Layer 3-13
TCP segment structure
32 bits
URG: urgent data counting
(generally not used) source port # dest port #
by bytes
sequence number of data
ACK: ACK #
valid acknowledgement number (not segments!)
head not
PSH: push data now len used
UAP R S F receive window
(generally not used) # bytes
checksum Urg data pointer
rcvr willing
RST, SYN, FIN: to accept
options (variable length)
connection estab
(setup, teardown
commands)
application
Internet data
checksum (variable length)
(as in UDP)
Transport Layer 3-14
TCP seq. numbers, ACKs
sequence numbers: source port # dest port #
sequence number
▪byte stream “number” of acknowledgement number
first byte in segment’s
rwnd
checksum urg pointer
data
acknowledgements:
▪seq # of next byte
source port # dest port #
sequence number
expected from other side acknowledgement number
A rwnd
▪cumulative ACK checksum urg pointer
Q: how receiver handles
out-of-order segments
▪A: TCP spec doesn’t say,
- up to implementor
Transport Layer 3-15
TCP seq. numbers, ACKs
Host A Host B
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
simple telnet scenario
Transport Layer 3-16
TCP reliable data transfer
❖ TCP creates rdt service
on top of IP’s unreliable
service
▪ pipelined segments
▪ cumulative acks let’s initially consider
▪ single retransmission simplified TCP sender:
timer ▪ ignore duplicate acks
❖ retransmissions ▪ ignore flow control,
triggered by: congestion control
▪ timeout events
▪ duplicate acks
Transport Layer 3-17
TCP sender events:
data rcvd from app: timeout:
❖ create segment with ❖ retransmit segment
seq # that caused timeout
❖ seq # is byte-stream ❖ restart timer
number of first data ack rcvd:
byte in segment ❖ if ack acknowledges
❖ start timer if not previously unacked
already running segments
▪ think of timer as for ▪ update what is known
oldest unacked to be ACKed
segment
▪ start timer if there are
▪ expiration interval: still unacked segments
TimeOutInterval
Transport Layer 3-18
TCP sender (simplified)
data received from application above
create segment, seq. #: NextSeqNum
pass segment to IP (i.e., “send”)
NextSeqNum = NextSeqNum + length(data)
if (timer currently not running)
L start timer
NextSeqNum = InitialSeqNum wait
SendBase = InitialSeqNum for
event timeout
retransmit not-yet-acked segment
with smallest seq. #
start timer
ACK received, with ACK field value y
if (y > SendBase) {
SendBase = y
/* SendBase–1: last cumulatively ACKed byte */
if (there are currently not-yet-acked segments)
start timer
else stop timer
} Transport Layer 3-19
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
Seq=100, 20 bytes of data
timeout
timeout
ACK=100
X
ACK=100
ACK=120
Seq=92, 8 bytes of data Seq=92, 8
SendBase=100
timeout
bytes of data
SendBase=120
ACK=100
ACK=120
SendBase=120
lost ACK scenario premature timeout
Transport Layer 3-20
TCP: retransmission scenarios
Host A Host B
Seq=92, 8 bytes of data
Seq=100, 20 bytes of data
timeout
ACK=100
X
ACK=120
Seq=120, 15 bytes of data
cumulative ACK
Transport Layer 3-21
TCP ACK generation [RFC 1122, RFC 2581]
event at receiver TCP receiver action
arrival of in-order segment with delayed ACK. Wait up to 500ms
expected seq #. All data up to for next segment. If no next segment,
expected seq # already ACKed send ACK
arrival of in-order segment with immediately send single cumulative
expected seq #. One other ACK, ACKing both in-order segments
segment has ACK pending
arrival of out-of-order segment immediately send duplicate ACK,
higher-than-expect seq. # . indicating seq. # of next expected byte
Gap detected
arrival of segment that immediate send ACK, provided that
partially or completely fills gap segment starts at lower end of gap
Transport Layer 3-22
TCP fast retransmit
❖ time-out period often
relatively long: TCP fast retransmit
▪ long delay before if sender receives 3
resending lost packet ACKs for same data
❖ detect lost segments (“triple
(“triple duplicate
duplicate ACKs”),
ACKs”),
via duplicate ACKs. resend unacked
▪ sender often sends segment with smallest
many segments back- seq #
to-back
▪ likely that unacked
▪ if segment is lost, there segment lost, so don’t
will likely be many wait for timeout
duplicate ACKs.
Transport Layer 3-23
TCP fast retransmit
Host A Host B
Seq=92, 8 bytes of data
Seq=100, 20 bytes of data
X
ACK=100
timeout
ACK=100
ACK=100
ACK=100
Seq=100, 20 bytes of data
fast retransmit after sender
receipt of triple duplicate ACK
Transport Layer 3-24