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
Comp 361, Spring 2005 3: Transport Layer 21 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
Comp 361, Spring 2005 3: Transport Layer 22 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
Incremental Improvements O rdt1.0: assumes every packet sent arrives and no errors introduced in transmission o rdt2.0: assumes every packet sent arrives, but some errors(bit flips)can occur within a packet Introduces concept of Ack and NAK o rdt2. 1: deals with corrupted ACKS/NAKS o rdt2.2: like rdt 2. 1 but does not need NaKs o Rdt3.0: Allows packets to be lost
Comp 361, Spring 2005 3: Transport Layer 23 Incremental Improvements rdt1.0: assumes every packet sent arrives, and no errors introduced in transmission rdt2.0: assumes every packet sent arrives, but some errors (bit flips) can occur within a packet. Introduces concept of ACK and NAK rdt2.1: deals with corrupted ACKS/NAKS rdt2.2: like rdt2.1 but does not need NAKs Rdt3.0: Allows packets to be lost
Rdt1.0: reliable transfer over a reliable channel O underlying channel perfectly reliable o no bit errors 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 ait for send(data) rat rcv(packet) call from call from extract (packet, data) above packet =make_ _pkt(data) below deliver_ data(data) udt send(packet) sender receiver
Comp 361, Spring 2005 3: Transport Layer 24 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
Rdt2.0: channel with bit errors O underlying channel may flip bits in packet o recall: UdP checksum to detect bit errors o the question: how to recover from errors o acknowledgements(ACKs): receiver explicitly tells sender that pkt received oK o negative acknowledgements(NAKs ): receiver explicitly tells sender that pkt had errors o sender retransmits pkt on receipt of nak o human scenarios using ACKs, NAKs O new mechanisms in rdt2 o(beyond rdtl. o) o error detection o receiver feedback: control msgs(ACk, NAKrcvr->sender
Comp 361, Spring 2005 3: Transport Layer 25 Rdt2.0: channel with bit errors 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 human scenarios using ACKs, NAKs? new mechanisms in rdt2.0 (beyond rdt1.0): error detection receiver feedback: control msgs (ACK,NAK) rcvr->sender