Sobes.tech
Junior

¿Cómo funciona el protocolo TCP?

sobes.tech AI

Respuesta de la IA

TCP (Protocolo de Control de Transmisión) es un protocolo de nivel de transporte que garantiza una entrega de datos confiable y orientada a la conexión.

Aspectos clave del funcionamiento:

  1. Apretón de manos de tres vías (Three-way Handshake):

    • El cliente envía un paquete SYN (Synchronize) con un número de secuencia inicial (ISN).
    • El servidor recibe el SYN, envía un SYN-ACK (Synchronize-Acknowledge) que contiene su ISN y una confirmación (ACK) del ISN del cliente (número de reconocimiento = ISN del cliente + 1).
    • El cliente recibe el SYN-ACK, envía un ACK que confirma el ISN del servidor (número de reconocimiento = ISN del servidor + 1).
    • La conexión se establece, y se pueden transmitir datos.
  2. Transmisión de flujo de datos: Los datos se transmiten como un flujo continuo de bytes, no como paquetes separados. TCP segmenta el flujo de datos en segmentos para su transmisión.

  3. Numeración de secuencia (Sequence Numbers): Cada byte en el flujo de datos tiene un número único. Los segmentos contienen el número del primer byte que contienen (número de secuencia) y el número de reconocimiento (acknowledgement number), que indica el siguiente byte que el remitente espera recibir con ACK.

  4. Reconocimientos (Acknowledgements - ACK): El receptor envía un ACK para informar al remitente qué datos se han recibido con éxito. Si el remitente no recibe un ACK en un tiempo determinado (timeout), vuelve a enviar el segmento.

  5. Control de errores (Error Control): Se utilizan sumas de comprobación (checksums) para verificar la integridad de los datos. Si un segmento está dañado, se descarta, y el remitente espera un timeout o un ACK duplicado para retransmitir.

  6. Control de flujo (Flow Control): Mecanismo que previene la sobrecarga del búfer del receptor. El receptor informa al remitente el tamaño de su ventana de recepción en los paquetes ACK. El remitente solo puede enviar tantos datos como indique la ventana.

  7. Control de congestión (Congestion Control): Mecanismo para determinar la capacidad de la red y regular dinámicamente la velocidad de transmisión para evitar congestión. Incluye algoritmos como inicio lento (slow start), evitación de congestión (congestion avoidance), retransmisión rápida (fast retransmit) y recuperación rápida (fast recovery).

  8. Cierre de la conexión: Generalmente usa un apretón de manos de cuatro vías:

    • Una parte envía un paquete FIN (Finish).
    • La otra parte envía un ACK para el FIN.
    • La otra parte envía su propio FIN (después de terminar de enviar sus datos restantes).
    • La primera parte envía un ACK para este FIN.
    • La conexión se cierra.

Estructura del segmento TCP:

Campo Tamaño (bytes) Descripción
Puerto de origen 2 Puerto del remitente
Puerto de destino 2 Puerto del destinatario
Número de secuencia 4 Número del primer byte de datos en el segmento
Número de reconocimiento 4 Número del siguiente byte esperado
Desplazamiento de datos / Longitud del encabezado 4 bits Longitud del encabezado TCP
Reservado 6 bits Reservado
Banderas (Bits de control) 6 bits URG, ACK, PSH, RST, SYN, FIN
Tamaño de ventana 2 Tamaño de la ventana del receptor
Suma de comprobación 2 Suma de comprobación del encabezado y datos
Puntero urgente 2 Indica datos urgentes (si URG está establecido)
Opciones Variable Opciones adicionales
Relleno Variable Para alinear el encabezado
Datos Variable Datos transmitidos
// Banderas (Bits de control):
// URG: Campo de puntero urgente significativo
// ACK: Campo de reconocimiento significativo
// PSH: Función push
// RST: Restablecer la conexión
// SYN: Sincronizar números de secuencia
// FIN: No hay más datos del remitente