PowerPoint Presentation
Transport Layer
All material copyright 1996-2012
J.F Kurose and K.W. Ross, All Rights Reserved
George Parisis
School of Engineering and Informatics
University of Sussex
Transport Layer
3-*
Transport Layer
objectives:
understand principles behind transport layer services:
multiplexing, demultiplexing
reliable data transfer
flow control
congestion control
learn about Internet transport layer protocols:
UDP: connectionless transport
TCP: connection-oriented reliable transport
TCP congestion control
Transport Layer
Transport Layer
3-*
Outline
transport-layer services
multiplexing and demultiplexing
connectionless transport: UDP
principles of reliable data transfer
connection-oriented transport: TCP
segment structure
reliable data transfer
flow control
connection management
principles of congestion control
TCP congestion control
Transport Layer
Transport Layer
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
logical end-end transport
application
transport
network
data link
physical
Transport Layer
Transport Layer
3-*
Transport vs. network layer
network layer: logical communication between hosts
transport layer: logical communication between processes
relies on, enhances, network layer services
Transport Layer
Transport Layer
3-*
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
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
logical end-end transport
Transport Layer
Transport Layer
3-*
Outline
transport-layer services
multiplexing and demultiplexing
connectionless transport: UDP
principles of reliable data transfer
connection-oriented transport: TCP
segment structure
reliable data transfer
flow control
connection management
principles of congestion control
TCP congestion control
Transport Layer
Transport Layer
3-*
Multiplexing/demultiplexing
process
socket
transport
application
physical
link
network
P2
P1
transport
application
physical
link
network
P4
transport
application
physical
link
network
P3
demultiplexing at receiver:
use header info to deliver
received segments to correct
socket
multiplexing at sender:
handle data from multiple
sockets, add transport header (later used for demultiplexing)
Transport Layer
Transport Layer
3-*
How demultiplexing works
host receives IP datagrams
each datagram has source IP address, destination IP address
each datagram carries one transport-layer segment
each segment has source, destination port number
host uses IP addresses & port numbers to direct segment to appropriate socket
source port #
dest port #
32 bits
application
data
(payload)
other header fields
TCP/UDP segment format
Transport Layer
Transport Layer
3-*
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
Transport Layer
3-*
Connectionless demux: example
DatagramSocket serverSocket = new DatagramSocket
(6428);
transport
application
physical
link
network
P3
transport
application
physical
link
network
P1
transport
application
physical
link
network
P4
DatagramSocket mySocket1 = new DatagramSocket (5775);
DatagramSocket mySocket2 = new DatagramSocket
(9157);
source port: 9157
dest port: 6428
source port: 6428
dest port: 9157
source port: ?
dest port: ?
source port: ?
dest port: ?
Transport Layer
Transport Layer
3-*
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
servers have different sockets for each connecting client
Transport Layer
Transport Layer
3-*
Connection-oriented demux: example
transport
application
physical
link
network
P3
transport
application
physical
link
P4
transport
application
physical
link
network
P2
host: IP address A
host: IP address C
network
P6
P5
P3
three segments, all destined to IP address: B,
dest port: 80 are demultiplexed to different sockets
server: IP address B
source IP,port: A,9157
dest IP, port: B,80
source IP,port: B,80
dest IP,port: A,9157
source IP,port: C,5775
dest IP,port: B,80
source IP,port: C,9157
dest IP,port: B,80
Transport Layer
Transport Layer
3-*
Connection-oriented demux: example
transport
application
physical
link
network
P3
transport
application
physical
link
transport
application
physical
link
network
P2
host: IP address A
host: IP address C
server: IP address B
network
P3
P4
threaded server
source IP,port: A,9157
dest IP, port: B,80
source IP,port: B,80
dest IP,port: A,9157
source IP,port: C,5775
dest IP,port: B,80
source IP,port: C,9157
dest IP,port: B,80
Transport Layer
Transport Layer
3-*
Outline
transport-layer services
multiplexing and demultiplexing
connectionless transport: UDP
principles of reliable data transfer
connection-oriented transport: TCP
segment structure
reliable data transfer
flow control
connection management
principles of congestion control
TCP congestion control
Transport Layer
Transport Layer
3-*
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
Transport Layer
3-*
UDP: segment header
source port #
dest port #
32 bits
application
data
(payload)
UDP segment format
length
checksum
length, in bytes of UDP segment, including header
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
why is there a UDP?
Transport Layer
Transport Layer
3-*
UDP checksum
sender:
treat segment contents, including header fields, as sequence of 16-bit integers
checksum: addition (one’s 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?
Goal: detect “errors” (e.g., flipped bits) in transmitted segment
Transport Layer
Transport Layer
3-*
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
1 1 0 1 1 1 0 1 1 1 0 1 1 1 0 1 1
1 1 0 1 1 1 0 1 1 1 0 1 1 1 1 0 0
1 0 1 0 0 0 1 0 0 0 1 0 0 0 0 1 1
wraparound
sum
checksum
Note: when adding numbers, a carryout from the most significant bit needs to be added to the result
Transport Layer
*
Kurose and Ross forgot to say anything about wrapping the carry and adding it to low order bit
Transport Layer
3-*
Summary
principles behind transport layer services:
multiplexing, demultiplexing
reliable data transfer
UDP
Transport Layer