El término «acuse de recibo» o ACK, proveniente del inglés ACKNOWLEDGEMENT, se refiere a un mensaje corto en el cual el receptor informa que los datos enviados por el emisor de una comunicación han sido recibidos.
Este concepto general se aplica en diversas situaciones. Por ejemplo, la noción de acuse de recibo se emplea en ciertas comunicaciones postales, donde es un formulario que el destinatario firma al recibir su carta, el cual es luego entregado al remitente.
En el contexto de los sistemas de comunicación entre equipos informáticos, el acuse de recibo es un aviso que una computadora (ordenador) envía a otra tras haber recibido un mensaje. El mensaje puede informar que los datos llegaron o que tuvieron algún problema al ser recibidos. El envío de mensajes entre ordenadores también puede contar con un código detector de errores para proteger la integridad de los datos; si el dispositivo de destino tiene las herramientas para llevar a cabo este proceso, entonces en el acuse de recibo puede quedar constancia del estado en el cual haya recibido el mensaje, es decir, si ha llegado completo y sin errores o no.
ACK y NACK: Pilares de la Fiabilidad en Redes
Para garantizar la fiabilidad en la transmisión de datos, los ACK (Acknowledgements o acuses de recibo) y los NACK (Negative Acknowledgements o acuses negativos) son fundamentales. Cuando los paquetes de datos llegan a su destino, el receptor envía un ACK, confirmando la recepción exitosa.
En cambio, un NACK, abreviatura de negative acknowledgement, indica que el receptor no ha recibido correctamente un paquete de datos, ya sea porque se perdió o se corrompió. Esta señal es crucial, ya que indica al emisor que debe retransmitir los paquetes faltantes.
Lea también: ¿Qué es el Acuse de Recibo de la Declaración?
Los ACK verifican la entrega, mientras que los NACK gestionan los errores. Sin los NACK, los emisores tendrían que depender únicamente de temporizadores para detectar problemas con los paquetes, lo que haría la transmisión mucho menos eficiente. En conjunto, los mensajes ACK y NACK son esenciales para garantizar una transmisión de datos fiable.
Un ejemplo claro de su importancia se observa en las videollamadas, donde los ACK y los NACK son esenciales para que la comunicación funcione con fluidez. Los NACK indican errores: señalan paquetes perdidos o dañados y activan su retransmisión. En conjunto, los ACK y los NACK hacen posible una comunicación por vídeo fiable y sin interrupciones.
El Protocolo ARQ (Automatic Repeat Request)
La Solicitud de Repetición Automática (ARQ) es un método de control de errores que utiliza acuses de recibo y timeouts (tiempos de espera) para retransmitir paquetes de datos. ARQ se usa tanto en Internet como en redes móviles.
En un sistema sin acuses de recibo, un mensaje se transmitiría varias veces sin importar si el receptor ya ha recibido una copia previamente. ¡Eso es un desperdicio! El emisor podría haber transmitido nueva información en lugar de volver a enviar estos mensajes repetidos. Un acuse de recibo es un mensaje breve que el receptor envía para avisar al emisor de que recibió un mensaje.
Funcionamiento de ARQ Parada-y-Espera
Consideremos el protocolo ARQ Parada-y-Espera para entender su funcionamiento:
Lea también: ¿Cómo registrar mi empresa en el RFC?
- Transmisión exitosa: El emisor envía un mensaje, por ejemplo, "Hola". Si el receptor lo recibe correctamente, responde con un ACK. El emisor, al recibir el ACK antes de que se cumpla el timeout, sabe que el paquete se recibió bien.
- Mensaje perdido: Si el mensaje enviado por el emisor se pierde en el camino, el receptor no envía un ACK. Cuando el timeout del emisor se cumple sin haber recibido un ACK, el emisor retransmite el mensaje.
- ACK perdido: Puede ocurrir que el mensaje enviado por el emisor se reciba correctamente, pero el ACK enviado por el receptor se pierda. De nuevo, cuando se cumple el timeout, el emisor no ha recibido el ACK y retransmite el mensaje. El receptor recibe el mensaje duplicado y, de nuevo, envía el ACK.
Estos ejemplos muestran que el protocolo ARQ Parada-y-Espera maneja las pérdidas de paquetes de datos y ACKs bastante bien.
Desafíos y Soluciones: ACKs Retrasados y Números de Secuencia
Sin embargo, pueden surgir problemas cuando los ACKs se retrasan y los timeouts se cumplen antes de que los ACKs puedan ser recibidos. En un escenario donde el emisor envía un primer mensaje, el receptor lo recibe y envía un ACK de vuelta, pero el timeout del emisor se cumple antes de que reciba ese ACK. Esto lleva al emisor a retransmitir un segundo mensaje. Y justo después, el emisor podría recibir el ACK retrasado. La confusión surge sobre a qué paquete se refiere este ACK: ¿al primer mensaje o al segundo?
Para resolver esta ambigüedad, se utiliza un número de secuencia. Este es un número escogido por el emisor e incluido en la cabecera del paquete. Por ejemplo, si el emisor envía "Hola, 0", significa que es un mensaje "Hola" con un número de secuencia 0. Al recibir este paquete, el receptor enviaría "ACK, 1", lo que significa "he recibido el paquete 0, puedes enviarme el paquete 1". Esto permite que tanto el emisor como el receptor asocien cada acuse de recibo con el mensaje correcto, incluso si hay retrasos o retransmisiones.
Consideraciones Adicionales: Retransmisiones, Duplicados y la Duración del Timeout
La eficiencia de los protocolos ARQ se evalúa considerando el número de retransmisiones, que son las veces que un paquete necesitó ser reenviado, y los duplicados, que son el número de veces que el receptor recibió retransmisiones innecesarias. Por ejemplo, si un paquete necesitó ser reenviado 7 veces, y de esas retransmisiones, 2 fueron innecesarias para el receptor, se habrían producido 2 duplicados.
La duración del timeout es un factor crítico para el rendimiento del protocolo. Si el timeout es muy corto, podría llevar a retransmisiones prematuras de paquetes que simplemente se están demorando, incrementando el tráfico de red con duplicados innecesarios. Por el contrario, si el timeout es muy largo, el sistema tardaría más en detectar un paquete perdido, lo que afectaría la latencia y la fluidez de la comunicación. En protocolos de comunicación de mayor complejidad, además de los acuses de recibo, pueden incluirse otros elementos en el mensaje, como datos acerca de incidencias en la red o la petición de reenvío de algunas tramas.
Lea también: Guía para recuperar tu Acuse de Recibo SAT
