El nivel de enlace de datos proporciona mecanismos para controlar el flujo de datos y detectar errores entre dispositivos. Realiza tres funciones principales: control de disciplina de línea para indicar quién puede transmitir, control de flujo para regular la cantidad de datos enviados, y control de errores para detectar y corregir datos dañados. El control de flujo se implementa mediante los métodos de parada y espera o ventana deslizante, mientras que el control de errores se basa principalmente en la petición de repetición automática con vuelta atrás.