Resumen

  • Una conexión TCP está semiabierta cuando un extremo perdió o descartó su estado sin que el otro lo supiera.
  • Si el extremo superviviente envía datos, el lado que está en CLOSED responde con RST y el estado antiguo se aborta.
  • Tras reiniciar, un SYN nuevo puede chocar con la conexión que el otro lado aún conserva; el ACK incompatible provoca otro RST.
  • El RST no recupera datos ni reconstruye la conexión: elimina el estado obsoleto para que pueda comenzar una nueva negociación en tres pasos.

Una conexión sostenida por dos recuerdos

Cada extremo TCP conserva números de secuencia, confirmaciones, ventanas y una posición en la máquina de estados. La conexión funciona mientras ambos estados sean compatibles. RFC 793 y RFC 9293 llaman semiabierta a la conexión que una parte cerró, abortó o perdió por una caída sin informar a la otra.

No es lo mismo que un cierre parcial. Un FIN termina ordenadamente un sentido y deja disponible el contrario. La condición semiabierta es una divergencia accidental del estado compartido: un lado sigue viendo ESTABLISHED y el otro ya no tiene un bloque de control para esa conexión.

Cuando el superviviente envía primero

Si B todavía cree que la conexión está sincronizada y envía datos, A, que reinició y está en CLOSED, no puede asociar el segmento con ninguna conexión. Responde con RST. B acepta el reset y abandona su conexión obsoleta.

Ese paquete no dice qué datos procesó A antes de la caída ni si una operación de aplicación llegó a completarse. Solo hace visible que A ya no puede participar en el estado de conexión que B conserva.

Cuando el lado olvidadizo vuelve a abrir

A puede enviar un SYN nuevo después del reinicio. B lo recibe mientras mantiene la conexión antigua y encuentra el SYN fuera de la ventana de recepción asociada a ese estado. Devuelve un ACK con el número que espera. Como A está desincronizado, ese ACK no confirma nada de su intento nuevo; A responde con RST. B elimina el estado antiguo y A puede continuar con una negociación ordinaria en tres pasos.

TCP no fusiona estados incompatibles. Descarta el que ya no puede ser compartido.

El límite de transporte

El RST aclara el desacuerdo del protocolo, pero no restaura bytes perdidos, credenciales, sesiones ni transacciones. La recuperación queda en manos de las capas superiores. Estos ejemplos tampoco describen un cierre FIN, una política obligatoria de keepalive ni las reglas de challenge-ACK de RFC 5961.

Fuentes