26
Transport layer and UDP Computer Networking: A Top Down Approach 6 th edition Jim Kurose, Keith Ross Addison-Wesley Some materials copyright 1996-2012 J.F Kurose and K.W. Ross, All Rights Reserved ”www.cnn.com?” “12.3.4.15”

Transport layer and UDP - Montana Technological University · Transport layer •Goal: End-to-end data transfer –Just getting to host machine isn't enough –Deliver data from process

  • Upload
    others

  • View
    4

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Transport layer and UDP - Montana Technological University · Transport layer •Goal: End-to-end data transfer –Just getting to host machine isn't enough –Deliver data from process

Transport layer and UDP

Computer Networking: A Top Down Approach 6th edition

Jim Kurose, Keith Ross

Addison-Wesley Some materials copyright 1996-2012

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

”www.cnn.com?”

“12.3.4.15”

Page 2: Transport layer and UDP - Montana Technological University · Transport layer •Goal: End-to-end data transfer –Just getting to host machine isn't enough –Deliver data from process

Overview

2

• Principles underlying transport layer

– Multiplexing/demultiplexing

– Detecting errors

– Reliable delivery

– Flow control

– Congestion control

• Major transport layer protocols:

– User Datagram Protocol (UDP) • Simple unreliable message delivery

– Transmission Control Protocol (TCP) • Reliable bidirectional stream of bytes

transport

application

physical

link

network

Page 3: Transport layer and UDP - Montana Technological University · Transport layer •Goal: End-to-end data transfer –Just getting to host machine isn't enough –Deliver data from process

Chapter 3: Transport Layer

Goals:

• 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

3

Page 4: Transport layer and UDP - Montana Technological University · Transport layer •Goal: End-to-end data transfer –Just getting to host machine isn't enough –Deliver data from process

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

4

Page 5: Transport layer and UDP - Montana Technological University · Transport layer •Goal: End-to-end data transfer –Just getting to host machine isn't enough –Deliver data from process

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

– Recv 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

5

Page 6: Transport layer and UDP - Montana Technological University · Transport layer •Goal: End-to-end data transfer –Just getting to host machine isn't enough –Deliver data from process

Segments

• Segment

– Message sent from one transport entity to another transport entity

– Term used by TCP, UDP, other Internet protocols

– aka TPDU (Transport Protocol Data Unit)

6

Page 7: Transport layer and UDP - Montana Technological University · Transport layer •Goal: End-to-end data transfer –Just getting to host machine isn't enough –Deliver data from process

Internet layering model

7

HTTP

TCP

IP

Ethernet interface

HTTP

TCP

IP

Ethernet interface

IP IP

Ethernet interface

Ethernet interface

SONET interface

SONET interface

host host

router router

HTTP message

TCP segment

IP packet IP packet IP packet

frame frame frame

Page 8: Transport layer and UDP - Montana Technological University · Transport layer •Goal: End-to-end data transfer –Just getting to host machine isn't enough –Deliver data from process

Transport layer challenges

• Running on best-effort network:

– Messages may be dropped

– Messages may be reordered

– Duplicate messages may be delivered

– Messages have some finite size

– Messages may arrive after long delay

• Sender must not overrun receiver

• Network may be congested

• Hosts must support multiple applications

8

Page 9: Transport layer and UDP - Montana Technological University · Transport layer •Goal: End-to-end data transfer –Just getting to host machine isn't enough –Deliver data from process

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

9

Page 10: Transport layer and UDP - Montana Technological University · Transport layer •Goal: End-to-end data transfer –Just getting to host machine isn't enough –Deliver data from process

Transport layer

• Goal: End-to-end data transfer

– Just getting to host machine isn't enough

– Deliver data from process on sending host to correct process on receiving host

• Solution: OS demultiplexes to correct process

– Port number, an abstract locater

– OS demuxes combining with other info

10

UDP <port, host> TCP <source port, source IP, dest port, dest IP>

Page 11: Transport layer and UDP - Montana Technological University · Transport layer •Goal: End-to-end data transfer –Just getting to host machine isn't enough –Deliver data from process

Multiplexing/demultiplexing

process

socket

Use header info to deliver received segments to correct socket

Demultiplexing at receiver: Handle data from multiple sockets, add transport header (later used for demultiplexing)

Multiplexing at sender:

transport

application

physical

link

network

P2 P1

transport

application

physical

link

network

P4

transport

application

physical

link

network

P3

11

Page 12: Transport layer and UDP - Montana Technological University · Transport layer •Goal: End-to-end data transfer –Just getting to host machine isn't enough –Deliver data from process

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

12

Page 13: Transport layer and UDP - Montana Technological University · Transport layer •Goal: End-to-end data transfer –Just getting to host machine isn't enough –Deliver data from process

Connectionless demultiplexing

• Recall: created socket can specify 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 #

IP datagrams with same destination port #, but different source IP addresses and/or source port numbers will be directed to same socket at destination

13

• Recall: when creating datagram to sent into UDP socket, must specify:

– Destination IP

– Destination port #

Page 14: Transport layer and UDP - Montana Technological University · Transport layer •Goal: End-to-end data transfer –Just getting to host machine isn't enough –Deliver data from process

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: ?

14

Page 15: Transport layer and UDP - Montana Technological University · Transport layer •Goal: End-to-end data transfer –Just getting to host machine isn't enough –Deliver data from process

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

15

Page 16: Transport layer and UDP - Montana Technological University · Transport layer •Goal: End-to-end data transfer –Just getting to host machine isn't enough –Deliver data from process

Connection-oriented demux: example

transport

application

physical

link

network

P3 transport

application

physical

link

P4

transport

application

physical

link

network

P2

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

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

host: IP address A

host: IP address C

network

P6 P5 P3

source IP,port: C,5775 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

server: IP address B

16

Page 17: Transport layer and UDP - Montana Technological University · Transport layer •Goal: End-to-end data transfer –Just getting to host machine isn't enough –Deliver data from process

Connection-oriented demux: example

transport

application

physical

link

network

P3 transport

application

physical

link

transport

application

physical

link

network

P2

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

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

host: IP address A

host: IP address C

server: IP address B

network

P3

source IP,port: C,5775 dest IP,port: B,80

source IP,port: C,9157 dest IP,port: B,80

P4

threaded server

17

Page 18: Transport layer and UDP - Montana Technological University · Transport layer •Goal: End-to-end data transfer –Just getting to host machine isn't enough –Deliver data from process

Why use UDP? • Provides:

– Lightweight communication between processes

– Avoid overhead and delays of ordered, reliable delivery

– Precise control of when data is sent • As soon as app writes to socket, UDP packages and sends

– No delay establishing a connection

– No connection state, scales to more clients

– Small packet overhead, header only 8 bytes long

• Does not provide:

– Flow control

– Congestion control

– Retransmission on error

18

Page 19: Transport layer and UDP - Montana Technological University · Transport layer •Goal: End-to-end data transfer –Just getting to host machine isn't enough –Deliver data from process

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? More later ….

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

19

Page 20: Transport layer and UDP - Montana Technological University · Transport layer •Goal: End-to-end data transfer –Just getting to host machine isn't enough –Deliver data from process

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

20

Page 21: Transport layer and UDP - Montana Technological University · Transport layer •Goal: End-to-end data transfer –Just getting to host machine isn't enough –Deliver data from process

UDP checksums

• UDP checksum

– Add up 16-bit words in one's complement

– Take one's complement of the sum

– Done on UDP header, data, IP pseudoheader

• Helps detect misdelivered packets

• Violates layers, looking into network layer

21

UDP header IP pseudoheader

Page 22: Transport layer and UDP - Montana Technological University · Transport layer •Goal: End-to-end data transfer –Just getting to host machine isn't enough –Deliver data from process

Type of UDP apps, part 1/3

• Simple query protocols

– Overhead of connection establishment is overkill

– Easier to have application retransmit if needed

– e.g. DNS, UDP port 53

– e.g. DHCP, UDP port 67/68

22

”www.cnn.com?”

“12.3.4.15”

DHCPDISCOVER

“192.168.1.30”

Page 23: Transport layer and UDP - Montana Technological University · Transport layer •Goal: End-to-end data transfer –Just getting to host machine isn't enough –Deliver data from process

Type of UDP apps, part 2/3

• Request/reply style interaction

– Client sends request to server

• Blocks while waiting for reply

– Server responds with reply

– Must deal with:

• Identify process that can handle request

• Possible loss of request or reply

• Correlate request with reply

23

Page 24: Transport layer and UDP - Montana Technological University · Transport layer •Goal: End-to-end data transfer –Just getting to host machine isn't enough –Deliver data from process

Request/reply example

• Remote Procedure Call (RPC)

– Request/reply paradigm over UDP

– Allow programs to call procedures located on a remote host

– Invisible to the application programmer

• Client code blocks while request made and response waited for from remote host

– Object-oriented languages:

• Remote Method Invocation(RMI), e.g. Java RMI

24

Page 25: Transport layer and UDP - Montana Technological University · Transport layer •Goal: End-to-end data transfer –Just getting to host machine isn't enough –Deliver data from process

Type of UDP apps, part 3/3

• Multimedia streaming

– e.g. Voice over IP, video conferencing

– Time is of the essence

• By time packet is retransmitted, it's too late!

• Interactive applications: – Human-to-human interaction

– e.g. conference, first-person shooters

• Streaming applications: – Computer-to-human interaction

– e.g. Netflix, Spotify

25

Page 26: Transport layer and UDP - Montana Technological University · Transport layer •Goal: End-to-end data transfer –Just getting to host machine isn't enough –Deliver data from process

Summary

• Transport layer

– Providing end-to-end process communication

• Port numbers allow multiple processes per host

– Provide reliable transport on best-effort network

• User Datagram Protocol (UDP)

– Lightweight protocol running on top of IP

– Three typical classes of applications:

• Simple queries (DNS, DHCP)

• Request/reply semantics (RPC)

• Real-time data (Skype)

26