This document discusses various data link control protocols. It begins by explaining how data is packaged into frames at the data link layer, using framing techniques like fixed-size and variable-size framing. The key responsibilities of the data link layer are then introduced as flow control and error control. Several protocols are presented that implement these functions on both noiseless and noisy channels, including the simplest protocol, stop-and-wait protocol, and various automatic repeat request (ARQ) protocols. Worked examples demonstrate how these protocols operate in different scenarios.