EngineerUndergrad · 2025

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.

Diagram of the sliding-window flow control the protocol implements.

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.