SACK, o Selective Acknowledgment, es una extensión crítica del Transmission Control Protocol (TCP) definida en la RFC 2018 (y posteriormente actualizada por la RFC 6675). A diferencia del mecanismo de acuse de recibo acumulativo estándar de TCP (ACK), que solo indica el siguiente byte esperado, SACK permite al receptor especificar explícitamente rangos o bloques de datos que han sido recibidos y almacenados en el buffer, incluso si no llegaron en el orden secuencial esperado. Esto es particularmente útil en escenarios donde se pierden múltiples paquetes, ya que el emisor puede retransmitir selectivamente solo los segmentos de datos que realmente faltan, en lugar de retransmitir todos los segmentos a partir del primer paquete perdido.

La implementación de SACK es ubicua en los sistemas operativos modernos y las pilas de red. Todos los sistemas operativos de propósito general, como Linux, Windows, macOS y FreeBSD, incluyen soporte para SACK en sus implementaciones de TCP/IP. Esto significa que cualquier aplicación que utilice TCP para la comunicación (navegadores web, bases de datos distribuidas, sistemas de streaming, etc.) se beneficia automáticamente de SACK cuando se comunica con otro host que también lo soporta. Herramientas de análisis de red como Wireshark o tcpdump muestran los bloques SACK en los encabezados TCP, permitiendo a los ingenieros diagnosticar problemas de rendimiento y retransmisiones. En entornos de alta latencia o con tasas de pérdida de paquetes significativas, como redes inalámbricas o WANs, SACK es fundamental para mantener un rendimiento aceptable y una utilización eficiente del ancho de banda.

Para un Arquitecto de Sistemas, comprender SACK es crucial para diseñar y optimizar aplicaciones distribuidas, especialmente aquellas sensibles a la latencia y el rendimiento de la red. Aunque SACK opera a un nivel inferior (capa de transporte), su presencia impacta directamente en la elección de protocolos y la configuración de la red. En sistemas donde se espera una alta pérdida de paquetes (ej. IoT sobre redes inestables, microservicios en la nube con interconexiones WAN), saber que TCP con SACK manejará las retransmisiones de manera más eficiente puede influir en la decisión de usar TCP en lugar de UDP con una capa de fiabilidad personalizada. Sin SACK, la recuperación de errores en TCP sería mucho más lenta, llevando a un 'head-of-line blocking' más severo y una reducción drástica del throughput. Por lo tanto, aunque no es una decisión de diseño a nivel de aplicación, SACK es un factor subyacente que permite a TCP ser un protocolo robusto y eficiente para la mayoría de las cargas de trabajo de red en arquitecturas modernas.