Protocolos del nivel de enlace de datos
Un problema importante en el diseño del protocolo de enlace de datos es la manera en como se van a enviar datos y a recibir las confirmaciones. Una solución sería tener dos canales unidireccionales, uno para enviar datos y otro para recibir las confirmaciones, pero es claro que esta solución es ineficiente porque desperdiciaríamos mucho el canal de confirmaciones.
Para optimizar un poco (o mucho) el método de confirmación, el receptor puede aprovechar que la capa de red envía paquetes de respuesta al emisor y le anexa a dichos paquetes la confirmación de los paquetes recibidos. Esta forma de confirmar se le conoce como «piggybacking». El cuidado que se debe tener con esta técnica es que el receptor no espere demasiado a que exista un paquete de respuesta para enviar su confirmación, si el paquete de respuesta no llega en un tiempo alfa predeterminado, debe enviar la confirmación en un paquete por separado.
La confirmación de la recepción de marcos (o paquetes) se puede hacer de manera síncrona si el emisor, para transmitir un nuevo paquete X espera la confirmación del paquete X-1. Si el protocolo contempla enviar Y paquetes de golpe, y para enviar un paquete más requiere de la confirmación de un paquete anterior cualquiera que sea su número de secuencia, entonces estamos ante un protocolo de ventana deslizante.