La capa de transporte en Internet : TCP a fondo. Control de flujo. Volumen V

Escrito por Sergio De Luz
Redes
1

En anteriores episodios hablamos sobre TCP y sus principales características, ha llegado la hora de hablar del control de flujo en TCP, una de las principales características de este protocolo y que lo diferencia de UDP.

Cuando dos host intentan comunicarse, a cada lado de la conexión TCP hay un buffer de recepción. Cuando recibimos datos que son correctos y están en orden, TCP coloca los datos en el buffer de recepción.

La aplicación leerá este buffer pero no tiene por qué leerlo en el mismo instante en que llegan, si esta lectura es lenta, el host que envía los datos podría llenar este buffer y desbordarlo (con la consiguiente pérdida de datos).

TCP proporciona control de flujo para evitar precisamente este problema, TCP es capaz de adaptar la velocidad para que el host más lento pueda procesar los datos adecuadamente sin desbordamientos.

Un emisor TCP puede no enviar datos de forma seguida por congestión IP, entraríamos a hablar del control de congestión (en los próximos artículos).

TCP proporciona un servicio de control de flujo con una variable llamada ventana de recepción TCP. Esta ventana de recepción se emplea para proporcionar al emisor la información de cuánto espacio libre hay disponible (en el buffer del host receptor).

TCP al ser una conexión full-dúplex, el emisor y receptor (y viceversa) tienen ventanas de recepciones de distinto tamaño y debe gestionarlas adecuadamente y de forma dinámica. Si la ventana de recepción de un host es 0, el host emisor debe seguir mandando segmentos con 1 bytes de datos, estos son datos de reconocimiento. Finalmente el buffer lleno, comenzará a vaciarse y los ACK serán distintos de 0.