• Blog
  • ¿Qué es TCP y cómo funciona TCP?

¿Qué es TCP y cómo funciona TCP?

Oct 19, 2023   |   5 minutos
¿Qué es TCP y cómo funciona TCP?

Tabla de contenidos

¿Qué es el protocolo TCP?

TCP se utiliza para la comunicación entre dispositivos en la red. Significa Protocolo de Control de Transmisión. Se utiliza para crear una conexión entre el cliente y el servidor. Funciona dividiendo los datos en pequeños paquetes que pueden ser transferidos a través de la actividad de la red.

El control de conexión de TCP incluye tres apretones de manos y cuatro ondas.

La segmentación es una función de enrutamiento de navegación para todo el protocolo TCP/IP. El segmento de paquete se refiere a los paquetes de datos IP en la transmisión de red del protocolo TCP/IP, que utilizan la navegación de ruta, consultan cada segmento de ruta de red, dirección IP, protocolo de intercambio, y así sucesivamente.

  • SYN: Sincronizar números de secuencia
  • ACK: Campo de reconocimiento significativo.
  • Seq: Número de secuencia
  • Ack: Número de confirmación

Proceso de tres vías de apretón de manos

Apretón de manos

Una de las características esenciales de TCP es la orientación a la conexión. Por lo tanto, antes de enviar datos, ambas partes deben realizar un handshake para asegurarse de que toda la transmisión de datos sea sin errores antes de que las dos partes puedan establecer la conexión con éxito.

El primer apretón de manos

El cliente envía el segmento 1 al servidor, donde la bandera SYN indica que este es un segmento para solicitar una conexión. Además, su campo de Número de Secuencia (abreviado como seq en la figura) se establece en el número de secuencia inicial x (Número de Secuencia Inicial, ISN), y ambas partes en la conexión TCP pueden seleccionar aleatoriamente el número de secuencia inicial.

Después de enviar el segmento 1, el cliente entra en el estado SYN-SENT y espera la confirmación del servidor.

El segundo apretón de manos

Después de recibir la solicitud de conexión del cliente, el servidor envía el segmento 2 al cliente como respuesta.

El indicador ACK se establece en 1, lo que indica que responde al cliente, y su campo de número de reconocimiento (Acknowledgment Number, abreviado como ack en minúsculas) entrará en efecto.

El valor de este campo es x + 1, que es el número de secuencia del segmento recibido del cliente más uno, que representa el número de secuencia de los datos que el servidor espera recibir del cliente la próxima vez.

Además, la bandera SYN del segmento 2 también se establece en 1, lo que significa que este también es un segmento utilizado para iniciar una conexión, y el número de secuencia seq se establece en el número de secuencia inicial del servidor y.

Después de enviar el segmento 2, el servidor entra en el estado SYN-RECEIVED.

El tercer apretón de manos

Después de recibir el segmento 2, el cliente envía el segmento 3 al servidor, y su indicador ACK es 1, lo que significa que responde al servidor, confirmando que el campo de número de secuencia ack es y + 1, y el campo de número de secuencia seq es x + 1. Después de enviar este segmento, ambas partes entran en el estado ESTABLECIDO, lo que indica que la conexión se ha establecido.

Evaluando el estado de conexión según el estado de visualización del cliente y el servidor.

  • El cliente y el servidor pertenecen al estado cerrado, lo que indica que no hay relación de conexión.
  • El cliente envía una solicitud, el cliente abre el estado de envío (SYN-sent) y el servidor abre el estado de escucha (Listen);
  • Cuando el servidor recibe la solicitud del cliente, el servidor cambia al estado de respuesta (SYN-recvd);
  • Cuando el cliente recibe la respuesta del servidor, el cliente cambia al estado de conexión estable (Establecido) y envía simultáneamente el segundo paquete de datos.
  • Cuando el servidor recibe los segundos datos del cliente, el servidor cambia a un estado de conexión estable (Establecido).
  • Después de que las dos partes establezcan una conexión estable, es hora de comenzar la comunicación regular de datos.

¿Cómo funcionan los tres apretones de manos?

El handshake de tres vías permite que ambas partes confirmen las capacidades de envío y recepción de ellos mismos y de la otra parte como proceso:

El primer apretón de manos: el cliente envía el segmento de solicitud y no se puede confirmar nada, mientras que el servidor puede asegurarse de que su capacidad de recepción y la capacidad de transmisión de la otra parte sean estándar.

El segundo apretón de manos: El cliente puede confirmar que sus capacidades de envío y recepción son estándar, y las capacidades de envío y recepción de la otra parte son estándar.

El tercer apretón de manos: el servidor puede confirmar que sus capacidades de envío y recepción son estándar, y las capacidades de envío y recepción de la otra parte son estándar.

El handshake de tres vías puede permitir que ambas partes confirmen que las capacidades de envío y recepción de ellos mismos y de la otra parte son todas estándar para que puedan comunicarse.

¿Cómo funcionan las cuatro olas?

Establecer una conexión requiere tres apretones de manos, y terminar una conexión requiere cuatro ondas.

El proceso detallado de agitar cuatro veces

1. El cliente envía un segmento de cierre de conexión, solicitando cerrar la conexión y dejar de enviar datos. A continuación, el campo de número de secuencia seq = x (igual al número de secuencia del último byte de todos los datos enviados previamente más uno), luego el cliente entrará en el estado FIN-WAIT-1, esperando un mensaje de acuse de recibo del servidor.

2. El servidor recibe el segmento FIN, envía un mensaje de confirmación, ACK = 1, ack = x + 1, y establece su número de secuencia seq = y, luego el servidor entra en el estado CLOSE-WAIT.

3. El cliente entra inmediatamente en el estado FIN-WAIT-2 después de recibir el segmento ACK del servidor y aún puede recibir datos seq=z del servidor hasta que se reciba el segmento FIN.

4. Luego de que el servidor haya enviado todos los datos, enviará un segmento FIN al cliente, y luego el servidor entrará en el estado LAST-ACK, esperando un segmento de acuse de recibo del cliente.

5. Después de que el cliente recibe el segmento FIN del servidor, envía un mensaje ACK al servidor y luego entra en el estado TIME-WAIT.

6. El servidor entrará en el estado CERRADO inmediatamente después de recibir el mensaje ACK del cliente y terminará la conexión en este momento. En general, el servidor entra en el estado CERRADO antes que el cliente porque no hay tiempo de espera.

En resumen, ya sea un apretón de manos de 3 vías o una ola de 4 vías, el protocolo TCP necesita obtener la confirmación de información de ambas partes para establecer la conexión o desconexión.

¿Por qué TCP cierra la conexión cuatro veces en lugar de tres?

Después de recibir el segmento de paquete FIN del cliente, el servidor puede seguir teniendo datos para transmitir. Por lo tanto, el servidor no puede cerrar la conexión inmediatamente. En su lugar, responderá con un segmento de paquete ACK y puede continuar enviando datos.

El cliente no responde hasta que el servidor envía un segmento de paquete FIN al cliente, indicando que se ha enviado todos los datos. El servidor solicita cerrar la conexión. Por lo tanto, se requieren un total de cuatro ondas.

¿Qué problemas de seguridad ocurren durante la conexión TCP?

En el proceso de handshake de tres vías, después de que el servidor envía SYN-ACK, la conexión TCP antes de recibir el ACK del cliente se llama conexión medio abierta. En este momento, el servidor está en el estado SYN_RCVD. Cuando se recibe un ACK, el servidor puede pasar al estado ESTABLISHED.

El ataque SYN significa que el cliente atacante falsifica una gran cantidad de direcciones IP inexistentes en un corto período de tiempo, envía continuamente paquetes SYN al servidor y el servidor responde con el paquete de confirmación y espera la confirmación del cliente.

Dado que la dirección de origen no existe, el servidor necesita retransmitir continuamente hasta que agote el tiempo de espera. Como resultado, estos paquetes SYN falsificados ocuparán la cola no conectada durante mucho tiempo y las solicitudes SYN regulares serán descartadas.

En casos graves, causará congestión en la red o incluso bloqueos del sistema. Un ataque SYN es un típico ataque DoS/DDoS. Haz clic para obtener más información sobre los ataques DoS/DDoS.