El protocolo TCP o de control de transmisión es un protocolo de capa de transporte estándar que Internet utiliza para transmitir datos. Solicitud de comentarios (RFC) 793 Define el TCP como un protocolo confiable y orientado a la conexión. Dado que está orientado a la conexión, se debe establecer una ruta o conexión antes de transmitir cualquier dato. TCP utiliza un mecanismo de apretón de manos de tres vías para establecer una conexión entre dos dispositivos. En esta guía, veremos cómo funciona el mecanismo de apretón de manos de tres vías. Primero veamos los problemas con el modelo de apretón de manos de dos vías.
Problemas con el modelo de apretón de manos bidireccional
El modelo de apretón de manos bidireccional falló debido a un viejo problema de paquetes duplicados. Supongamos que un viejo paquete duplicado llega a la máquina del servidor. Este antiguo paquete ha llegado de una conexión previamente cerrada y contiene un número de secuencia 'Z'. En algún momento durante la nueva conexión, el servidor está aceptando un paquete con un número de secuencia 'Z'. Cuando recibe este paquete antiguo con el mismo número de secuencia 'Z', acepta sin saberlo este paquete antiguo y descarta el paquete real de la nueva conexión.
En el caso anterior, si una conexión no está ocurriendo entre el cliente y el servidor, la llegada de un antiguo paquete de solicitud de conexión duplicada aún causa problemas. Si el servidor recibe dicho paquete, responderá con un paquete SYN+ACK. El cliente dejará este paquete porque no tenía la intención de conectarse. Pero el servidor ingresará al estado de punto muerto, esperando que el cliente envíe los datos.
Otro problema es que si un host C envía una solicitud de conexión al servidor al hacerse pasar por el cliente, el servidor responderá con un ACK al cliente. El cliente descartará este paquete 'ACK' y le dirá al servidor que termine la conexión. Durante este intervalo de eventos, el anfitrión C puede lanzar un ataque de falsificación enviando muchos paquetes.
El modelo de apretón de manos de tres vías en TCP/IP
El modelo de apretón de manos de tres vías es muy importante. Si no lo usamos y comenzamos directamente a enviar datos, la solicitud de recepción puede comenzar a recibir paquetes duplicados. El atacante puede tener la oportunidad de lanzar ataques (como DDoS) entre una conexión. El procedimiento de apretón de manos de tres vías es iniciado por una máquina, y el otro lado responde a ella. La siguiente convención se utiliza para explicar este procedimiento:
"Si un sitio recibe un paquete con el número de secuencia 'x', responderá con el número ACK 'x+1'."
Resumamos los pasos realizados en el apretón de manos de tres vías entre una máquina cliente y una máquina de servidor:
Paso 1. En el primer apretón de manos, el cliente envía un paquete de solicitud de conexión SYN con un número de secuencia inicial aleatorio ('x') al servidor.
Paso 2. En el segundo apretón de manos, el servidor responde con un paquete SYN que tiene un número de secuencia aleatoria ('y') y un paquete ACK con un número de secuencia ('x+1') para reconocer el número de secuencia inicial ('x') enviado por el cliente.
Paso 3. En el tercer apretón de manos, el cliente enviará un paquete ACK con un número de secuencia ('y+1') al servidor para reconocer el paquete syn ('y') enviado por el servidor.
Etapa 4. Ambos extremos están sincronizados ahora y pueden comenzar a transmitir datos de forma independiente. [1]
El procedimiento de apretón de manos de tres vías TCP sigue siendo válido si ambas partes inician simultáneamente el proceso de inicialización. En tal situación, cada máquina, después de enviar un paquete "syn", recibirá un segmento de "syn" sin reconocimiento. Si un viejo paquete "syn" duplicado llega al receptor, puede parecerle al receptor que un proceso de inicio de conexión se está llevando a cabo al mismo tiempo. Podemos usar los paquetes de "reinicio" para eliminar esta ambigüedad.
Terminación de conexión TCP
Cualquiera de los dos lados puede terminar una conexión TCP. Para esto, cualquier lado puede transmitir un segmento TCP con el conjunto de bits de aleta. Esto significará que el lado de envío no tiene más datos para enviar. El lado receptor reconocerá este paquete de aletas enviando un paquete de reconocimiento. Esto cerrará la conexión de un lado (el lado del remitente). Ahora el receptor usará los mismos pasos para terminar la conexión en su nombre. Esto cerrará completamente la conexión.
Problemas con el modelo de apretón de manos de tres vías
En caso de que un ACK de cliente a servidor se pierda o bloquee en la etapa del tercer escenario de manos, el cliente desconoce esta situación. El cliente asumirá que la conexión se establece y comenzará a enviar datos. El servidor todavía está esperando el ACK, que ya se perdió, por lo que descartará los datos recibidos del cliente. [2]
Conclusión
En esta guía, hemos aprendido sobre los procedimientos de conexión TCP utilizando un apretón de manos de tres vías. También hemos visto el problema de los paquetes duplicados asociados con el procedimiento de apretón de manos bidireccional y cómo se resolvió con un modelo de apretón de manos de tres vías. Muchos investigadores han contribuido con varios trabajos de investigación para mejorar el modelo de apretón de manos de tres vías y superar los problemas asociados con él.
Referencias