3. TCP Transmission Control Protocol

3.1. Control de Flujo

El mecanismo de Ventana Deslizante es el usado en TCP, con una pequeña variante, primero recordaremos el control de flujo por ventana deslizante y luego vermemos la modificación que usa TCP.

En Ventana Deslizante se envía un conjunto de paquetes respetando las siguientes reglas:

  • El remitente puede enviar todos los paquetes dentro de número de paquetes indicados en el ancho de la ventana sin recibir un ACK, pero debe iniciar un temporizador de tiempo de espera para cada uno de ellos.
  • El receptor debe acusar recibo de cada paquete recibido, indicando el número de secuencia del último paquete bien recibido.
  • El remitente desliza la ventana en cada ACK recibido.
Caso de paquete perdido:
Si un paquete N se pierde: el remitente no recibirá el ACK del paquete N+1, por lo que su ventana permanecerá en la misma posición, es decir no se mueve el marco de la ventana de transmisión. De hecho, porque el el receptor no recibió ese paquete no va a reconocer o dar un ACK por los paquetes siguientes N+1. N+2, N+3..etc..
En el lado del remitente, eventualmente un temporizador asociado con el ACK del paquete N llegará a su fin y el remitente nuevamente transmite el paquete N, y al recibir el ACK de N+1, indicando que recibió el paquete N correctamente, la ventana del remitente se deslizará y permitirá al remitente mandar nuevos paquetes.
Podemos ver que las validaciones del Receptor CONTROLAN el envío de RECEPTOR.

Caso del ACK perdido:
El paquete N llegó, pero el acuse de recibo se pierde: el remitente no recibirá ACK N+1, pero recibirá ACK N+2 ..... ACK+x.
En ese caso el ACK N+x es un reconocimiento para todos paquetes hasta N y el remitente ahora puede deslizar su ventana al paquete x.

Este mecanismo de ventana asegura:
  1. Transmisión confiable.
  2. Mejor uso del ancho de banda de la red (mejor rendimiento).
  3. Control de flujo, porque el receptor puede retrasar la respuesta a un paquete con un acuse de recibo, sabiendo que sus búferes libres están disponibles y el tamaño de la ventana de la comunicacion
El principio de ventana deslizante aplicado a TCP
El principio de ventana discutido anteriormente se usa en TCP, pero con algunas
diferencias:
Debido a que TCP proporciona una conexión de flujo de bytes, los números de secuencia son asignado a cada byte en el flujo.
TCP divide este flujo de bytes contiguo en segmentos TCP para transmitirlos.
El principio de ventana se utiliza a nivel de byte (NO DE PAQUETE), es decir, los segmentos enviados y los ACK recibidos llevarán el número de byte y el tamaño de la ventana se expresa como un número de bytes, en lugar de una cantidad de paquetes.
El tamaño de la ventana lo determina el receptor cuando se establece la conexión, una vez establecido esa variable, durante para toda  transferencia de datos.
Cada mensaje de ACK va a incluir el tamaño de la ventana que el receptor está listo para manejar en ese particular tiempo.