Internet Transport Layer Protocols Explained
Internet Transport Layer Protocols Explained
Network and
Transport Layer
Lecture 3:
2.1 Internet transport protocol
UDP
TCP Computer Networking: A
SCTP Top-Down Approach
2.2 Congestion control 8th edition
Jim Kurose, Keith Ross
Pearson, 2020
Chapter 2: Network and
Transport layer
2.1 Internet transport protocol
UDP
TCP
SCTP
2.2 Congestion control
2.3 Routing Algorithms
2.4 IPv6
Our goal:
log
ica
transport protocols actions in end
le
n d-
systems:
e nd
local or
tra
• sender: breaks application messages regional ISP
nsp
into segments, passes to network layer
ort
home network content
• receiver: reassembles segments into provider
network
messages, passes to application layer application
transport
datacenter
network
network
two transport protocols available to data link
physical
household analogy:
transport layer:
communication between 10 kids in A’s house sending
letters to 10 kids in B’s house:
processes hosts = houses
• relies on, enhances, network
processes = kids
layer services
app messages = letters in
network layer: envelopes
transport protocol = A and B who
communication between
demux to in-house siblings
hosts network-layer protocol = postal
service
Transport Layer: 3-8
Transport Layer Actions
Sender:
application
is passed an application- app. msg
application
layer message
determines segment TThtransport
app. msg
transport h
Receiver:
application receives segment from IP application
checks header values
app. msg
transport extracts application-layer transport
message
network (IP) demultiplexes message up network
to application via socket (IP)
link
link
physical physical
Th app. msg
log
• congestion control
ica
le
• flow control
n d-
e nd
• connection setup local or
tra
regional ISP
UDP: User Datagram Protocol
nsp
ort
home network
• unreliable, unordered delivery content
provider
network
• no-frills extension of “best-effort” IP application
transport
datacenter
network
network
services not available: data link
physical
transport
Hn Ht HTTP msg
client
application application
HTTP msg
HTTP msg Ht HTTP msg
transport
application application
transport transport
(UDP) (UDP)
physical physical
data to/from
UDP segment format application layer
Transmitted: 5 6 11
Received: 4 6 11
receiver-computed
checksum
= sender-computed
checksum (as received)
sum 1 0 1 1 1 0 1 1 1 0 1 1 1 1 0 0
checksum 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
* Check out the online interactive exercises for more examples: h ttp://[Link]/kurose_ross/interactive/
Transport Layer: 3-30
Internet checksum: weak protection!
• flow control
• connection management
options (variable
C, E: congestion notification length)
TCP options
application data sent by
RST, SYN, FIN: connection data application into
management (variable length) TCP socket
window size
Acknowledgements: N
User types‘C’
Seq=42, ACK=79, data = ‘C’
host ACKs receipt of‘C’,
echoes back ‘C’
Seq=79, ACK=43, data = ‘C’
host ACKs receipt
of echoed ‘C’
Seq=43, ACK=80
350
RTT (milliseconds)
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 Transport Layer: 3-43
SampleRTT Estimated RTT
TCP round trip time, timeout
timeout interval: EstimatedRTT plus “safety margin”
• large variation in EstimatedRTT: want a larger safety margin
TimeoutInterval = EstimatedRTT + 4*DevRTT
* Check out the online interactive exercises for more examples: h ttp://[Link]/kurose_ross/interactive/
Transport Layer: 3-44
TCP Sender (simplified)
event: data received from event: timeout
application retransmit segment that
create segment with seq # caused timeout
restart timer
seq # is byte-stream number
of first data byte in segment
event: ACK received
start timer if not already
if ACK acknowledges
running
• think of timer as for oldest
previously unACKed segments
unACKed segment • update what is known to be
ACKed
• expiration interval:
TimeOutInterval • start timer if there are still
unACKed segments
Transport Layer: 3-45
TCP Receiver: ACK generation [RFC 5681]
SendBase=92
Seq=92, 8 bytes of data Seq=92, 8 bytes of data
timeout
timeout
Seq=100, 20 bytes of data
ACK=100
X
ACK=100
ACK=120
SendBase=120
cumulative ACK
covers for earlier
lost ACK
Transport Layer: 3-48
TCP fast retransmit
Host A Host B
TCP fast retransmit
if sender receives 3 additional
ACKs for same data (“triple Se q= 9
2, 8 by
Seq= data tes of
duplicate ACKs”), resend unACKed 100, 2
data
0 b yt e
s of
segment with smallest seq # X
likely that unACKed segment lost,
=100
so don’t wait for timeout ACK
timeout
=100
ACK
CK =100
A
= 10 0
Receipt of three duplicate ACKs ACK
TCP
code
Network layer
delivering IP datagram
payload into TCP
IP
socket buffers code
from sender
TCP
code
Network layer
delivering IP datagram
payload into TCP
IP
socket buffers code
from sender
TCP
code
receive window
flow control: # bytes
receiver willing to accept IP
code
from sender
TCP
flow control code
application application
ESTAB
data(x+1) accept
data(x+1
ACK(x+1)
)
connection
x completes
No problem!
choose x
req_conn(x)
ESTAB
retransmit acc_conn(x)
req_conn(
x)
ESTAB
req_conn(x)
connection
client x completes server
terminat forgets x
es
ESTAB
acc_conn(x)
Problem: half open
connection! (no client)
Transport Layer: 3-59
2-way handshake scenarios
choose x
req_conn(x)
ESTAB
retransmit acc_conn(x)
req_conn(
x)
ESTAB
data(x+1) accept
data(x+1
retransmit )
data(x+1)
connection
x completes server
client
terminat forgets x
es req_conn(x)
ESTAB
data(x+1) accept
data(x+1
)
Problem: dup data
accepted!
TCP 3-way handshake
Server state
serverSocket = socket(AF_INET,SOCK_STREAM)
Client state [Link]((‘’,serverPort))
[Link](1)
clientSocket = socket(AF_INET, SOCK_STREAM) connectionSocket, addr = [Link]()
LISTEN
[Link]((serverName,serverPort)) LISTEN
choose init seq num, x
send TCP SYN msg
SYNSENT SYNbit=1, Seq=x
choose init seq num, y
send TCP SYNACK
msg, acking SYN SYN RCVD
SYNbit=1, Seq=y
ACKbit=1; ACKnum=x+1
received SYNACK(x)
ESTAB indicates server is live;
send ACK for SYNACK;
this segment may contain ACKbit=1, ACKnum=y+1
client-to-server data
received ACK(y)
indicates client is live
ESTAB
81
Source based
approach
Hop-by-Hop choke
packets
• Have choke packet
take effect at every
hop
• Problem: more
buffers needed in
routers
82
Load shedding
Throw away packets that cannot be handled!!
Packet selection?
Random early detection
• Discard packets before all buffer space is exhausted
• Routers maintain running average of queue lengths
• Select at random a packet
• Inform source?
• Send choke packet? more load!!
• No reporting
• When does it work?
• Source slows down when packets are lost
Congestion: jitter control
Important for audio and video applications?
• not delay
• variance of delay
Congestion: jitter control
Jitter = variation in packet delay
Compute feasible mean value for delay
• compute expected transit time for each hop
• router checks to see if packet is
• behind
• ahead schedule
• behind: forward packet asap
• ahead: hold back packet to get it on schedule again
Buffering? Depends on characteristics:
• Video on demand: ok
• Videoconferencing: nok
Lecture 4
Routing Algorithms/protocols