Antes de que TCP envíe datos de la aplicación, debe establecer el estado en ambos extremos de la conexión. Ese proceso de configuración es el protocolo de enlace de tres vías TCP. Sucede tan rápido que la mayoría de los usuarios nunca lo notan, pero cuando los sitios web se sienten lentos, los puertos aparecen cerrados o los firewalls interrumpen las aplicaciones de maneras extrañas, el apretón de manos es a menudo el punto donde comienza la historia.

El protocolo de enlace de tres vías TCP

Los tres paquetes son:

  1. SINC del cliente
  2. SINCRONIZACIÓN del servidor
  3. ACTUAR del cliente

Después de eso, se establece la conexión y comienza la transferencia de datos normal.

Explicación paso a paso

1. El cliente envía SYN

El cliente dice, de hecho, "Quiero iniciar una conexión y aquí está mi número de secuencia inicial".

2. El servidor responde con SYN-ACK

El servidor reconoce el número de secuencia del cliente y envía su propio número de secuencia inicial.

3. El cliente envía ACK

El cliente reconoce el número de secuencia del servidor. En este punto, ambas partes acuerdan el estado básico necesario para intercambiar datos de manera confiable.

Por qué TCP necesita un protocolo de enlace

El apretón de manos no es sólo una ceremonia. Resuelve problemas reales de protocolo:

  • confirma que ambos puntos finales pueden enviar y recibir
  • negocia el seguimiento de secuencia inicial
  • evita que los paquetes retrasados de sesiones anteriores se confundan con el tráfico actual
  • establece el estado necesario para una entrega confiable

Sin esta configuración, TCP no podría proporcionar el comportamiento de transmisión ordenado y confiable que esperan las aplicaciones.

Por qué TCP utiliza tres pasos en lugar de dos

Un intercambio de dos pasos no probaría completamente que ambas partes estén listas para transmitir y reconocer los números de secuencia de cada uno. El tercer paquete confirma que se recibió la respuesta del servidor y que el estado de la conexión está sincronizado en ambas direcciones.

Es por eso que el apretón de manos es "triple" y no simplemente un par de solicitud-respuesta.

Qué sucede cuando falla el apretón de manos

Los fallos en el apretón de manos suelen caer en algunos patrones reconocibles.

SYN enviado, sin respuesta

Posibles causas:

  • el host de destino está inactivo
  • el firewall descarta paquetes silenciosamente
  • IP o puerto incorrecto
  • problema de enrutamiento en la ruta

Síntomas comunes:

  • tiempo de espera de conexión
  • el navegador gira durante un rato y luego falla
  • telnet o la aplicación cliente se cuelga antes de darse por vencido

SYN enviado, RST devuelto

Posibles causas:

  • el puerto está cerrado
  • el servicio no escucha
  • el firewall está configurado para rechazar en lugar de descartar

Síntoma común:

  • "conexión rechazada" inmediata

Aparecen SYN y SYN-ACK, luego la sesión finaliza

Posibles causas:

  • enrutamiento asimétrico
  • problema de firewall con estado
  • dispositivo NAT roto
  • mala configuración del balanceador de carga
  • El producto de seguridad basado en host interfiere después de la aceptación inicial

Cómo se ve el apretón de manos en Wireshark

Si captura tráfico en Wireshark, un inicio de TCP saludable generalmente se ve así:

  • SYN
  • SYN, ACK
  • ACK

Si solo ve paquetes SYN retransmitidos repetidamente, la respuesta del servidor nunca vuelve. Si ve un RST, el objetivo rechazó activamente la conexión. Esa visibilidad es la razón por la que las capturas de paquetes son tan útiles para la resolución de problemas de la red.

Por qué los apretones de manos son importantes para el rendimiento

Cada conexión TCP comienza con al menos un viaje de ida y vuelta antes de que comience el flujo de datos.

Si la latencia es de 100 ms:

  • el apretón de manos cuesta aproximadamente un viaje de ida y vuelta
  • TLS agrega más negociación después de eso
  • las conexiones de corta duración se sienten notablemente más lentas

Esta es una de las razones por las que el ajuste del rendimiento moderno se preocupa por la reutilización de conexiones, el comportamiento de mantenimiento de HTTP, las CDN y protocolos como HTTP/2 y HTTP/3.

El protocolo de enlace TCP y TLS no son lo mismo

Esta es una fuente común de confusión.

  • Protocolo de enlace TCP establece la conexión de transporte.
  • Apretón de manos TLS negocia el cifrado y la confianza del certificado además de esa conexión.

Entonces, cuando abres un sitio web HTTPS, el sistema generalmente realiza:

  1. Protocolo de enlace TCP
  2. Apretón de manos TLS
  3. Solicitud y respuesta HTTP

Si un sitio tarda en "comenzar a cargarse", el retraso podría deberse a cualquiera de las capas de protocolo de enlace.

Relación con el escaneo de puertos

Muchos escáneres dependen del comportamiento de apretón de manos:

  • SINCRONIZACIÓN a menudo significa que el puerto está abierto
  • PRIMERO normalmente significa cerrado
  • sin respuesta a menudo significa filtrado o eliminado

Eso hace que el protocolo de enlace sea fundamental no solo para la creación de redes, sino también para la enumeración y las pruebas de seguridad.

Ataques de inundación SYN

Una inundación SYN abusa del protocolo de enlace al enviar una gran cantidad de paquetes SYN sin completar el ACK final. El servidor asigna recursos para muchas sesiones medio abiertas y puede verse abrumado.

Mitigaciones comunes:

  • Cookies SYN
  • limitación de velocidad
  • filtrado ascendente
  • protecciones de firewall
  • ajuste del balanceador de carga

La desconexión de la conexión es diferente

Iniciar una sesión utiliza el protocolo de enlace de tres vías. Cerrarlo generalmente utiliza un proceso diferente que involucra paquetes FIN y ACK en ambas direcciones.

Ese desmontaje es importante al depurar sockets atascados TIME_WAIT o CLOSE_WAIT, pero es independiente del protocolo de enlace de conexión inicial.

Conclusión

El protocolo de enlace TCP es el inicio de tres pasos para una comunicación TCP confiable:

  • SINC
  • SINCRONIZACIÓN
  • ACTUAR

Es importante porque cada solicitud web, sesión SSH, conexión de base de datos o llamada API creada en TCP depende de ello. Si una conexión se agota, es rechazada o se siente lenta antes de que se muevan los datos, el protocolo de enlace es uno de los primeros lugares a investigar.