As part of the Computer Networks course at ETH I had to solve this project. The goal was to implement a reliable sliding window transport layer on top of UDP, which is able to handle packet drops, packet corruption, flow control and packet reordering.
This git repository only contains the written solution in C.