Presentation is loading. Please wait.

Presentation is loading. Please wait.

Transport Layer 3-1 08 - Transport Layer. Reliable data transfer: getting started send side receive side rdt_send(): called from above, (e.g., by app.).

Similar presentations


Presentation on theme: "Transport Layer 3-1 08 - Transport Layer. Reliable data transfer: getting started send side receive side rdt_send(): called from above, (e.g., by app.)."— Presentation transcript:

1 Transport Layer 3-1 08 - Transport Layer

2 Reliable data transfer: getting started send side receive side rdt_send(): called from above, (e.g., by app.). 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 Transport Layer 3-2

3 Reliable data transfer: getting started We’ll: r incrementally develop sender, receiver sides of reliable data transfer protocol (rdt) r consider only unidirectional data transfer m but control info will flow on both directions! r use finite state machines (FSM) to specify sender, receiver state 1 state 2 event causing state transition actions taken on state transition state: when in this “state” next state uniquely determined by next event event actions Transport Layer 3-3

4 R eliable transfer over a reliable channel r underlying channel perfectly reliable m no bit errors m no loss of packets r separate FSMs for sender, receiver: m sender sends data into underlying channel m 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 Transport Layer 3-4

5 Channel with bit errors r underlying channel may flip bits in packet m checksum to detect bit errors r the question: how to recover from errors: m acknowledgements (ACKs): receiver explicitly tells sender that pkt received OK m negative acknowledgements (NAKs): receiver explicitly tells sender that pkt had errors m sender retransmits pkt on receipt of NAK  new mechanisms in rdt2.0 (beyond rdt1.0 ): m error detection m receiver feedback: control msgs (ACK,NAK) rcvr->sender Imagine a telephone conversation. How do humans recover from “errors” during conversation? Transport Layer 3-5

6 Channel with bit errors r underlying channel may flip bits in packet m checksum to detect bit errors r the question: how to recover from errors: m acknowledgements (ACKs): receiver explicitly tells sender that pkt received OK m negative acknowledgements (NAKs): receiver explicitly tells sender that pkt had errors m sender retransmits pkt on receipt of NAK Transport Layer 3-6

7 Group Assignment #1 Divide into groups of 4 and modify our original FSM to include ACKs and NACKs. Note that an ACK is sent when the packet arrives at the receiver with no errors and a NACK is sent when the packet is corrupted in transmission. 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 Transport Layer 3-7

8 On the Board Let’s discuss your solution (Please make any changes to your quiz notes if necessary). Transport Layer 3-8

9 Group Assignment #2 What happens if ACK/NAK corrupted? r sender doesn’t know what happened at receiver! r can’t just retransmit: possible duplicates Transport Layer 3-9

10 On the Board Let’s discuss your solution (Please make any changes to your quiz notes if necessary). Key: Introduce sequence numbers. Stop and Wait! Transport Layer 3-10

11 Group Assignment #3 How would you replace NACKs in your FSM? Transport Layer 3-11

12 On the Board Let’s discuss your solution (Please make any changes to your quiz notes if necessary). Key: instead of NAK, receiver sends ACK for last pkt received OK r receiver must explicitly include seq # of pkt being ACKed r duplicate ACK at sender results in same action as NAK: retransmit current pkt Transport Layer 3-12

13 Group Assignment #4 What if the underlying channels can also lose packets (data or ACKs)? Transport Layer 3-13

14 On the Board Let’s discuss your solution (Please make any changes to your quiz notes if necessary). Key: sender waits “reasonable” amount of time for ACK r retransmits if no ACK received in this time r if pkt (or ACK) just delayed (not lost): m retransmission will be duplicate, but use of seq. #’s already handles this m receiver must specify seq # of pkt being ACKed r requires countdown timer Transport Layer 3-14

15 rdt3.0 in action Transport Layer 3-15

16 rdt3.0 in action Transport Layer 3-16

17 For Next Time… Pipelined Protocols Take a look at the Go-Back-N and Selective Repeat protocol applets on the textbook website. How do these two protocols work? Transport Layer 3-17


Download ppt "Transport Layer 3-1 08 - Transport Layer. Reliable data transfer: getting started send side receive side rdt_send(): called from above, (e.g., by app.)."

Similar presentations


Ads by Google