Chapter 3 transport layer
This presentation is the property of its rightful owner.
Sponsored Links
1 / 33

Chapter 3: Transport Layer PowerPoint PPT Presentation


  • 52 Views
  • Uploaded on
  • Presentation posted in: General

Our goals: understand principles behind transport layer services: Multiplexing/demultiplexing reliable data transfer flow control congestion control. learn about transport layer protocols in the Internet: UDP: connectionless transport TCP: connection-oriented transport

Download Presentation

Chapter 3: Transport Layer

An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -

Presentation Transcript


Chapter 3 transport layer

Our goals:

understand principles behind transport layer services:

Multiplexing/demultiplexing

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

Chapter 3: Transport Layer

Transport Layer


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

Chapter 3 outline

Transport Layer


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

logical end-end transport

Transport services and protocols

Transport Layer


Transport vs network layer

network layer: logical communication between hosts

transport layer: logical communication between processes

relies on, enhances, network layer services

Transport vs. network layer

C

Sport:8050

Dport: 25

A

D

Sport:4625

Dport: 80

B

Transport Layer


Internet transport layer protocols

reliable, in-order delivery (TCP)

congestion control

flow control

connection setup

unreliable, unordered delivery: UDP

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

logical end-end transport

Internet transport-layer protocols

Transport Layer


Chapter 3 outline1

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

Chapter 3 outline

Transport Layer


Multiplexing demultiplexing

handle data from multiple

sockets, add transport header (later used for demultiplexing)

use header info to deliver

received segments to correct

socket

multiplexing at sender:

demultiplexing at receiver:

Multiplexing/demultiplexing

application

P1

P2

application

application

socket

P4

P3

transport

process

network

transport

transport

link

network

network

physical

link

link

physical

physical

TransportLayer


How demultiplexing works

host receives IP datagrams

each datagram has source IP address, destination IP address

each datagram carries transport-layer segment

each segment has source, destination port number

host uses IP addresses & port numbers to direct segment to appropriate socket

How demultiplexing works

32 bits

source port #

dest port #

other header fields

application

data

(message)

TCP/UDP segment format

Transport Layer


Connectionless demultiplexing udp

Create a socket binding to a port number

UDP socket identified by two-tuple:

(dest IP address, dest port number)

When host receives UDP segment:

checks destination port number in segment

directs UDP segment to socket with that port number

IP datagrams with different source IP/port can be directed to same socket

Connectionless demultiplexing (UDP)

Transport Layer


Connectionless demux cont

P2

P1

P1

P3

client

IP: A

SP: 6428

SP: 6428

SP: 5775

DP: 5775

DP: 6428

DP: 9157

Connectionless demux (cont)

SP: 9157

DP: 6428

Client

IP:B

server

IP: C

Port: 6428

Socket tuple: (dest IP address, dest port number)

Two clients’ traffic can be mixed together at server

Transport Layer


Connection oriented demux tcp

TCP socket identified by 4-tuple:

source IP address

source port number

dest IP address

dest port number

recv host uses all four values to direct segment to appropriate socket

Two connections cannot mixed together at the receiver host

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

Remember the fork() and new socket generated by accept()

Connection-oriented demux (TCP)

Transport Layer


Connection oriented demux example

source IP,port: A,9157

dest IP, port: B,80

source IP,port: C,5775

dest IP,port: B,80

source IP,port: B,80

dest IP,port: A,9157

source IP,port: C,9157

destIP,port: B,80

Connection-oriented demux: example

application

application

application

P4

P5

P6

P3

P3

P2

transport

transport

transport

network

network

network

link

link

link

physical

physical

physical

server: IP address B

host: IP address C

host: IP address A

three segments, all destined to IP address: B,

dest port: 80 are demultiplexed to different sockets

TransportLayer


Connection oriented demux example1

source IP,port: A,9157

dest IP, port: B,80

source IP,port: C,9157

destIP,port: B,80

source IP,port: C,5775

dest IP,port: B,80

source IP,port: B,80

dest IP,port: A,9157

Connection-oriented demux: example

threaded server

application

application

application

P4

P3

P3

P2

transport

transport

transport

network

network

network

link

link

link

physical

physical

physical

server: IP address B

host: IP address C

host: IP address A

TransportLayer


Chapter 3 outline2

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

Chapter 3 outline

Transport Layer


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 (which can add delay)

simple: no connection state at sender, receiver

small segment header

no congestion control: UDP can blast away as fast as desired

UDP worm (Slammer)

UDP: User Datagram Protocol [RFC 768]

Transport Layer


Udp based worm slammer

UDP-based Worm: Slammer

  • Bandwidth-limited worm

    • Severely congested Internet

    • Stopped ATM, Flight checking, …

  • Worm code flow:

    • Exploit code (buffer overflow)

    • Generate random target IP address x:

    • Sendto() worm code to x on udp port 1434

  • Fast spreading worm code (Jan. 2003)

    • Single UDP packet: 376 bytes

    • Average scan rate: 4000 scans/sec

    • Infect 90% in 10 minutes

    • ~ 100,000 infected in an hour

  • TCP-based worm is much slower

    • TCP connection setup

      • Connect() is a blocking call

    • Multiple threads for spreading

Transport Layer


Udp more

often used for streaming multimedia apps

loss tolerant

rate sensitive

other UDP uses

DNS

SNMP

reliable transfer over UDP: add reliability at application layer

application-specific error recovery!

UDP: more

32 bits

source port #

dest port #

Length, in

bytes of UDP

segment,

including

header

checksum

length

Application

data

(message)

UDP segment format

Transport Layer


Udp checksum

Sender:

treat segment contents as sequence of 16-bit integers

checksum: 1’s complement of addition of segment contents

sender puts checksum value into UDP checksum field

Receiver:

Add all received 16-bit segments, including checksum

check if result is 1111 1111 1111 1111:

NO - error detected

YES - no error detected. But maybe errors nonetheless? More later ….

UDP checksum

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

Transport Layer


Internet checksum example

Internet Checksum Example

  • Note

    • When adding numbers, a carryout from the most significant bit needs to be added to the result

  • 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

Transport Layer


Internet checksum example 2

Internet Checksum Example 2

  • Suppose a 6-bytes packet content is

    • 0xABCC, 0x960B, 0x5A3D

      What is the checksum for this packet?

      0x is a hexadecimal representation that each symbol (0-9, A-F) represents 4 bits binary within the value of 0-15. For more details see: http://en.wikipedia.org/wiki/Hexadecimal

      Normal summation: 0xABCC+0x960B+0x5A3D = 0x19C14

      Wrap up carry-out value: 0x9C14 + 0x1 = 0x9C15

      So the checksum is: 0xFFFF – 0x9C15 = 0x63EA

Transport Layer


Chapter 3 outline3

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

Chapter 3 outline

Transport Layer


Principles of reliable data transfer

important in app., transport, link layers

top-10 list of important networking topics!

characteristics of unreliable channel will determine complexity of reliable data transfer protocol (rdt)

Principles of Reliable data transfer

u

Network layer

Transport Layer


Reliable data transfer getting started

rdt_send():called from above, (e.g., by app.). Passed data to

deliver to receiver upper layer

deliver_data():called by rdt to deliver data to upper

udt_send():called by rdt,

to transfer packet over

unreliable channel to receiver

udt_rcv():called when packet arrives on rcv-side of channel

Reliable data transfer: getting started

send

side

receive

side

u

Transport Layer


Reliable data transfer getting started1

We’ll:

incrementally develop sender, receiver sides of reliable data transfer protocol (rdt)

consider only unidirectional data transfer

but control info will flow on both directions!

use finite state machines (FSM) to specify sender, receiver

event

state

1

state

2

actions

Reliable data transfer: getting started

event causing state transition

actions taken on state transition

state: when in this “state” next state uniquely determined by next event

Transport Layer


Rdt1 0 reliable transfer over a reliable channel

Assumption: underlying channel perfectly reliable

no bit errors

no loss of packets

separate FSMs for sender, receiver:

sender sends data into underlying channel

receiver read data from underlying channel

Rdt1.0: reliable transfer over a reliable channel

rdt_send(data)

udt_rcv(packet)

Wait for call from below

Wait for call from above

extract (packet,data)

deliver_data(data)

packet = make_pkt(data)

udt_send(packet)

Only need to chop bit-stream

data into packets and send

receiver

sender

Modern Internet packet has Maximum Transition

Unit (MTU) of 1500 Bytes (Ethernet)

Transport Layer


Rdt2 0 channel with bit errors

Assumption #1: underlying channel may flip bits in packet

checksum to detect bit errors

Assumption # 2: no packet will be lost

the question: how to recover from errors:

acknowledgements (ACKs): receiver explicitly tells sender that pkt received OK

negative acknowledgements (NAKs): receiver explicitly tells sender that pkt had errors

sender retransmits pkt on receipt of NAK

new mechanisms in rdt2.0 (beyond rdt1.0):

Error detection (checksum)

Receiver feedback: control msgs (ACK,NAK) rcvr->sender

Sender retransmit if NAK

Rdt2.0: channel with bit errors

Transport Layer


Rdt2 0 fsm specification

Wait for ACK or NAK

udt_rcv(rcvpkt) &&

corrupt(rcvpkt)

udt_send(NAK)

Wait for call from below

rdt2.0: FSM specification

rdt_send(data)

receiver

sndpkt = make_pkt(data, checksum)

udt_send(sndpkt)

udt_rcv(rcvpkt) &&

isNAK(rcvpkt)

Wait for call from above

udt_send(sndpkt)

udt_rcv(rcvpkt) && isACK(rcvpkt)

L

sender

udt_rcv(rcvpkt) &&

notcorrupt(rcvpkt)

L : means no action

extract(rcvpkt,data)

deliver_data(data)

udt_send(ACK)

Transport Layer


Rdt2 0 operation with no errors

Wait for ACK or NAK

rdt_rcv(rcvpkt) &&

corrupt(rcvpkt)

udt_send(NAK)

rdt2.0: operation with no errors

rdt_send(data)

snkpkt = make_pkt(data, checksum)

udt_send(sndpkt)

rdt_rcv(rcvpkt) &&

isNAK(rcvpkt)

Wait for call from above

udt_send(sndpkt)

rdt_rcv(rcvpkt) && isACK(rcvpkt)

Wait for call from below

L

rdt_rcv(rcvpkt) &&

notcorrupt(rcvpkt)

extract(rcvpkt,data)

deliver_data(data)

udt_send(ACK)

Transport Layer


Rdt2 0 error scenario

Wait for ACK or NAK

rdt_rcv(rcvpkt) &&

corrupt(rcvpkt)

udt_send(NAK)

rdt2.0: error scenario

rdt_send(data)

snkpkt = make_pkt(data, checksum)

udt_send(sndpkt)

rdt_rcv(rcvpkt) &&

isNAK(rcvpkt)

Wait for call from above

udt_send(sndpkt)

udt_rcv(rcvpkt) && isACK(rcvpkt)

Wait for call from below

L

udt_rcv(rcvpkt) &&

notcorrupt(rcvpkt)

extract(rcvpkt,data)

deliver_data(data)

udt_send(ACK)

Transport Layer


Rdt2 0 has a fatal flaw

What happens if ACK/NAK corrupted?

sender doesn’t know what happened at receiver!

Time-out and retransmit

can’t just retransmit: possible duplicate

Handling duplicates:

sender retransmits current pkt if ACK/NAK garbled

sender adds sequence number to each pkt

receiver discards (doesn’t deliver up) duplicate pkt

stop and wait

rdt2.0 has a fatal flaw!

Sender sends one packet,

then waits for receiver

response

Transport Layer


Rdt2 1 sender handles garbled ack naks

Wait for ACK or NAK 0

Wait for

call 1 from above

Wait for ACK or NAK 1

rdt2.1: sender, handles garbled ACK/NAKs

rdt_send(data)

sndpkt = make_pkt(0, data, checksum)

udt_send(sndpkt)

udt_rcv(rcvpkt) &&

( corrupt(rcvpkt) ||

isNAK(rcvpkt) )

Wait for call 0 from above

udt_send(sndpkt)

udt_rcv(rcvpkt)

&& notcorrupt(rcvpkt)

&& isACK(rcvpkt)

udt_rcv(rcvpkt)

&& notcorrupt(rcvpkt)

&& isACK(rcvpkt)

L

L

udt_rcv(rcvpkt) &&

( corrupt(rcvpkt) ||

isNAK(rcvpkt) )

rdt_send(data)

sndpkt = make_pkt(1, data, checksum)

udt_send(sndpkt)

udt_send(sndpkt)

Transport Layer


Rdt2 1 receiver handles garbled ack naks

Wait for

0 from below

Wait for

1 from below

rdt2.1: receiver, handles garbled ACK/NAKs

udt_rcv(rcvpkt) && notcorrupt(rcvpkt)

&& has_seq0(rcvpkt)

extract(rcvpkt,data)

deliver_data(data)

sndpkt = make_pkt(ACK, chksum)

udt_send(sndpkt)

udt_rcv(rcvpkt) && (corrupt(rcvpkt)

udt_rcv(rcvpkt) && (corrupt(rcvpkt)

sndpkt = make_pkt(NAK, chksum)

udt_send(sndpkt)

sndpkt = make_pkt(NAK, chksum)

udt_send(sndpkt)

udt_rcv(rcvpkt) &&

not corrupt(rcvpkt) &&

has_seq1(rcvpkt)

udt_rcv(rcvpkt) &&

not corrupt(rcvpkt) &&

has_seq0(rcvpkt)

sndpkt = make_pkt(ACK, chksum)

udt_send(sndpkt)

sndpkt = make_pkt(ACK, chksum)

udt_send(sndpkt)

udt_rcv(rcvpkt) && notcorrupt(rcvpkt)

&& has_seq1(rcvpkt)

extract(rcvpkt,data)

deliver_data(data)

sndpkt = make_pkt(ACK, chksum)

udt_send(sndpkt)

Why ACK for

wrong sequence packet?

Transport Layer


Rdt2 1 discussion

Sender:

seq # added to pkt

two seq. #’s (0,1) will suffice. Why?

must check if received ACK/NAK corrupted

twice as many states

state must “remember” whether “current” pkt has 0 or 1 seq. #

Receiver:

must check if received packet is duplicate

state indicates whether 0 or 1 is expected pkt seq #

note: receiver can not know if its last ACK/NAK received OK at sender

rdt2.1: discussion

Transport Layer


  • Login