Manejo Avanzado de Conexiones TCP/IP: Establecimiento, Control de Errores y Flujo de Datos

Clasificado en Informática

Escrito el en español con un tamaño de 3,75 KB

Establecimiento de Conexión TCP: El Three-Way Handshake

Si no hay un proceso escuchando en el socket de destino, el intento de conexión se rechaza con un segmento RST (Reset). Los segmentos de conexión perdidos o retrasados pueden causar problemas. Para evitarlo, se utiliza el segmento SYN (Synchronize) para sincronizar los Números de Secuencia Iniciales (ISN), y es necesario que los ACK (Acknowledgment) incluyan el número de secuencia.

El establecimiento de la conexión utiliza el proceso de tres vías (Three-Way Handshake) que consiste en:

  • 1. Inicio de la Conexión: El nodo activo (cliente) inicia la conexión enviando un segmento SYN con su Número de Secuencia Inicial (ISN).
  • 2. Confirmación y Sincronización del Servidor: El nodo pasivo (servidor) recibe el SYN, lo confirma con un ACK (ISN del cliente + 1) y envía su propio SYN con su ISN.
  • 3. Confirmación Final del Cliente: El nodo activo confirma el ISN del servidor con un ACK (ISN del servidor + 1).

Control de Errores en TCP

El receptor almacena los bytes (quizás en desorden) y envía un ACK X, indicando el número de secuencia del byte que espera a continuación y confirmando todos los bytes anteriores a X. Si recibe un segmento posterior a X sin haber recibido el segmento X, lo almacena y envía un ACK indicando que le falta el segmento X.

Cuando recibe el segmento X, envía un ACK X+N para confirmar los N bytes que se han ido recibiendo en desorden. Los segmentos pueden retrasarse, perderse o dañarse, así que el emisor actúa en función de los ACK que recibe, disponiendo de temporizadores.

La retransmisión no se inicia de inmediato, sino tras recibir tres ACK duplicados para el segmento X (retransmisión rápida). Por cada segmento que se envía, se pone en marcha un temporizador. Si este expira sin recibir el ACK correspondiente, el segmento se retransmite.

Control de Flujo TCP: La Ventana Deslizante

El control de flujo se gestiona mediante el campo 'Tamaño de Ventana' (Window Size), que indica en cada segmento al otro extremo la cantidad de bytes que le es posible admitir a partir del número de secuencia del ACK.

  • Si el ACK es X=i y el Tamaño de Ventana es W=j, el receptor espera el byte 'i' y concede un crédito al otro extremo para transmitir 'j' bytes.
  • A medida que se van recibiendo datos, la ventana se cierra.
  • A medida que se van confirmando y pasando datos a la capa superior, la ventana se va abriendo.
  • También depende de los recursos disponibles en el nodo receptor.

Cuando un extremo envía un ACK X=i y W=0, indica que su ventana está cerrada. Para reabrirla, envía un ACK X=i y W=j (donde j > 0).

Detección de Duplicados en TCP

Si un segmento se pierde y se retransmite, no hay confusión. Pero si se pierde un ACK, se pueden retransmitir varios segmentos. Si estos llegan correctamente, habrá duplicados, por lo tanto, es crucial reconocerlos.

Existen dos casos principales:

  • A) Recepción del duplicado antes del cierre de la conexión: El receptor gestiona el duplicado mientras la conexión está activa.
  • B) Recepción del duplicado después del cierre de la conexión: El duplicado llega una vez que la conexión ya ha sido terminada.

Cierre de la Conexión TCP

Para evitar la pérdida de segmentos de datos retrasados, se asocia un número de secuencia a cada segmento FIN (Finish). El receptor espera los segmentos anteriores al número de secuencia del FIN. La posible pérdida de segmentos obliga a cada extremo a confirmar el FIN. Se utiliza un ACK con el número de secuencia del FIN a confirmar.

Entradas relacionadas: