This document discusses various data link layer protocols for flow control. It describes an unrestricted simplex protocol with infinite buffer capacity and no need for flow control. For a simplex stop-and-wait protocol, a sequence number is needed to distinguish frames when the channel is noisy. A simplex protocol for a noisy channel uses positive acknowledgement and retransmission. This becomes a duplex channel, requiring a type field and ability to piggyback acknowledgements. A sliding window protocol maintains a sender and receiver window of allowed sequence numbers. It provides flexibility while ensuring ordered delivery to the network layer. Different sliding window protocols are examined, including ones using go-back-N and selective repeat.