1. Implemented a reliable transport layer protocol similar to QUIC having features of TCP like
congestion control (stop and wait, sliding window), flow control (Slow start, AIMD) with
UDP as transport layer primitive.
2. All the different components of the protocol like adjusting the sender window, adjusting the receiver window, making packets out of the sender buffer, receiving packets and sending acks ran in multithreaded fashion.
3. Used locks whereever a race condition arised due to concurrent access.