Flow and error control are important functions of the data link layer. Flow control coordinates the amount of data sent before receiving acknowledgement to prevent buffers from overflowing. Error control detects and corrects damaged frames using automatic repeat request (ARQ) protocols. Three common ARQ protocols are described: stop-and-wait, go-back-N, and selective repeat. Stop-and-wait sends one frame at a time while the others use sliding windows to allow multiple outstanding frames. Go-back-N resends frames from the last acknowledged in order, while selective repeat resends only damaged frames.