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
Download
Report
Transcript 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
Chapter 3
Transport Layer
Part 1: transport layer
services,
multiplexing/depmultiplexi
ng, UDP
Computer Networking: A Top
Down Approach
6th edition
Jim Kurose, Keith Ross
Addison-Wesley
March 2012
Transport Layer
3-1
Chapter 3: Transport Layer
Our goals:
understand principles
behind transport
layer services:
multiplexing/demultipl
exing
reliable data transfer
flow control
congestion control
learn about transport
layer protocols in the
Internet:
UDP: connectionless
transport
TCP: connection-oriented
transport
TCP congestion control
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 sending letters to
12 kids
processes = kids
app messages = letters
in envelopes
hosts = houses
transport protocol =
Ann and Bill
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:
delay guarantees
bandwidth guarantees
application
transport
network
data link
physical
network
data link
physical
network
data link
physical
network
data link
physicalnetwork
network
data link
physical
data link
physical
network
data link
physical
application
transport
network
data link
physical
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 send host:
gathering data from multiple
sockets, enveloping data with
header (later used for
demultiplexing)
Demultiplexing at rcv host:
delivering received segments
to correct socket
= socket
application
transport
network
link
= process
P3
P1
P1
application
transport
network
P2
P4
application
transport
network
link
link
physical
host 1
physical
host 2
physical
host 3
Transport Layer
3-8
How demultiplexing works
host receives IP datagrams
each datagram has source
IP address, destination IP
address
each datagram carries 1
transport-layer segment
each segment has source,
destination port number
host uses IP addresses & port
numbers to direct segment to
appropriate socket
32 bits
source port #
dest port #
other header fields
application
data
(message)
TCP/UDP segment format
Transport Layer
3-9
Connectionless demultiplexing
Create sockets with port
When host receives UDP
segment:
numbers:
DatagramSocket mySocket1 = new
DatagramSocket(12534);
DatagramSocket mySocket2 = new
DatagramSocket(12535);
UDP socket identified by
two-tuple:
checks destination port
number in segment
directs UDP segment to
socket with that port
number
IP datagrams with
(dest IP address, dest port number)
Note this! Different than TCP!
different source IP
addresses and/or source
port numbers directed
to same socket
Transport Layer 3-10
Connectionless demux (cont)
DatagramSocket serverSocket = new DatagramSocket(6428);
P2
SP: 6428
SP: 6428
DP: 9157
DP: 5775
SP: 9157
client
IP: A
P1
P1
P3
DP: 6428
SP: 5775
server
IP: C
DP: 6428
Client
IP:B
SP provides “return address”
Transport Layer
3-11
Note that you can have multiple IP addresses on one NIC
or multiple NIC on one machine. See:
http://www.loadtestingtool.com/help/how-setup-ip.shtml
Connection-oriented demux
TCP socket identified
by 4-tuple:
source IP address
source port number
dest IP address
dest port number
receiving host 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
Note this! Different than UDP!
non-persistent HTTP will
have different socket for
each request
Transport Layer 3-12
Connection-oriented demux
(cont)
P1
P4
P5
P2
P6
P1P3
SP: 5775
DP: 80
S-IP: B
D-IP:C
SP: 9157
client
IP: A
DP: 80
S-IP: A
D-IP:C
SP: 9157
server
IP: C
DP: 80
S-IP: B
D-IP:C
Client
IP:B
Transport Layer 3-13
Connection-oriented demux:
Threaded Web Server
P1
P2
P4
P1P3
SP: 5775
DP: 80
S-IP: B
D-IP:C
SP: 9157
client
IP: A
DP: 80
S-IP: A
D-IP:C
SP: 9157
server
IP: C
DP: 80
S-IP: B
D-IP:C
Client
IP:B
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
Why is there a UDP?
no connection
establishment (TCP: 3-way
handshake)
simple: no connection state
at sender, receiver (TCP
keeps buffers, sequence
no., ack, etc.)
small segment header (20
bytes for TCP, 8 for UDP)
no congestion control: UDP
can blast away as fast as
desired
With UDP applications basically talk directly to IP
Transport Layer 3-16
UDP: more
often used for streaming
multimedia apps
loss tolerant
rate sensitive
32 bits
Length, in
bytes of UDP
segment,
including
header
other UDP uses
DNS
SNMP*
reliable transfer over UDP:
add reliability at
application layer
Size varies
application-specific
from
error recovery!
message to
message
source port #
dest port #
length
checksum
Application
data
(message)
UDP segment format
*Simple network management protocol
Transport Layer 3-17
UDP problems
No congestion
control, so the
network can
become congested
TCP does use
congestion control
So when UDP
floods the network,
TCP (and
applications using
it) slows down.
Transport Layer 3-18
Popular Internet Applications
Application
Application layer
protocol
Underlying Transport
protocol
Email
SMTP
TCP
Remote Terminal
access
Telnet/SSH
TCP
Web
HTTP
TCP
File Transfer
FTP
TCP
Remote file server
NFS
Typically UDP
Streaming multimedia
Typically proprietary
UDP or TCP
Internet telephony
Typically proprietary
UDP or TCP
Network management
SNMP
Typically UDP
Routing protocol
RIP
Typically UDP
Name translation
DNS
Typically UDP
Transport Layer 3-19
UDP checksum
Goal: detect “errors” (e.g., flipped bits) in
transmitted segment
Result:
UDP does error detection not error correction
1. may just discard a segment with errors
2. may pass it to the application with a warning.
Transport Layer 3-20
UDP checksum
Goal: detect “errors” (e.g., flipped bits) in
transmitted segment
Sender:
Receiver:
treat segment contents
compute checksum of
as sequence of 16-bit
integers
checksum: addition (1’s
complement sum) of
segment contents
sender puts checksum
value into UDP checksum
field
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-21
Internet Checksum Example
Note
When adding numbers, a carryout from the
most significant bit needs to be added to the
result
Example sender: 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
(complement
Transport Layer
the sum)
3-22
Internet Checksum Example
Note
When adding numbers, a carryout from the
most significant bit needs to be added to the
result
Example receiver: add two 16-bit integers plus the
checksum: should get all 1’s (why?)
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
Checksum
Result
1 0 1 1 1 0 1 1 1 0 1 1 1 1 0 0
0 1 0 0 0 1 0 0 0 1 0 0 0 0 1 1
1 1 1 1 1 1 1 1 1 1 1 1 Transport
1 1 1Layer
1
3-23
UDP checksum
Why checksum in UDP when layer 2 checks
for errors?
1. Not all data layer protocols check for errors
2. Data layer protocols cannot account for
memory errors when the packet is waiting in a
router.
UDP does not attempt to recover from
errors
Some UDP implementations discard the packet
Some pass it to the application with a warning
Transport Layer 3-24