19
1 of 44 Week 2 Lecture 2 – Network Layers Transport Layer – Example: TCP/UDP

Week 2 Lecture 2 – Network Layers Transport Layer – Example: TCP/UDP

Embed Size (px)

DESCRIPTION

Week 2 Lecture 2 – Network Layers Transport Layer – Example: TCP/UDP. application: supporting network applications FTP, SMTP, STTP transport: host-host data transfer TCP, UDP network: routing of datagrams from source to destination IP, routing protocols - PowerPoint PPT Presentation

Citation preview

Page 1: Week 2 Lecture 2 – Network Layers Transport Layer – Example: TCP/UDP

1 of 44

Week 2 Lecture 2 – Network Layers

Transport Layer – Example: TCP/UDP

Page 2: Week 2 Lecture 2 – Network Layers Transport Layer – Example: TCP/UDP

2

Transport layer location

• application: supporting network applications

– FTP, SMTP, STTP

• transport: host-host data transfer– TCP, UDP

• network: routing of datagrams from source to destination

– IP, routing protocols

• link: data transfer between neighboring network elements

– PPP, Ethernet

• physical: bits “on the wire”

application

transport

network

link

physical

Page 3: Week 2 Lecture 2 – Network Layers Transport Layer – Example: TCP/UDP

3 of 44

TCP/UDP Analogy

5 brothers

Mum

-- Mum, please make sure our sisters receive our Christmas cards… (Application Layer)

-- No problem, darling. (TCP)

-- I’ll try my best, but … (UDP)

NY Post Office

City P.O.

City P.O.

CA Post Office

5 Sisters

Dad

-- Dad, please make sure our brothers receive our Christmas cards… (Application Layer)

-- No problem, darling. (TCP)

-- I’ll try my best, but … (UDP)

IP Layer (routing)

Data link layer

Router

Page 4: Week 2 Lecture 2 – Network Layers Transport Layer – Example: TCP/UDP

4 of 44

Likewise, in Internet …

application

transportnetworkdata linkphysical

networkdata linkphysical

application

transportnetworkdata linkphysical

networkdata linkphysical

networkdata linkphysical

networkdata linkphysical

Host A: Christmas Picture

Host B: Christmas Picture

Router 1

Router 1A

Host 1 Host 2 networkdata linkphysical

Router 2

PicTIF

0101010101111000 …

B socket #B IP Add

Host 1 AddIdentify a frame from stream; Remove Frame Header(FH); Analyze FH and do sth like error correction; It founds out that frame is not to itself, it will install new FH and deliver it to Router 1.

Identify a frame; Remove FH; do sth. based on FH; Remove IP header; Analyze IP header and do sth like figuring out best route; Install new IP header; Install new frame header; deliver it to next host (Route 2).

Anyway, Host 1 and Route 1 do not look at TCP header and message (Picture); Only end hosts (Host A & B look at TCP header and do sth. So we say TCP is end-to-end protocol.

Note: each node finally needs to form new frame !

Page 5: Week 2 Lecture 2 – Network Layers Transport Layer – Example: TCP/UDP

5 of 44

TCP is core Internet protocol

• TCP shows the real network tricks !

• Software-controlled

• Lots of ideas

• Lots of Algorithms

• Lots of Protocols

• Attract 30% networking research

• Thousands of PhD students

Page 6: Week 2 Lecture 2 – Network Layers Transport Layer – Example: TCP/UDP

6 of 44

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

– receive side: reassembles segments into messages, passes to app layer

• more than one transport protocol available to apps

– Internet: TCP and UDP

application

transportnetworkdata linkphysical

application

transportnetworkdata linkphysical

networkdata linkphysical

networkdata linkphysical

networkdata linkphysical

networkdata linkphysicalnetwork

data linkphysical

logical end-end transport

Page 7: Week 2 Lecture 2 – Network Layers Transport Layer – Example: TCP/UDP

7 of 44Internet 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

transportnetworkdata linkphysical

application

transportnetworkdata linkphysical

networkdata linkphysical

networkdata linkphysical

networkdata linkphysical

networkdata linkphysicalnetwork

data linkphysical

logical end-end transport

Page 8: Week 2 Lecture 2 – Network Layers Transport Layer – Example: TCP/UDP

8 of 44

UDP: User Datagram Protocol : Unreliable Transport!

• “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 (no pipe)

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

Page 9: Week 2 Lecture 2 – Network Layers Transport Layer – Example: TCP/UDP

9 of 44

TCP – Reliable Transfer

Page 10: Week 2 Lecture 2 – Network Layers Transport Layer – Example: TCP/UDP

10 of 44

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)

Needed in Project #2

Page 11: Week 2 Lecture 2 – Network Layers Transport Layer – Example: TCP/UDP

11 of 44

Reliable data transfer: getting started

sendside

receiveside

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

udt_send(): called by rdt,to transfer packet over unreliable channel to

receiver

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

deliver_data(): called by rdt to deliver data to

upper

Page 12: Week 2 Lecture 2 – Network Layers Transport Layer – Example: TCP/UDP

12 of 44

Reliable data transfer: getting started

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

state1

state2

event causing state transitionactions taken on state transition

state: when in this “state” next state uniquely

determined by next eventeventactions

Page 13: Week 2 Lecture 2 – Network Layers Transport Layer – Example: TCP/UDP

13 of 44

Rdt1.0: reliable transfer over a reliable channel

• 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

Wait for call from above packet = make_pkt(data)

udt_send(packet)

rdt_send(data)

extract (packet,data)deliver_data(data)

Wait for call from

below

rdt_rcv(packet)

sender receiver

Page 14: Week 2 Lecture 2 – Network Layers Transport Layer – Example: TCP/UDP

14 of 44

Rdt2.0: channel with bit errors (but no loss)

• underlying channel may flip bits in packet– recall: UDP checksum to detect bit errors

• 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

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

Page 15: Week 2 Lecture 2 – Network Layers Transport Layer – Example: TCP/UDP

15 of 44

rdt2.0: FSM specification

Wait for call from

App

snkpkt = make_pkt(data, checksum)udt_send(sndpkt)

extract(rcvpkt,data)deliver_data(data)udt_send(ACK)

rdt_rcv(rcvpkt) && notcorrupt(rcvpkt)

rdt_rcv(rcvpkt) && isACK(rcvpkt)

udt_send(sndpkt)

rdt_rcv(rcvpkt) && isNAK(rcvpkt)

udt_send(NAK)

rdt_rcv(rcvpkt) && corrupt(rcvpkt)

Wait for ACK or

NAK

Wait for call from

below

sender

receiverrdt_send(data)

Page 16: Week 2 Lecture 2 – Network Layers Transport Layer – Example: TCP/UDP

16 of 44

rdt2.0: operation with no errors

Wait for call from above

snkpkt = make_pkt(data, checksum)udt_send(sndpkt)

extract(rcvpkt,data)deliver_data(data)udt_send(ACK)

rdt_rcv(rcvpkt) && notcorrupt(rcvpkt)

rdt_rcv(rcvpkt) && isACK(rcvpkt)

udt_send(sndpkt)

rdt_rcv(rcvpkt) && isNAK(rcvpkt)

udt_send(NAK)

rdt_rcv(rcvpkt) && corrupt(rcvpkt)

Wait for ACK or

NAK

Wait for call from

below

rdt_send(data)

1

2

3

Page 17: Week 2 Lecture 2 – Network Layers Transport Layer – Example: TCP/UDP

17 of 44

rdt2.0: error scenario

Wait for call from above

snkpkt = make_pkt(data, checksum)udt_send(sndpkt)

extract(rcvpkt,data)deliver_data(data)udt_send(ACK)

rdt_rcv(rcvpkt) && notcorrupt(rcvpkt)

rdt_rcv(rcvpkt) && isACK(rcvpkt)

udt_send(sndpkt)

rdt_rcv(rcvpkt) && isNAK(rcvpkt)

udt_send(NAK)

rdt_rcv(rcvpkt) && corrupt(rcvpkt)

Wait for ACK or

NAK

Wait for call from

below

rdt_send(data)

1

2

3

4

5

Page 18: Week 2 Lecture 2 – Network Layers Transport Layer – Example: TCP/UDP

18 of 44

rdt3.0: channels with errors and “loss”New assumption: underlying

channel can also lose packets (data or ACKs)

– checksum, seq. #, ACKs, retransmissions will be of help, but not enough

Q: how to deal with loss?– sender waits until certain

data or ACK lost, then retransmits

– yuck: drawbacks?

Approach: sender waits “reasonable” amount of time for ACK

• retransmits if no ACK received in this time

• if pkt (or ACK) just delayed (not lost):

– retransmission will be duplicate, but use of seq. #’s already handles this

– receiver must specify seq # of pkt being ACKed

• requires countdown timer

Page 19: Week 2 Lecture 2 – Network Layers Transport Layer – Example: TCP/UDP

19 of 44

rdt3.0 sender

sndpkt = make_pkt(0, data, checksum)udt_send(sndpkt)start_timer

rdt_send(data)

Wait for

ACK0

rdt_rcv(rcvpkt) && ( corrupt(rcvpkt) ||isACK(rcvpkt,1) )

Wait for call 1 from

above

sndpkt = make_pkt(1, data, checksum)udt_send(sndpkt)start_timer

rdt_send(data)

rdt_rcv(rcvpkt) && notcorrupt(rcvpkt) && isACK(rcvpkt,0)

rdt_rcv(rcvpkt) && ( corrupt(rcvpkt) ||isACK(rcvpkt,0) )

rdt_rcv(rcvpkt) && notcorrupt(rcvpkt) && isACK(rcvpkt,1)

stop_timerstop_timer

udt_send(sndpkt)start_timer

timeout

udt_send(sndpkt)start_timer

timeout

rdt_rcv(rcvpkt)

Wait for call 0 from

above

Wait for

ACK1

rdt_rcv(rcvpkt)