Open In App

Reliable Data Transfer (RDT) 3.0

Improve
Improve
Like Article
Like
Save
Share
Report

RDT 3.0 is the last and best version of the Reliable Data Transfer protocol. Before RDT 3.0, RDT 2.2 was introduced, to account for the channel with bit errors in which bit errors can also occur in acknowledgments. As the design of RDT 2.2 is a stop and wait for protocol. If there is a network issue and the acknowledgment/packet is lost. The sender waits infinitely for it.

How RDT 3.0 solves this problem?

RDT 3.0 introduces a timer at the sender side if the acknowledgment is not received within a particular time the sender resends the packet. This method solves the issue of packet loss.

Representation in Finite State Machine:

Sender’s FSM

Reliable Data Transfer (3.0): Sender FSM

Reliable Data Transfer (3.0): Sender FSM

How it Works:

State-1(Top-Left): This is the Start state in the sender’s FSM which is called “wait for call 0 from above”. It waits till it receives a message to start from the application layer. In this state, the datagram is created with the sequence number “0” in its header and payload as a message in its body. Finally, the packet is pushed into the network, and execution moves to the next state.

State-2(Top-Right): This state confirms whether the receiver has received the packet or not. state check that if the received acknowledgment is not corrupt, has the sequence number “1”, and is reached within the time. If these two criteria are satisfied the execution moves to the next state else the state resends the packet.

State-3(Bottom-Right): This state in the sender’s FSM is called “wait for a call 1 from above”. It waits till it receives a message to start from the application layer. In this state, the datagram is created with the sequence number “1” in its header and payload as a message in its body. Finally, the packet is pushed into the network, and execution moves to the next state.

State-4(Bottom-Left): This state confirms whether the receiver has received the packet or not. state check that if the received acknowledgment is not corrupt, has the sequence number “0”, and is reached within the time. If these two criteria are satisfied the execution moves to the next state else the state resends the packet.

Receiver’s FSM

Reliable Data Transfer (3.0): Receiver FSM

Reliable Data Transfer (3.0): Receiver FSM

How it works:

The receiver’s FSM is the same as RDT 2.2 receiver’s FSM

State-1(Left): This is the First State in the receiver’s FSM which is called “wait for call 0 from below”. This state whether the received packet has sequence number “0” and is not corrupted. If these conditions satisfy this state creates an acknowledgment packet with the sequence “0” and pushes it into the network which signifies the correct packet is received, the execution moves to the next state else it creates an acknowledgment packet with the sequence “1” and pushes it into the network which signifies the correct packet is not received.

State-2(Right): This is the First State in the receiver’s FSM which is called “wait for call 1 from below”. This state whether the received packet has sequence number “1” and is not corrupted. if these conditions satisfy This state creates an acknowledgment packet with the sequence “1” and pushes it into the network which signifies the correct packet is received, the execution moves to the next state else it creates an acknowledgment packet with the sequence “0” and pushes it into the network which signifies the correct packet is not received.


Last Updated : 12 Sep, 2022
Like Article
Save Article
Previous
Next
Share your thoughts in the comments
Similar Reads