Reliable data transfer: getting started rdt send(: called from above deliver data(): called by (e.g, by app. ) Passed data to rdt to deliver data to upper deliver to receiver upper layer rdt send()Idata data Deliver data() send reliable data reliable data receive transfer protocol transfer protocol side (sending side 〔 receiving side) side udt send( packet packet rat rcv unreliable channel udt send(: called by rdt rdt rcv(): called when packet to transfer packet over arrives on rcv-side of channel unreliable channel to receiver 3: Transport Layer 3a-11
3: Transport Layer 3a-11 Reliable data transfer: getting started send side receive side 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
Reliable data transfer: getting started We'll D incrementally develop sender, receiver sides of reliable data transfer protocol (rdt) O consider only unidirectional data transfer o but control info will flow on both directions O use finite state machines(FSm) to specify sender receiver event causing state fransition actions taken on state transition state: when in this state next state state state uniquely determined event 2 by next event actions 3: Transport Layer 3a-12
3: Transport Layer 3a-12 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 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
Rdt1.0: reliable transfer over a reliable channel O underlying channel perfectly reliable o no bit erros o no loss of packets O separate FSMs for sender receiver o sender sends data into underlying channel o receiver read data from underlying channel wait for rdt send(data rdt_rcv(packet) wait for call from abov make_pkt(packet, data)(call from below lextract(packet, data) udt_send(packet) deliver data(data) (a)rdt. 0: sending side (b)rdt 1.0: receiving side 3: Transport Layer 3a-13
3: Transport Layer 3a-13 Rdt1.0: reliable transfer over a reliable channel underlying channel perfectly reliable no bit erros no loss of packets separate FSMs for sender, receiver: sender sends data into underlying channel receiver read data from underlying channel