0% found this document useful (0 votes)
72 views23 pages

KuroseRoss 6ed Chp3

The document discusses the transport layer in computer networking. It outlines the key topics that will be covered, including transport layer services, multiplexing and demultiplexing, connectionless transport with UDP, principles of reliable data transfer, connection-oriented transport with TCP, and congestion control. TCP and UDP are the main transport layer protocols for the Internet.
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)
72 views23 pages

KuroseRoss 6ed Chp3

The document discusses the transport layer in computer networking. It outlines the key topics that will be covered, including transport layer services, multiplexing and demultiplexing, connectionless transport with UDP, principles of reliable data transfer, connection-oriented transport with TCP, and congestion control. TCP and UDP are the main transport layer protocols for the Internet.
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
You are on page 1/ 23

Chapter 3

Transport Layer
Computer
Networking: A Top
Down Approach
6th edition
Jim Kurose, Keith Ross
Addison-Wesley
March 2012

All material copyright 1996-2012


J.F Kurose and K.W. Ross, All Rights Reserved

Transport Layer 3-1

Chapter 3: Transport Layer


our goals:

understand
principles behind
transport layer
services:
multiplexing,
demultiplexing
reliable data transfer
flow control

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.2 multiplexing and
demultiplexing
3.3 connectionless
transport: UDP
3.4 principles of reliable
data transfer

3.5 connection-oriented
transport: TCP

segment structure
reliable data transfer
flow control
connection management

3.6 principles of congestion


control
3.7 TCP congestion control

Transport Layer 3-3

Transport services and protocols

provide logical communication


between app processes
running on different hosts
transport protocols run in
end systems
send side: breaks app
messages into segments,
passes to network layer
rcv side: reassembles
segments into messages,
passes to app layer
more than one transport
protocol available to apps
Internet: TCP and UDP

application
transport
network
data link
physical

application
transport
network
data link
physical

Transport Layer 3-4

Transport vs. network layer


network layer: logical
communication
between hosts
transport layer:
logical
communication
between processes

relies on, enhances,


network layer
services

household analogy:
12 kids in Anns house sending
letters to 12 kids in Bills
house:
hosts = houses
processes = kids
app messages = letters in
envelopes
transport protocol = Ann
and Bill who demux to inhouse siblings
network-layer protocol =
postal service

Transport Layer 3-5

Internet transport-layer protocols

reliable, in-order
delivery (TCP)
congestion control
flow control
connection setup

unreliable, unordered
delivery: UDP
no-frills extension of
best-effort IP

services not available:

application
transport
network
data link
physical
network
data link
physical

network
data link
physical
network
data link
physical
network
data link
physical

network
data link
physical

network
data link
physical

network
data link
physical

application
transport
network
data link
physical

delay guarantees
bandwidth guarantees
Transport Layer 3-6

Chapter 3 outline
3.1 transport-layer
services
3.2 multiplexing and
demultiplexing
3.3 connectionless
transport: UDP
3.4 principles of reliable
data transfer

3.5 connection-oriented
transport: TCP

segment structure
reliable data transfer
flow control
connection management

3.6 principles of congestion


control
3.7 TCP congestion control

Transport Layer 3-7

Multiplexing/demultiplexing
multiplexing at sender:
handle data from multiple
sockets, add transport header
(later used for demultiplexing)

demultiplexing at receiver:
use header info to deliver
received segments to correct
socket

application
application

P1

P2

application

P3

transport

P4

transport

network

transport

link

network

network
link
physical

physical

socket
process

link
physical

Transport Layer 3-8

How demultiplexing works

host receives IP datagrams

32 bits

each datagram has source IP


address, destination IP
address
each datagram carries one
transport-layer segment
each segment has source,
destination port number

source port #

dest port #

other header fields

application
data
(payload)

host uses IP addresses &


port numbers to direct
segment to appropriate
socket

TCP/UDP segment format

Transport Layer 3-9

Connectionless demultiplexing

recall: created socket has


host-local port #:

DatagramSocket mySocket1
= new DatagramSocket(12534);

when host receives UDP


segment:
checks destination port #
in segment
directs UDP segment to
socket with that port #

recall: when creating


datagram to send into
UDP socket, must specify
destination IP address
destination port #
IP datagrams with same
dest. port #, but different
source IP addresses
and/or source port
numbers will be directed
to same socket at dest
Transport Layer 3-10

Connectionless demux: example


DatagramSocket
mySocket2 = new
DatagramSocket
(9157);

DatagramSocket
serverSocket = new
DatagramSocket
(6428);
application

application

DatagramSocket
mySocket1 = new
DatagramSocket
(5775);
application

P1

P3

P4
transport

transport

transport

network

network

network

link

link

physical

link
physical

physical
source port: 6428
dest port: 9157

source port: ?
dest port: ?

source port: ?
dest port: ?

source port: 9157


dest port: 6428

Transport Layer 3-11

Connection-oriented demux

TCP socket identified


by 4-tuple:

source IP address
source port number
dest IP address
dest port number

demux: receiver uses


all four values to direct
segment to appropriate
socket

server host may support


many simultaneous TCP
sockets:
each socket identified by
its own 4-tuple

web servers have


different sockets for
each connecting client
non-persistent HTTP will
have different socket for
each request

Transport Layer 3-12

Connection-oriented demux: example


application
application

P4

P5

application

P6

P3

P3

P2
transport

transport

network

network

link

link

physical

physical

transport

network
link

server: IP
address B
source IP,port: B,80
dest IP,port: A,9157

host: IP
address A

physical

host: IP
address C

source IP,port: C,5775


dest IP,port: B,80

source IP,port: A,9157


dest IP, port: B,80

source IP,port: C,9157


dest IP,port: B,80

three segments, all destined to IP address: B,


dest port: 80 are demultiplexed to different sockets

Transport Layer 3-13

Connection-oriented demux: example


threaded server
application
application

P3

application

P4

P3

P2

transport
transport

network

network

link

link

physical

physical

host: IP
address A

transport
network
link

server: IP
address B
source IP,port: B,80
dest IP,port: A,9157
source IP,port: A,9157
dest IP, port: B,80

physical

source IP,port: C,5775


dest IP,port: B,80

host: IP
address C

source IP,port: C,9157


dest IP,port: B,80
Transport Layer 3-14

Chapter 3 outline
3.1 transport-layer
services
3.2 multiplexing and
demultiplexing
3.3 connectionless
transport: UDP
3.4 principles of reliable
data transfer

3.5 connection-oriented
transport: TCP

segment structure
reliable data transfer
flow control
connection management

3.6 principles of congestion


control
3.7 TCP congestion control

Transport Layer 3-15

UDP: User Datagram Protocol [RFC 768]

no frills, bare bones


Internet transport
protocol
best effort service, UDP
segments may be:
lost
delivered out-of-order
to app
connectionless:
no handshaking
between UDP sender,
receiver
each UDP segment
handled independently
of others

UDP use:
streaming multimedia
apps (loss tolerant, rate
sensitive)
DNS
SNMP

reliable transfer over


UDP:
add reliability at
application layer
application-specific error
recovery!

Transport Layer 3-16

UDP: segment header


32 bits
source port #

dest port #

length

checksum

length, in bytes of
UDP segment,
including header

why is there a UDP?

application
data
(payload)

UDP segment format

no connection
establishment (which can
add delay)
simple: no connection
state at sender, receiver
small header size
no congestion control:
UDP can blast away as
fast as desired
Transport Layer 3-17

UDP checksum
Goal: detect errors (e.g., flipped bits) in transmitted
segment

sender:

treat segment contents,


including header fields,
as sequence of 16-bit
integers
checksum: addition
(ones complement sum)
of segment contents
sender puts checksum
value into UDP
checksum field

receiver:

compute checksum of
received segment
check if computed
checksum equals checksum
field value:
NO - error detected
YES - no error detected.
But maybe errors
nonetheless? More later
.
Transport Layer 3-18

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-19

Chapter 3 outline
3.1 transport-layer
services
3.2 multiplexing and
demultiplexing
3.3 connectionless
transport: UDP
3.4 principles of reliable
data transfer

3.5 connection-oriented
transport: TCP

segment structure
reliable data transfer
flow control
connection management

3.6 principles of congestion


control
3.7 TCP congestion control

Transport Layer 3-20

10

TCP: Overview

RFCs: 793,1122,1323, 2018, 2581

point-to-point:

one sender, one receiver

bi-directional data flow


in same connection
MSS: maximum segment
size

reliable, in-order byte


stream:

no message boundaries

pipelined:

full duplex data:

connection-oriented:
handshaking (exchange
of control msgs) inits
sender, receiver state
before data exchange

TCP congestion and


flow control set window
size

flow controlled:
sender will not
overwhelm receiver
Transport Layer 3-21

TCP segment structure


32 bits
URG: urgent data
(generally not used)
ACK: ACK #
valid
PSH: push data now
(generally not used)
RST, SYN, FIN:
connection estab
(setup, teardown
commands)
Internet
checksum
(as in UDP)

source port #

dest port #

sequence number
acknowledgement number
head not
UAP R S F
len used

checksum

counting
by bytes
of data
(not segments!)

receive window
Urg data pointer

options (variable length)

# bytes
rcvr willing
to accept

application
data
(variable length)

Transport Layer 3-22

11

TCP seq. numbers, ACKs


sequence numbers:
byte stream number of
first byte in segments
data
acknowledgements:
seq # of next byte
expected from other side
cumulative ACK
Q: how receiver handles
out-of-order segments
A: TCP spec doesnt say,
- up to implementor

outgoing segment from sender


source port #

dest port #

sequence number
acknowledgement number
rwnd
checksum

urg pointer

window size

sender sequence number space


sent
ACKed

sent, not- usable not


yet ACKed but not usable
(in-flight) yet sent

incoming segment to sender


source port #

dest port #

sequence number
acknowledgement number
rwnd
A
checksum

urg pointer

Transport Layer 3-23

TCP seq. numbers, ACKs


Host B

Host A

User
types
C

host ACKs
receipt
of echoed
C

Seq=42, ACK=79, data = C

Seq=79, ACK=43, data = C

host ACKs
receipt of
C, echoes
back C

Seq=43, ACK=80

simple telnet scenario

Transport Layer 3-24

12

TCP round trip time, timeout


Q: how to set TCP
timeout value?

Q: how to estimate RTT?

longer than RTT


but RTT varies

too short: premature


timeout, unnecessary
retransmissions
too long: slow reaction
to segment loss

SampleRTT: measured
time from segment
transmission until ACK
receipt
ignore retransmissions
SampleRTT will vary, want
estimated RTT smoother
average several recent
measurements, not just
current SampleRTT

Transport Layer 3-25

TCP round trip time, timeout


EstimatedRTT = (1- )*EstimatedRTT + *SampleRTT

exponential weighted moving average


influence of past sample decreases exponentially fast
typical value: = 0.125
RTT: gaia.cs.umass.edu to fantasia.eurecom.fr

350

RTT: gaia.cs.umass.edu to fantasia.eurecom.fr

RTT (milliseconds)

RTT (milliseconds)

300

250

200

sampleRTT
150

EstimatedRTT

100
1

15

22

29

36

43

50

57

64

71

time (seconnds)

time (seconds)
SampleRTT

Estimated RTT

78

85

92

99

106

Transport Layer 3-26

13

TCP round trip time, timeout

timeout interval: EstimatedRTT plus safety margin


large variation in EstimatedRTT -> larger safety margin

estimate SampleRTT deviation from EstimatedRTT:


DevRTT = (1-)*DevRTT +
*|SampleRTT-EstimatedRTT|
(typically, = 0.25)

TimeoutInterval = EstimatedRTT + 4*DevRTT


estimated RTT

safety margin

Transport Layer 3-27

Chapter 3 outline
3.1 transport-layer
services
3.2 multiplexing and
demultiplexing
3.3 connectionless
transport: UDP
3.4 principles of reliable
data transfer

3.5 connection-oriented
transport: TCP

segment structure
reliable data transfer
flow control
connection management

3.6 principles of congestion


control
3.7 TCP congestion control

Transport Layer 3-28

14

TCP reliable data transfer

TCP creates rdt service


on top of IPs unreliable
service
pipelined segments
cumulative acks
single retransmission
timer

Lets initially consider


simplified TCP sender:
ignore duplicate acks
ignore flow control,
congestion control

retransmissions
triggered by:
timeout events
duplicate acks

Transport Layer 3-29

TCP sender events:


data rcvd from app:
create segment with
seq #
seq # is byte-stream
number of first data
byte in segment
start timer if not
already running
think of timer as for
oldest unacked
segment
expiration interval:
TimeOutInterval

timeout:
retransmit segment
that caused timeout
restart timer
ack rcvd:
if ack acknowledges
previously unacked
segments
update what is known
to be ACKed
start timer if there are
still unacked segments
Transport Layer 3-30

15

TCP sender (simplified)

L
NextSeqNum = InitialSeqNum
SendBase = InitialSeqNum

wait
for
event

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)
start timer
timeout
retransmit not-yet-acked segment
with smallest seq. #
start timer

ACK received, with ACK field value y


if (y > SendBase) {
SendBase = y
/* SendBase1: last cumulatively ACKed byte */
if (there are currently not-yet-acked segments)
start timer
else stop timer
}

Transport Layer 3-31

TCP: retransmission scenarios


Host B

Host A

Host B

Host A

SendBase=92

ACK=100

Seq=92, 8 bytes of data

timeout

timeout

Seq=92, 8 bytes of data

Seq=100, 20 bytes of data

ACK=100
ACK=120
Seq=92, 8 bytes of data
SendBase=100
ACK=100

Seq=92, 8
bytes of data

SendBase=120
ACK=120
SendBase=120

lost ACK scenario

premature timeout
Transport Layer 3-32

16

TCP: retransmission scenarios


Host B

Host A

Seq=92, 8 bytes of data

timeout

Seq=100, 20 bytes of data

ACK=100

ACK=120

Seq=120, 15 bytes of data

cumulative ACK
Transport Layer 3-33

TCP ACK generation [RFC 1122, RFC 2581]


event at receiver

TCP receiver action

arrival of in-order segment with


expected seq #. All data up to
expected seq # already ACKed

delayed ACK. Wait up to 500ms


for next segment. If no next segment,
send ACK

arrival of in-order segment with


expected seq #. One other
segment has ACK pending

immediately send single cumulative


ACK, ACKing both in-order segments

arrival of out-of-order segment


higher-than-expect seq. # .
Gap detected

immediately send duplicate ACK,


indicating seq. # of next expected byte

arrival of segment that


partially or completely fills gap

immediately send ACK, provided that


segment starts at lower end of gap
Transport Layer 3-34

17

TCP fast retransmit

time-out period often


relatively long:
long delay before
resending lost packet

detect lost segments


via duplicate ACKs.
sender often sends
many segments backto-back
if segment is lost, there
will likely be many
duplicate ACKs.

TCP fast retransmit

if sender receives 3
ACKs for same data
(triple
(triple duplicate
duplicate ACKs),
ACKs),

resend unacked
segment with smallest
seq #
likely that unacked
segment lost, so dont
wait for timeout

Transport Layer 3-35

TCP fast retransmit


Host B

Host A

Seq=92, 8 bytes of data


Seq=100, 20 bytes of data

X
timeout

ACK=100
ACK=100
ACK=100
ACK=100
Seq=100, 20 bytes of data

fast retransmit after sender


receipt of triple duplicate ACK

Transport Layer 3-36

18

Chapter 3 outline
3.1 transport-layer
services
3.2 multiplexing and
demultiplexing
3.3 connectionless
transport: UDP
3.4 principles of reliable
data transfer

3.5 connection-oriented
transport: TCP

segment structure
reliable data transfer
flow control
connection management

3.6 principles of congestion


control
3.7 TCP congestion control

Transport Layer 3-37

TCP flow control


application may
remove data from
TCP socket buffers .
slower than TCP
receiver is delivering
(sender is sending)

application
process
application

TCP
code

IP
code

flow control

receiver controls sender, so


sender wont overflow receivers
buffer by transmitting too much,
too fast

OS

TCP socket
receiver buffers

from sender

receiver protocol stack


Transport Layer 3-38

19

TCP flow control

receiver advertises free


buffer space by including
rwnd value in TCP header
of receiver-to-sender
segments

to application process

RcvBuffer

RcvBuffer size set via


socket options (typical default
is 4096 bytes)
many operating systems
autoadjust RcvBuffer

rwnd

buffered data
free buffer space

TCP segment payloads

sender limits amount of


unacked (in-flight) data to
receivers rwnd value
guarantees receive buffer
will not overflow

receiver-side buffering

Transport Layer 3-39

Chapter 3 outline
3.1 transport-layer
services
3.2 multiplexing and
demultiplexing
3.3 connectionless
transport: UDP
3.4 principles of reliable
data transfer

3.5 connection-oriented
transport: TCP

segment structure
reliable data transfer
flow control
connection management

3.6 principles of congestion


control
3.7 TCP congestion control

Transport Layer 3-40

20

Connection Management
before exchanging data, sender/receiver handshake:

agree to establish connection (each knowing the other willing


to establish connection)
agree on connection parameters
application

application

connection state: ESTAB


connection variables:
seq # client-to-server
server-to-client
rcvBuffer size
at server,client

connection state: ESTAB


connection Variables:
seq # client-to-server
server-to-client
rcvBuffer size
at server,client

network

network

Socket clientSocket =
newSocket("hostname","port
number");

Socket connectionSocket =
welcomeSocket.accept();

Transport Layer 3-41

TCP 3-way handshake


client state

server state

LISTEN

LISTEN

choose init seq num, x


send TCP SYN msg

SYNSENT

ESTAB

received SYNACK(x)
indicates server is live;
send ACK for SYNACK;
this segment may contain
client-to-server data

SYNbit=1, Seq=x

choose init seq num, y


send TCP SYNACK
SYN RCVD
msg, acking SYN

SYNbit=1, Seq=y
ACKbit=1; ACKnum=x+1

ACKbit=1, ACKnum=y+1
received ACK(y)
indicates client is live

ESTAB

Transport Layer 3-42

21

TCP 3-way handshake: FSM


closed
Socket connectionSocket =
welcomeSocket.accept();

L
SYN(x)
SYNACK(seq=y,ACKnum=x+1)
create new socket for
communication back to client

listen

Socket clientSocket =
newSocket("hostname","port
number");

SYN(seq=x)

SYN
sent

SYN
rcvd

SYNACK(seq=y,ACKnum=x+1)
ACK(ACKnum=y+1)

ESTAB

ACK(ACKnum=y+1)

L
Transport Layer 3-43

TCP: closing a connection

client, server each close their side of connection


send TCP segment with FIN bit = 1

respond to received FIN with ACK


on receiving FIN, ACK can be combined with own FIN

simultaneous FIN exchanges can be handled

Transport Layer 3-44

22

TCP: closing a connection


client state

server state

ESTAB

ESTAB
clientSocket.close()

FIN_WAIT_1

FIN_WAIT_2

can no longer
send but can
receive data

FINbit=1, seq=x
CLOSE_WAIT
ACKbit=1; ACKnum=x+1

wait for server


close

LAST_ACK

FINbit=1, seq=y

TIMED_WAIT
timed wait
for 2*max
segment lifetime

can still
send data

can no longer
send data

ACKbit=1; ACKnum=y+1
CLOSED

CLOSED
Transport Layer 3-45

Chapter 3: summary

principles behind
transport layer services:
multiplexing,
demultiplexing
reliable data transfer
flow control
congestion control
instantiation,
implementation in the
Internet

next:
leaving the
network edge
(application,
transport layers)
into the network
core

UDP
TCP
Transport Layer 3-46

23

You might also like