Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Presentado a:
Presentado por:
TCP proporciona un servicio de control de flujo a sus aplicaciones para eliminar la posibilidad de que
el emisor desborde el buffer del receptor, por tanto, es un servicio de adaptación de velocidades. El
servicio de control de flujo y el mecanismo de control de congestión toman acciones similares por
razones distintas.
Se tiene una variable conocida como ventana de recepción, se emplea para proporcionar al emisor una
idea de cuánto espacio libre hay disponible en el buffer del receptor, a cada lado de la conexión hay
una ventana de recepción diferente.
Suponiendo que el host A envía un archivo grande al host B a través de una conexión TCP
Se tiene que:
Existe un problema técnico, suponga que el buffer de recepción del host B está lleno, de manera que
VentRecepcion = 0. Después de anunciar al host A que VentRecepcion = 0, suponga también que B no
tiene nada que enviar a A. A medida que el proceso de aplicación del host B vacía el buffer, TCP no
envía nuevos segmentos con valores nuevos VentRecepcion al host A; TCP envía un segmento al host
A solo si tiene datos que enviar o si tiene que enviar un paquete de reconocimiento. Por tanto, el host
A nunca es informado de que hay algo de espacio en el buffer de recepción del host B . Para resolver
este problema, la especificación TCP requiere al host A que continúe enviando segmentos con un byte
de datos cuando la longitud de la ventana de recepción de B es cero. Estos segmentos serán
reconocidos por el receptor. Finalmente, el buffer comenzará a vaciarse y los ACK contendrán un
valor de VentRecepcion distinto de cero.
Figura 1. Ventana de recepción y buffer de recepción
Gestión de la conexión:
3. El cliente recibe el segmento SYNACK, asigna también los buffers y variables TCP y
se coloca el bit SYN en “0”, a partir de este momento queda establecida la conexión.
3. El cliente recibe el segmento FIN de parte del servidor y responde con un segmento
ACK.
Las figuras 4 y 5 representan específicamente los estados secuenciales a los que se enfrentan tanto el
host cliente como el host servidor en un caso típico de inicio de conexión hasta que esta es cerrada. El
estado “ESTABLISHED” es el caso más relevante de todos, ya que en este estado es cuando hay una
comunicación de carga útil (información real que se quiere comunicar) entre el cliente y el servidor,
los demás estados son transiciones en las que varían parámetros de control y tiempo para gestionar la
conexión entre los host, siendo un complemento a las etapas descritas anteriormente donde se
enviaban segmentos con bits de control para sincronismo y aceptación de solicitudes.
Los dos primeros componentes son obligatorios en TCP, se diferencian en la forma del crecimiento del
tamaño de la ventana de congestión según los ACK recibidos. El arranque lento aumenta el tamaño más
rápidamente (crecimiento exponencial) que la fase de evitación de la congestión (crecimiento lineal). La
fase de recuperación rápida es recomendable, mas no obligatoria para emisores TCP.
Arranque lento:
Cuando se inicia una conexión TCP, el valor de la ventana de congestión normalmente se inicia con un
valor pequeño igual a 1 MSS (Maximum Segment Size) , que da como resultado una velocidad de
transmisión inicial aproximadamente igual a MSS/ RTT. Puesto que el ancho de banda disponible para el
emisor TCP puede ser mucho más grande que el valor de MSS/ RTT (Round - Trip Time), al emisor TCP
le gustaría poder determinar rápidamente la cantidad de ancho de banda disponible. Por tanto, en el estado
de arranque lento, el valor de VentCongestion se establece en 1 MSS y se incrementa 1 MSS cada vez que
se produce el primer reconocimiento de un segmento transmitido. En primer lugar, si se produce un suceso
de pérdida de paquete señalado por un fin de temporización, el emisor TCP establece el valor de
VentCongestion en 1 e inicia de nuevo un proceso de arranque lento.
También define el valor de una segunda variable de estado, umbralAL, que establece el umbral del
arranque lento en VentCongestion/2, la mitad del valor del tamaño de la ventana de congestión cuando se
ha detectado que existe congestión. La segunda forma en la que la fase de arranque lento puede terminar,
está directamente ligada al valor de umbralAL, dado que umbralAL es igual a la mitad del valor que
VentCongestion tenía cuando se detectó congestión por última vez, puede resultar algo imprudente
continuar duplicando el valor de VentCongestion cuando se alcanza o sobrepasa el valor de umbral, por
tanto, cuando el valor de VentCongestion es igual a umbralAL, la fase de arranque lento termina y las
transacciones TCP pasan al modo de evitación de la congestión.
Como veremos, TCP incrementa con más cautela el valor de VentCongestion cuando está en el modo de
evitación de la congestión.
La última forma en la que termina la fase de arranque lento es si se detectan 3 ACK duplicados, en ese
caso TCP realiza una retransmisión rápida y entra en el estado de recuperación rápida.
Evitación de la Congestión:
Cada ACK que llega incrementa el tamaño de la ventana de congestión en 1/10 MSS y, por tanto, el valor
del tamaño de la ventana de congestión habrá aumentado en un MSS después de los ACK correspondientes
a los 10 segmentos que hayan sido recibidos. Como en el caso del modo de arranque lento, el valor de
VentCongestion se fija en 1 MSS y el valor de umbralAL se actualiza, haciéndose igual a la mitad del valor
de VentCongestion cuando se produce un suceso de pérdida de paquete y lo retransmite a la fase de
Arranque Lento, eso también puede suceder cuando hay 3 ACK duplicados y lo retransmite a la fase de
Recuperación Rápida, en ese caso TCP divide entre dos el valor de VentCongestion (se añaden 3 MSS
teniendo en cuenta los 3 ACK duplicados) y el umbralAL será igual a la mitad de VentCongestion que se
tenía en el momento de recibir los 3 ACK duplicados.
Recuperación Rápida:
En la fase de recuperación rápida, el valor de VentCongestion se incrementa en 1 MSS por cada ACK
duplicado recibido de un segmento perdido lo que causó entró al estado de recuperación rápida.
Cuando llega un ACK para el segmento que falta, TCP entra de nuevo en el estado de evitación de la
congestión después de disminuir el valor de VentCongestion. TCP Tahoe, establece incondicionalmente el
tamaño de la ventana de congestión en 1 MSS y entra en el estado de arranque lento después de un suceso
de pérdida indicado por un fin de temporización o por la recepción de tres ACK duplicados, por el
contrario TCP Reno, incorpora la fase de recuperación rápida.
Figura 7. Evolución de la ventana de congestión TCP (Tahoe y Reno)
En la figura comparativa de TCP Tahoe y TCP Reno, se puede observar que el tamaño de la ventana de
congestión es igual a 12 · MSS cuando se produce el suceso de pérdida (8 ciclo de transmisión), El valor
de umbralAL se hace entonces igual a 0,5 · VentCongestion = 6. En TCP Reno, el tamaño de la ventana de
congestión es puesto a VentCongestion = 9 · MSS y luego crece linealmente. TCP Tahoe, la ventana de
congestión es igual a 1 MSS y crece exponencialmente hasta que alcanza el valor de umbralAL, punto a
partir del cual crece linealmente. Aunque es importante diferenciar entre las retransmisiones/control de
errores de TCP y el control de congestión de TCP, también lo es apreciar cómo estos dos aspectos de TCP
están estrechamente vinculados.