Resumen

  • Hay apertura simultánea cuando ambos extremos envían un SYN y reciben un SYN sin acuse mientras ya están en SYN-SENT.
  • Cada uno pasa por SYN-RECEIVED, confirma el espacio de secuencia del otro y llega a ESTABLISHED para una sola conexión.
  • RFC 9293 exige admitir este recorrido y recordar si SYN-RECEIVED nació de una apertura activa o pasiva.

El handshake antes de las etiquetas

TCP suele enseñarse como un diálogo entre cliente y servidor. RFC 793 lo formula, sin embargo, como sincronización de una conexión. Un iniciador y un respondedor son lo normal, pero dos TCP también pueden iniciar a la vez. Cliente y servidor son convenciones de aplicación, no una condición del estado de transporte.

Cuando se cruzan los SYN

Ambos extremos ejecutan un active OPEN, eligen su número de secuencia inicial y envían un SYN. Los segmentos se cruzan mientras ambos permanecen en SYN-SENT. Cada extremo recibe un SYN sin acuse, registra el número de secuencia del par, entra en SYN-RECEIVED y envía SYN+ACK. Al recibir un acuse aceptable de su propio SYN, pasa a ESTABLISHED. El resultado es una conexión, no dos.

El SYN consume un número de secuencia; por eso el acuse avanza en uno.

La simetría necesita memoria

RFC 9293 exige soportar la apertura simultánea y conservar si SYN-RECEIVED procedió de un active o passive OPEN. Esa procedencia cambia el tratamiento posterior de resets y errores. La máquina es simétrica, pero la historia local no desaparece.

Un SYN antiguo puede confundir

Un SYN duplicado y antiguo puede parecer una apertura simultánea. La validación de secuencias y el procesamiento de resets siguen siendo necesarios; no todo SYN recibido en SYN-SENT es válido por definición.

Lo que la norma no garantiza

El estándar describe la transición si los paquetes llegan a ambos TCP. No demuestra que rutas, cortafuegos, traducciones NAT, APIs de sockets o aplicaciones actuales permitan el intercambio.

Fuentes