In this project, you will implement the Go-back-N automatic repeat request (ARQ) scheme and carry out a number of experiments to evaluate its performance. In the process I expect that you will develop a good understanding of ARQ schemes and reliable data transfer protocols and build a number of fundamental skills related to writing transport layer services, including: • encapsulating application data into transport layer segments by including transport headers, • buffering and managing data received from, or to be delivered to, the application, • managing the window size at the sender, • computing checksums, and • using the UDP socket interface.