This project implements a Reliable Data Transfer protocol (RDT 3.0) over UDP using Python socket programming.
Since UDP is unreliable, this project ensures reliable communication using:
- Stop-and-Wait protocol
- Acknowledgements (ACKs)
- Retransmissions
- Packet loss simulation
- Reliable file transfer over UDP
- Packet loss simulation
- Timeout handling and retransmission
- Client-server communication
- Logging for packet tracking
- Python
- Socket Programming
- UDP Protocol
- Wireshark (optional analysis)
src/
client_basic.py
server_basic.py
client_reliable.py
server_reliable.py
docs/
output.pngpython src/server_reliable.pypython src/client_reliable.pySee docs/output.png
To further validate the implementation, network traffic was analyzed using Wireshark during the file transfer process.
- UDP packets were exchanged between the client and server on port 9999
- Each data packet sent by the server was followed by an ACK from the client
- Sequence numbers (0 and 1) were observed, confirming the Stop-and-Wait protocol
- Retransmissions occurred when packets were lost (simulated), verifying reliability
- Communication is connectionless (UDP), but reliability is achieved through application-layer logic
- ACK packets ensure correct delivery and ordering of data
- Timeout and retransmission mechanisms successfully handle packet loss
The Wireshark analysis confirms that the implemented system successfully mimics reliable data transfer (RDT 3.0) over an unreliable protocol like UDP.
- Reliable Data Transfer (RDT 3.0)
- Stop-and-Wait Protocol
- UDP vs TCP
- Packet Loss Handling
- Sliding Window Protocol
- GUI-based visualization
- Performance analysis
Prasann Kumar