3 TransportLayer CN 2024 5
3 TransportLayer CN 2024 5
(CCS-503)
Transport Layer
Assoc. Prof. Dr. Mennan Selimi
Max van der Stoel Institute, South East European University,
https://mvdsi.seeu.edu.mk/mselimi/
South East European University
30th of October 2024
Syllabus (2024/25 - 15 weeks)
Week 1 Week 2 Week 3 Week 4 Week 5
25/09 02/10 09/10 16/10 23/10
Administrative
Network Core Web,HTTP, FTP Web,HTTP, FTP
details Public Holiday
Protocol Layers SMTP, DNS SMTP, DNS
What is Internet? NO CLASSES
Service Model P2P P2P
Network Edge
Midterm 1 consultations
Friday (01/11) from 09.30-10.30 and 10.30-11.30 (304.08)
Transport Layer COMPSCI 453 Computer Networks
Professor Jim Kurose
College of Information and Computer Sciences
▪ Introduction: transport-layer services University of Massachusetts
l og
running on different hosts
ica
l en
▪ transport protocols actions in end
d -e
systems:
nd
local or
tra
• sender: breaks application messages into regional ISP
n sp
segments, passes to network layer
ort
home network content
• receiver: reassembles segments into provider
network datacenter
messages, passes to application layer applicationnetwork
transport
network
Sender:
application ▪ is passed an application- application
app. msg
layer message
transport ▪ determines segment TThh app. msg
transport
header fields values
network (IP)
▪ creates segment network (IP)
link
▪ passes segment to IP link
physical physical
Transport Layer Actions
Receiver:
application ▪ receives segment from IP application
▪ checks header values
transport
app. msg transport
▪ extracts application-layer
message
network (IP) network (IP)
▪ demultiplexes message up
link to application via socket link
physical physical
Th app. msg
Two principal Internet transport protocols
application
transport
l og
• congestion control
ica
l en
• flow control
d -e
• connection setup
nd
local or
tra
▪ UDP: User Datagram Protocol regional ISP
n sp
ort
• unreliable, unordered delivery home network content
provider
• no-frills extension of “best-effort” IP network datacenter
applicationnetwork
transport
transport
multiplexing
?
de-multiplexing
application
? transport
de-multiplexing
HTTP server
client
application application
transport
transport
transport
application
transport
Ht HTTP msg
Hnnetwork
Ht HTTP msg
transport transport
network link network
link physical link
physical physical
HTTP server
client
application application
transport
Hn Ht HTTP msg
HTTP server
client1 client2
application P-client1 P-client2 application
transport
Transmitted: 5 6 11
Received: 4 6 11
receiver-computed
checksum
= sender-computed
checksum (as received)
UDP checksum
Goal: detect errors (i.e., flipped bits) in transmitted segment
sender: receiver:
▪ treat contents of UDP segment ▪ compute checksum of received
(including UDP header fields and IP
addresses) as sequence of 16-bit segment
integers ▪ check if computed checksum equals
▪ checksum: addition (one’s checksum field value:
complement sum) of segment
• Not equal - error detected
content
• Equal - no error detected. But maybe
▪ checksum value put into UDP errors nonetheless? More later ….
checksum field
Internet checksum: an example
example: add two 16-bit integers
1 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0
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 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: http://gaia.cs.umass.edu/kurose_ross/interactive/
Summary: UDP
▪ “no frills” protocol:
• segments may be lost, delivered out of order
• best effort service: “send and hope for the best”
▪ UDP has its plusses:
• no setup/handshaking needed (no RTT incurred)
• can function when network service is compromised
• helps with reliability (checksum)
▪ build additional functionality on top of UDP in application
layer (e.g., HTTP/3)
Transport Layer COMPSCI 453 Computer Networks
Professor Jim Kurose
College of Information and Computer Sciences
▪ Transport-layer services University of Massachusetts
sending receiving
process process
application data data
transport
reliable channel
transport
network
unreliable channel
sending receiving
process process
application data data
transport
sender-side of receiver-side
Complexity of reliable data reliable data of reliable data
transfer protocol transfer protocol
transfer protocol will depend
(strongly) on characteristics of transport
network
unreliable channel (lose, unreliable channel
corrupt, reorder data?)
reliable service implementation
Principles of reliable data transfer
sending receiving
process process
application data data
transport
sender-side of receiver-side
Sender, receiver do not know reliable data of reliable data
transfer protocol transfer protocol
the “state” of each other, e.g.,
was a message received? transport
network
▪ unless communicated via a unreliable channel
message
reliable service implementation
Reliable data transfer protocol (rdt): interfaces
rdt_send(): called from above,
deliver_data(): called by rdt
(e.g., by app.). Passed data to
to deliver data to upper layer
deliver to receiver upper layer
sending receiving
process process
rdt_send() data data
deliver_data()
unreliable channel
udt_send(): called by rdt rdt_rcv(): called when packet
to transfer packet over Bi-directional communication over arrives on receiver side of
unreliable channel to receiver unreliable channel channel
Reliable data transfer: getting started
We will:
▪ 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
event causing state transition
actions taken on state transition
state: when in this “state”
next state uniquely state state
determined by next 1 event
2
event actions
Turn switch ON
power to filament
OFF ON
extract(rcvpkt,data)
deliver_data(data)
sndpkt = make_pkt(ACK, chksum)
udt_send(sndpkt)
rdt2.1: discussion
sender: receiver:
▪ seq # added to pkt ▪ must check if received packet
▪ two seq. #s (0,1) will suffice. Why? is duplicate
▪ must check if received ACK/NAK • state indicates whether 0 or 1 is
expected pkt seq #
corrupted
▪ twice as many states ▪ note: receiver can not know if
its last ACK/NAK received OK
• state must “remember” whether
“expected” pkt should have seq # of 0 at sender
or 1
rdt3.0: channels with errors and loss
New channel assumption: Approach: sender waits
underlying channel can also “reasonable” amount of time
lose packets (data, ACKs) for ACK
• checksum, seq. #, ACKs, ▪ retransmits if no ACK received in
retransmissions will be of help this time
… but not enough
▪ if pkt (or ACK) just delayed (not
lost):
• retransmission will be duplicate, but
How do humans handle seq. #s already handles this
lost sender-to-receiver • receiver must specify seq # of pkt
words in conversation? being ACKed
▪ requires countdown timer
rdt3.0: channels with errors and loss
Approach: sender waits “reasonable” amount of time for ACK
▪ retransmits if no ACK received in this time
▪ if pkt (or ACK) just delayed (not lost):
• retransmission will be duplicate, but seq #s already handles this!
• receiver must specify seq # of packet being ACKed
▪ use countdown timer to interrupt after “reasonable” amount
of time
timeout
rdt3.0 sender
rdt_send(data)
rdt_rcv(rcvpkt) &&
sndpkt = make_pkt(0, data, checksum) ( corrupt(rcvpkt) ||
udt_send(sndpkt) isACK(rcvpkt,1) )
rdt_rcv(rcvpkt) start_timer Λ
Λ Wait for Wait
for timeout
call 0from
ACK0 udt_send(sndpkt)
above
start_timer
rdt_rcv(rcvpkt)
&& notcorrupt(rcvpkt) rdt_rcv(rcvpkt)
&& isACK(rcvpkt,1) && notcorrupt(rcvpkt)
stop_timer && isACK(rcvpkt,0)
stop_timer
Wait Wait for
timeout for call 1 from
udt_send(sndpkt) ACK1 above
start_timer rdt_rcv(rcvpkt)
Λ
rdt_send(data)
rdt_rcv(rcvpkt) &&
( corrupt(rcvpkt) || sndpkt = make_pkt(1, data, checksum)
isACK(rcvpkt,0) ) udt_send(sndpkt)
start_timer
Λ
rdt3.0 in action
sender receiver sender receiver
send pkt0 pkt0 send pkt0 pkt0
rcv pkt0 rcv pkt0
ack0 send ack0 ack0 send ack0
rcv ack0 rcv ack0
pkt1 send pkt1 pkt1
send pkt1
rcv pkt1 X
loss
ack1 send ack1
rcv ack1
send pkt0 pkt0
rcv pkt0 timeout pkt1
ack0 send ack0 resend pkt1
rcv pkt1
ack1 send ack1
rcv ack1
send pkt0 pkt0
(a) no loss rcv pkt0
ack0 send ack0
65
66
Consider the case when a server is distributing the file F=6x10power6 bits to 5 peers. The upload
speed rate of the server equals the link transmission rate (R = 3 Mbps). The download rate of the peers
is d1 = d2 = 2 Mbps and d3 = d4 =d5= 1 Mbps and upload speed rate is Ui= 1 Mbps respectively.
Calculate the maximum distribution time for Client-Server and P2P architecture for this problem.
67
1. Assuming zero transmission time for the HTML object, how much time (in msec) elapses from when the client clicks on the link until the client receives the object?
2. Now suppose the HTML object references 5 very small objects on the same server. Neglecting transmission times, how much time (in msec) elapses from when the client
clicks on the link until the base object and all 5 additional objects are received from web server at the client, assuming non-persistent HTTP and no parallel TCP
connections?
68
69
70
71
Mennan Selimi
Thank you ! [email protected]
https://www.mvdsi.seeu.edu.mk