- Implement a reliable file transfer system over UDP using custom logic to handle:
- Packet loss
- Reordering
- Duplicate suppression
- Develop a simple web-based or desktop UI to improve usability and allow file transfers via a graphical interface.
- Set up basic UDP client and server
- Implement file reading and sending logic on the client
- Implement file writing logic on the server
- Add packet sequence numbering
- Implement basic ACK system
- Add retransmission mechanism with timeouts
- Define and document end-of-file signaling
- Test file transfers under normal conditions
- Simulate packet loss and validate reliability
- Log transfer statistics (e.g., number of packets sent, retransmissions)
- Basic CLI interface to choose file and mode
- Web-based or desktop GUI for file selection and status display
- Dockerize for isolated testing
Compact alternating 3‑way handshake (packet, seq, and state changes):
- Sender (IDLE → SYN_SENT): sends
SYN(seq=0); waits forSYN-ACK(retry on timeout - not implemented yet). - Receiver (IDLE → SYN_RECV → ACK_SENT): receives
SYN(seq=0), verifies seq; sendsSYN-ACK(seq=1); waits forACK. - Sender (SYN_SENT → SYN_ACK → ACK_SENT → CONNECTED): receives
SYN-ACK(seq=1), verifies seq; sendsACK(seq=1) and transitions toCONNECTED. - Receiver (ACK_SENT → CONNECTED): receives
ACK(seq=1), verifies seq; transitions toCONNECTED(ready to transfer).
Notes: retries/timeouts and seq verification are applied at each wait step; mismatches trigger retries or aborts.