Transport Layer Part 2 Flashcards
Principles of Reliable Data Transfer
Reliable Service Implementation
Unreliable channel with reliable transport protocol creates reliable service
Principles of Reliable Data Transfer
Reliable Service Abstraction
Reliable channel creates reliable service
Principles of Reliable Data Transfer
RDT
Reliable data transfer
RDT Interfaces
RDT Interfaces
- rdt_send()
- udt_send()
- deliver_data()
- rdt_rcv()
RDT Interfaces
rdt_send()
- Called from upper layer (e.g. app)
- Passes data that has to be delivered to receiver
RDT Interfaces
deliver_data()
- Called by rdt
- Delivers data from lower to upper layer
RDT Interfaces
udt_send()
- Called by rdt
- Transfers packet over unreliable channel to receiver
RDT Interfaces
rdt_rcv()
Called when packet arrives on receiver side of channel
rdt 1.0
rdt 1.0
- Reliable transfer over reliable channel
- Separate processes for sender, receiver
rdt 1.0
rdt 1.0 Sender FSM
- enter to
wait for call
- loop with
rdt_send(data) > packet = make_pkt(data) > udt_send(packet)
rdt 1.0
rdt 1.0 Receiver FSM
- enter to
wait for call from below
- loop with
rdt_rcv(packet) > extract(packet, data) > deliver_data(data)
rdt 2.0
rdt 2.0
- unreliable channel (bit errors)
- recovers from errors using acknowledgements
rdt 2.0
ACKs
Acknowledgements, receiver explicitly tells sender that packet was received okay
rdt 2.0
NAKs
Negative acknowledgements, receiver explicitly tells sender that packet had errors. Sender retransmits packet on receipt of NAK
rdt 2.0
Stop and Wait
Sender sends one packet, then waits for receiver response
rdt 2.0
rdt 2.0 Fatal Flaws
- corrupted ACK/NAKs
- handling duplicates
rdt 2.0
Review rdt 2.0 FSM Specifications
rdt 2.1
What if ACK/NAK corrupted?
- sender doesn’t know what happened at receiver
- can’t retransmit in case of duplicates