Resumen
- Un ACK acumulativo asegura que todos los bytes anteriores a un número llegaron. Un solo hueco impide mover esa frontera aunque el receptor ya tenga muchos bytes posteriores.
- SACK negocia una lista breve de bloques no contiguos. Mejora la evidencia del emisor sin alterar el significado del ACK ordinario ni convertir al receptor en jefe de la recuperación.
- La lista es incompleta y revocable. El emisor conserva los datos, respeta el control de congestión y sólo considera definitivo el avance acumulativo.
La información escondida detrás de 5000
El receptor espera el byte 5000. Ese segmento se pierde, pero los siete siguientes llegan y ocupan de 5500 a 9000. En la cabecera TCP, el número de acuse continúa en 5000. No puede prometer 9000 porque faltan los primeros quinientos bytes del intervalo.
Para la integridad de la corriente, esa respuesta es impecable. Para decidir una retransmisión, resulta ambigua. El emisor no sabe si sólo falta la primera pieza o si los ACK repetidos pertenecen a una red mucho más dañada. Reenviar todo duplica trabajo ya entregado; descubrir un hueco por cada tiempo de ida y vuelta castiga especialmente a las rutas largas.
RFC 793 fijó esa semántica acumulativa: ACK X confirma todos los octetos inferiores a X y señala el siguiente esperado. La regla ofrece un compromiso fuerte y compacto. El receptor puede guardar información posterior, pero no debe confundir disponibilidad parcial con una corriente completa.
Una propuesta de 1988 que tuvo que volver
RFC 1072 intentó ampliar la conversación mediante opciones. SACK-Permitted viajaría en el SYN; después, el receptor podría enumerar bloques discontinuos ya recibidos. Si la otra parte ignoraba la opción, el ACK acumulativo seguía funcionando.
Aquella versión no se desplegó como norma común. RFC 2018 atribuye el bloqueo a desacuerdos sobre su convivencia con el escalado de ventana. La cronología importa: el RFC demostró que había una idea especificable, no que la base instalada ya la hubiera aceptado.
La revisión de 1996 conservó la negociación inicial y cambió el formato. Cada bloque quedó definido por dos bordes completos de 32 bits. El izquierdo incluye el primer byte presente; el derecho apunta al byte inmediatamente posterior al último. Así, ACK 5000 puede convivir con SACK [5500, 9000): continuidad y observación ya no necesitan fingir que son la misma cosa.
Cuarenta bytes para una cola que puede ser enorme
Las opciones de TCP caben en cuarenta bytes. SACK consume dos para tipo y longitud y ocho por bloque. Sin otras opciones entran cuatro; junto con timestamps suelen quedar tres. Si la cola contiene más islas, ninguna respuesta puede mostrarlas todas.
Por eso se anuncia primero el bloque alterado por el segmento más reciente y se repiten bloques anteriores. Los ACK también se pierden; la redundancia permite que el emisor acumule una representación razonable con mensajes sucesivos. El estado compartido es deliberadamente menor que el estado privado del receptor.
La economía tiene una ventaja institucional además de técnica. No exige que ambos extremos usen la misma estructura de memoria. Sólo normaliza cómo describir un rango de secuencia. La diversidad de implementación sobrevive porque el acuerdo común se limita a la evidencia necesaria.
Señal selectiva, obligación acumulativa
SACK es consultivo. El receptor puede descartar después datos que ya había señalado, fenómeno llamado reneging. El emisor puede evitar provisionalmente esos rangos, pero no debe liberar su copia hasta que el ACK acumulativo avance sobre ellos.
Si vence el temporizador, debe desconfiar de las marcas antiguas y volver al borde izquierdo. La aparente duplicación de seguridad evita transformar un dato temporal en recibo irrevocable. El sistema siempre conserva una ruta de recuperación basada en la promesa original.
El emisor, no el receptor, mantiene la cola de retransmisión. Combina informes, marca segmentos y elige la siguiente pieza. RFC 6675 formalizó después un scoreboard y una estimación de los octetos todavía en vuelo. El receptor aporta perspectiva; no obtiene el actuador.
Un mapa preciso no ensancha el enlace
SACK no deroga la congestión. RFC 2018 exige conservar sus algoritmos: una sola noticia de desorden no dispara por sí misma la recuperación, las transmisiones siguen limitadas y la ventana debe reducirse ante señales adecuadas.
La separación con el episodio de colapso de 1986 es fundamental. La ventana de congestión contesta cuánto se puede enviar. SACK ayuda a escoger qué bytes enviar dentro de ese límite. Conocer la ubicación del agujero no crea capacidad ni derecho sobre las colas comunes.
RFC 2883 añadió D-SACK para notificar segmentos duplicados. Con ello el emisor puede sospechar reordenamiento, pérdida de ACK, réplica en la red o temporización prematura. El documento no ordena una reacción universal y advierte que el receptor no siempre merece confianza. La prueba nueva amplía el diagnóstico, no la obediencia.
Fuentes y límites de la evidencia
La regla acumulativa está en RFC 793. La propuesta inicial aparece en RFC 1072 y el formato revisado en RFC 2018. RFC 2883 define D-SACK; RFC 5681 conserva el marco de congestión; RFC 6247 registra el carácter histórico de la propuesta antigua; y RFC 6675 ofrece la recuperación conservadora basada en SACK.
Los textos fijan formatos, obligaciones y límites. No prueban una fecha global de adopción, una mejora idéntica en todas las rutas ni el lugar donde se perdió un paquete concreto. SACK tampoco autentica al receptor.
Informe para miembros
Contexto ampliado del perfil
Inicia sesión con el nivel de membresía adecuado para desbloquear el informe completo y las notas de las fuentes.
Solo para Strategic Circle
Strategic Circle
Abierto a todos los lectores. Desbloquea informes de perfil después de unirte e iniciar sesión.
Únete a Strategic CircleSolo para Leadership Alliance
Leadership Alliance
Para propietarios y directivos cualificados de activos de propiedad intelectual; inicia sesión para desbloquear los informes de la alianza.
Unirse a Leadership Alliance
