Reliable Data Transfer over UDP
TCP-style reliability built by hand on top of UDP, with sliding windows, acknowledgments, timeouts and packet recovery, in C.

UDP doesn’t guarantee anything: packets can show up late, out of order, or not at all. For this project I wrote a file transfer protocol in C on top of UDP that still gets the whole file across, in order.
What’s in it
- Sliding-window flow control, so many packets can be in flight at once.
- Acknowledgments and timeouts, so a lost packet gets noticed and resent.
- Recovery, so packets that arrive out of order, or twice, still add up to the exact file.
After building it myself, I actually understand what TCP is doing every time I load a webpage. This project was definitely one of the most difficult assignments I had during my time in undergrad, and I was very happy when it finally passed all of the tests.