This document discusses data link layer design issues and services. It describes how the data link layer encapsulates network layer packets into frames for transmission across physical layer connections. The data link layer provides reliable communication of frames between connected machines by implementing algorithms for framing, error control, and flow control. Error detection/correction codes, acknowledgments, and sequencing are used to reliably deliver frames in order. Services include unacknowledged or acknowledged connectionless delivery, and acknowledged connection-oriented delivery with established connections.