0% found this document useful (0 votes)
16 views24 pages

Lecture 5

Uploaded by

bandarupalli1996
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
16 views24 pages

Lecture 5

Uploaded by

bandarupalli1996
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd

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

You might also like