Capa de Transporte en Redes de Computadoras
Capa de Transporte en Redes de Computadoras
"La mayor decepción de la que sufren los hombres proviene de sus propias opiniones." —Leonardo da Vinci
2-1
REDES DE COMPUTADORAS
2.6.2 Enfoques para el Control de Congestión
2.6.3 Ejemplo de Control de Congestión Asistido por Red: Control de Congestión ABR de ATM
[Link] Tres métodos para indicar congestión
2.7 Control de Congestión TCP
2.7.1 Control de Congestión TCP
[Link] Inicio Lento
[Link] Evitación de Congestión
[Link] Recuperación Rápida
[Link] Control de Congestión TCP: Retrospectiva
2.7.2 Equidad
[Link] Equidad y UDP
[Link] Equidad y Conexiones TCP Paralelas
“Si buscas venganza, comienza por cavar dos tumbas.” —Proverbio chino antiguo
2-2
REDES DE ORDENADORES
Nunca he conocido a un hombre tan ignorant que no pudiera aprender algo de él.
2-3
REDES COMPUTACIONALES
2.2 Multiplexión y Demultiplexión
Un proceso puede tener uno o más sockets.
Los sockets se utilizan para transmitir datos de la red al proceso y viceversa.
Multiplexación
En el emisor, la capa de transporte
→recoge fragmentos de datos en el host fuente de diferentes sockets
→encapsula un fragmento de datos con un encabezado para crear segmentos y
→pasa los segmentos a la capa de red.
El trabajo de combinar los fragmentos de datos de diferentes sockets para crear un segmento se llama
multiplexión.
2) Demultiplexión
En el receptor, la capa de transporte
→examina los campos en los segmentos para identificar el socket receptor y
dirige el segmento al socket receptor.
El trabajo de entregar los datos en un segmento al socket correcto se llama desmultiplexión.
• En la Figura 2.1,
En el host intermedio, la capa de transporte debe desmultiplexar los segmentos que llegan de la red.
capa para procesar P1 o P2.
Los datos del segmento entrante se dirigen al socket del proceso correspondiente.
“Solo los tontos y los muertos nunca cambian de opinión.” — James R. Lowell
2-4
REDES DE ORDENADORES
2.2.1 Identificación de Endpoint
Cada enchufe debe tener un identificador único.
•Cada segmento debe incluir 2 campos de encabezado para identificar el socket (Figura 2.2):
1) Campo de número de puerto de origen y
2) Campo de número de puerto de destino.
Cada número de puerto es un número de 16 bits: 0 a 65535.
Los números de puerto que van de 0 a 1023 se llaman números de puerto bien conocidos y están restringidos.
Por ejemplo: HTTP utiliza el puerto número 80
FTP utiliza el puerto número 21
•Cuando desarrollamos una nueva aplicación, debemos asignarle un número de puerto, que se conoce
como puertos efímeros (49152–65535).
Figura 2.2: Campos de número de puerto de origen y destino en un segmento de capa de transporte
“Cuando no puedes cambiar la dirección del viento - ajusta tus velas.” —H. Jackson Brown
2-5
REDES DE COMPUTADORAS
2.2.2 Multiplexión y Demultiplexión Sin Conexión
• En el lado del cliente de la aplicación, la capa de transporte asigna automáticamente el número de puerto.
Mientras tanto, en el lado del servidor, la aplicación asigna un número de puerto específico.
•Supongamos que un proceso en Host-A (puerto 19157) quiere enviar datos a un proceso en Host-B (puerto 46428).
“Aunque el mundo está lleno de sufrimiento, también está lleno de su superación.” —Helen Keller
2-6
REDES DE COMPUTADORAS
2.2.3 Multiplexión y Demultiplexión Orientadas a Conexiones
Cada conexión TCP tiene exactamente 2 puntos finales. (Figura 2.4).
Así, 2 segmentos TCP que llegan con diferentes números de puerto de origen serán dirigidos a 2 sockets diferentes.
incluso si tienen el mismo número de puerto de destino.
•Un socket TCP se identifica mediante una tupla de cuatro elementos:
1) Dirección IP de origen
2) Puerto de origen no
3) Dirección IP de destino &
4) Número del puerto de destino
“Las dificultades son cosas que muestran a una persona quién es.” —Epicteto
2-7
REDES DE ORDENADORES
2.2.4 Servidores Web y TCP
•Considere un host que ejecuta un servidor web (por ejemplo: Apache) en el puerto 80.
•Cuando los clientes (por ejemplo: navegadores) envían segmentos al servidor, todos los segmentos tendrán el puerto de destino 80.
•El servidor distingue los segmentos de los diferentes clientes utilizando un par de tuplas:
1) Direcciones IP de origen &
2) Números de puerto de origen.
La Figura 2.5 muestra un servidor web que crea un nuevo proceso para cada conexión.
•El servidor puede usar i) HTTP persistente o ii) HTTP no persistente
i) HTTP Persistente
A lo largo de la duración de la conexión persistente, el cliente y el servidor intercambian HTTP
mensajes a través del mismo socket de servidor.
ii) HTTP no persistente
Se crea y cierra una nueva conexión TCP para cada solicitud/respuesta.
Por lo tanto, se crea y se cierra un nuevo socket para cada solicitud/respuesta.
Esto puede afectar gravemente el rendimiento de un servidor web muy ocupado.
Figura 2.5: Dos clientes, utilizando el mismo número de puerto de destino (80) para comunicarse con el mismo Web.
aplicación de servidor
2-8
REDES DE COMPUTADORAS
2.3 Transporte sin conexión: UDP
UDP es un protocolo no confiable y sin conexión.
Un servicio poco confiable significa que UDP no garantiza que los datos lleguen al proceso de destino.
Sin conexión significa que no hay intercambio de saludos entre el remitente y el receptor antes de enviar datos.
•Proporciona los siguientes 2 servicios:
i) Entrega de datos de proceso a proceso y
ii) Comprobación de errores.
No proporciona control de flujo, control de errores ni control de congestión.
•En el emisor, UDP
recibe mensajes del proceso de aplicación
→adjunta los números de puerto de origen y destino y
→pasa el segmento resultante a la capa de red.
•En el receptor, UDP
→ examina el número de puerto de destino en el segmento y
→ entrega el segmento al proceso de aplicación correcto.
•Es adecuado para programas de aplicación que
→necesita enviar mensajes cortos &
no puede permitirse la retransmisión.
•UDP es adecuado para muchas aplicaciones por las siguientes razones:
1) Control más fino a nivel de aplicación sobre qué datos se envían y cuándo.
Cuando un proceso de aplicación pasa datos a UDP, el UDP
→empaca los datos dentro de un segmento y
→pasa inmediatamente el segmento a la capa de red.
Por otro lado,
En TCP, un mecanismo de control de congestión limita al remitente cuando la red está congestionada
2) No se establece conexión.
TCP utiliza un apretón de manos de tres vías antes de comenzar a transferir datos.
UDP simplemente transmite los datos de inmediato sin preliminares formales.
Por lo tanto, UDP no introduce ningún retraso para establecer una conexión.
Por eso, DNS funciona sobre UDP en lugar de TCP.
3) Sin estado de conexión.
TCP mantiene el estado de conexión en los sistemas finales.
Este estado de conexión incluye
→recibir y enviar buffers
→parámetros de control de congestión y
→parámetros de número de secuencia y de reconocimiento.
Por otra parte,
En UDP, no se mantiene un estado de conexión.
4) Pequeño sobrecarga de encabezado de paquete.
El segmento TCP tiene 20 bytes de sobrecarga de encabezado en cada segmento.
Por otro lado, UDP tiene solo 8 bytes de sobrecarga.
Cuando ya no podemos cambiar una situación, se nos desafía a cambiar a nosotros mismos. -Victor Frankl
2-9
REDES DE COMPUTADORAS
2.3.1 Estructura del Segmento UDP
Solo se vive una vez, pero si lo haces bien, una vez es suficiente.
2-10
REDES DE COMPUTADORAS
2.4 Principios de Transferencia de Datos Confiable
La Figura 2.7 ilustra el marco del protocolo de transferencia de datos confiable.
Figura 2.7: Transferencia de datos confiable: modelo de servicio e implementación del servicio
•En el emisor, rdt_send() será llamado cuando un paquete deba ser enviado por el canal.
•En el receptor,
i) rdt_rcv() se llamará cuando un paquete tenga que ser recibido en el canal.
ii) deliver_data() se llamará cuando los datos tengan que ser entregados a la capa superior
“Si amas la vida, no pierdas el tiempo, porque el tiempo es de lo que está hecha la vida.” —Bruce Lee
2-11
REDES DE ORDENADORES
2.4.1 Construyendo un Protocolo de Transferencia de Datos Fiable
[Link] Transferencia de Datos Confiable a Través de un Canal Perfectamente Confiable: rdt1.0
•Considerar la transferencia de datos a través de un canal perfectamente fiable.
Llamamos a este protocolo rdt1.0.
Las definiciones de la máquina de estados finitos (FSM) para el emisor y receptor rdt1.0 se muestran en la Figura 2.8.
Los autómatas de estado finito del remitente y del receptor tienen solo un estado.
•En FSM, se utilizan las siguientes notaciones:
i) Las flechas indican la transición del protocolo de un estado a otro.
ii) El evento que causa la transición se muestra sobre la línea horizontal que etiqueta la transición.
iii) La acción tomada cuando ocurre el evento se muestra debajo de la línea horizontal.
iv) La flecha discontinua indica el estado inicial.
•En el emisor, rdt
→ acepta datos de la capa superior a través del evento rdt_send(data)
→crea un paquete que contiene los datos (a través de la acción make_pkt(data)) y
→envía el paquete al canal.
•En el receptor, rdt
→recibe un paquete del canal subyacente a través del evento rdt_rcv(packet)
→elimina los datos del paquete (a través de la acción extraer (paquete, datos)) y
→pasa los datos a la capa superior (a través de la acción deliver_data(data)).
2-12
REDES DE COMPUTADORAS
[Link] Transferencia de Datos Confiable a Través de un Canal con Errores de Bit: rdt2.0
•Considera la transferencia de datos a través de un canal no confiable en el que los bits en un paquete pueden estar corruptos.
Llamamos a este protocolo rdt2.0.
•El protocolo de dictado de mensajes utiliza tanto
→confirmaciones positivas (ACK) y
→acknowledgements negativos (NAK).
•El receptor utiliza estos mensajes de control para informar al remitente sobre
→lo que ha sido recibido correctamente y
→ lo que ha sido recibido por error y, por lo tanto, requiere retransmisión.
•Reliable data transfer protocols based on the retransmission are known as ARQ protocols.
Se requieren tres capacidades de protocolo adicionales en los protocolos ARQ:
1) Detección de Errores
Se necesita un mecanismo para permitir que el receptor detecte cuándo han ocurrido errores de bits.
UDP utiliza el campo de suma de verificación para la detección de errores.
Las técnicas de corrección de errores permiten al receptor detectar y corregir errores de bits en los paquetes.
2) Retroalimentación del receptor
2-13
REDES INFORMÁTICAS
FSM de remitente
•El remitente de rdt2.0 tiene 2 estados:
1) En un estado, el protocolo está esperando que se pasen datos desde la capa superior.
2) En otro estado, el protocolo está esperando un ACK o un NAK del receptor.
i) Si se recibe un ACK, el protocolo
sabe que el paquete transmitido más recientemente ha sido recibido correctamente
→regresa al estado de espera de datos de la capa superior.
ii) Si se recibe un NAK, el protocolo
retransmite el último paquete y
→espera que se devuelva un ACK o NAK por el receptor.
• El remitente no enviará nuevos datos hasta que esté seguro de que el receptor los ha recibido correctamente.
paquete actual.
• Debido a este comportamiento, el protocolo rdt2.0 es conocido como protocolos de esperar y parar.
FSM del receptor
El receptor de rdt2.0 tiene un único estado.
• Al recibir el paquete, el receptor responde con un ACK o un NAK, dependiendo del paquete recibido.
está corrupto o no.
“Si pasas demasiado tiempo pensando en algo, nunca lo terminarás.” —Bruce Lee
2-14
REDES DE COMPUTADORAS
[Link].1 El remitente maneja ACK/NAKs distorsionados: rdt2.1
• Problema con rdt2.0:
Si un ACK o NAK está dañado, el remitente no puede saber si el receptor ha recibido correctamente.
¿recibió los datos o no?
•Solución: El remitente reenvía el paquete de datos actual cuando recibe un paquete ACK o NAK distorsionado.
Problem: This approach introduces duplicate packets into the channel.
Solución: Agregar el campo de número de secuencia al paquete de datos.
El receptor solo tiene que verificar el número de secuencia para determinar si el recibido
el paquete es una retransmisión o no.
Para un protocolo de parar y esperar, un número de secuencia de 1 bit será suficiente.
Un número de secuencia de 1 bit permite al receptor saber si el remitente está enviando
→paquete transmitido anteriormente (0) o
→nuevo paquete (1).
Llamamos a este protocolo rdt2.1.
•La Figura 2.10 y 2.11 muestra la descripción del FSM para rdt2.1.
“Por cada minuto que permaneces enojado, renuncias a 60 segundos de paz mental.” —Ralph Waldo Emerson
2-15
REDES DE COMPUTADORAS
“Cuando estés enojado cuenta hasta diez antes de hablar. Si estás muy enojado, cuenta hasta cien.” —Thomas Jefferson
2-16
REDES INFORMÁTICAS
[Link].2 Sender uses ACK/NAKs: rdt2.2
El protocolo rdt2.2 utiliza tanto confirmaciones positivas como negativas del receptor al emisor.
i) Cuando se recibe un paquete fuera de orden, el receptor envía un reconocimiento positivo (ACK).
ii) Cuando se recibe un paquete corrupto, el receptor envía un reconocimiento negativo (NAK).
Llamamos a este protocolo como rdt2.2. (Figura 2.12 y 2.13).
2-17
REDES DE COMPUTADORAS
[Link] Transferencia de Datos Confiable a Través de un Canal Pérdido con Errores de Bit: rdt3.0
•Considera la transferencia de datos a través de un canal poco fiable en el que pueden ocurrir pérdidas de paquetes.
2-18
REDES DE ORDENADORES
“La clave para la inmortalidad es primero vivir una vida que valga la pena recordar.” —Bruce Lee
2-19
REDES DE COMPUTADORAS
2.4.2 Protocolos de Transferencia de Datos Fiables en Canalizaciones
El remitente puede enviar múltiples paquetes sin esperar a las confirmaciones.
• Esto se ilustra en la Figura 2.16 (b).
• El pipelining tiene las siguientes consecuencias:
1) El rango de los números de secuencia debe aumentarse.
2) El remitente y el receptor pueden tener que almacenar en búfer más de un paquete.
Se pueden identificar dos enfoques básicos para la recuperación de errores en tuberías:
1) Go-Back-N and 2) Selective repeat.
2-20
REDES INFORMÁTICAS
2.4.3 Regresar-N (GBN)
Se permite al remitente transmitir múltiples paquetes sin esperar una confirmación.
•Pero, el remitente está limitado a tener un máximo de N paquetes no reconocidos en la tubería.
Donde N = tamaño de ventana que se refiere al número máximo de paquetes no reconocidos en la tubería
El protocolo GBN se llama un protocolo de ventana deslizante.
•La Figura 2.17 muestra la vista del remitente del rango de números de secuencia.
Figura 2.17: Vista del remitente sobre los números de secuencia en Go-Back-N
•La figura 2.18 y 2.19 dan una descripción FSM del emisor y receptores de un protocolo GBN.
"Trata de no convertirte en un hombre de éxito, sino más bien trata de convertirte en un hombre de valor." —Albert Einstein
2-21
REDES DE COMPUTADORAS
[Link] Remitente GBN
•El remitente debe responder a 3 tipos de eventos:
1) Invocación desde arriba.
Cuando se llama a rdt_send() desde arriba, el remitente primero verifica si la ventana está llena
es decir, si hay N paquetes pendientes y no reconocidos.
i) If the window is not full, the sender creates and sends a packet.
ii) Si la ventana está llena, el emisor simplemente devuelve los datos a la capa superior.
es una indicación implícita de que la ventana está llena.
2) Recepción de un ACK.
Se considerará que un acuse de recibo para un paquete con número de secuencia n es acumulativo
reconocimiento.
Todos los paquetes con un número de secuencia hasta n han sido recibidos correctamente en el receptor.
3) Un Evento de Tiempo de Espera.
Se utilizará un temporizador para recuperar datos perdidos o paquetes de acknowledge.
i) Si ocurre un tiempo de espera, el remitente reenvía todos los paquetes que se han enviado previamente pero
que aún no han sido reconocidos.
ii) Si se recibe un ACK pero todavía hay transmisiones adicionales que no se han recibido.
los paquetes reconocidos, el temporizador se reinicia.
iii) Si no hay paquetes pendientes no reconocidos, el temporizador se detiene.
[Link] Receptor GBN
•Si un paquete con número de secuencia n se recibe correctamente y en orden, el receptor
→envía un ACK para el paquete n y
→entrega el paquete a la capa superior.
•En todos los demás casos, el receptor
→descarta el paquete y
→ reenvía un ACK para el paquete recibido en orden más recientemente.
“Juzga tu carácter natural por lo que haces en tus sueños.” —Ralph Waldo Emerson
2-22
REDES DE COMPUTADORAS
[Link] Operación del Protocolo GBN
•La Figura 2.20 muestra el funcionamiento del protocolo GBN para el caso de un tamaño de ventana de cuatro paquetes.
El remitente envía los paquetes 0 a 3.
El remitente debe esperar a que uno o más de estos paquetes sean reconocidos antes de continuar.
A medida que se recibe cada ACK sucesivo (por ejemplo, ACK0 y ACK1), la ventana avanza.
el remitente transmite un nuevo paquete (pkt4 y pkt5, respectivamente).
•En el receptor, el paquete 2 se pierde y, por lo tanto, los paquetes 3, 4 y 5 se encuentran desordenados y son
descartado.
2-23
REDES DE ORDENADORES
2.4.4 Repetición Selectiva (SR)
• Problema con GBN:
GBN sufre de problemas de rendimiento.
Cuando el tamaño de la ventana y el producto de ancho de banda y retraso son grandes, muchos paquetes pueden estar en
el tubo
Thus, a single packet error results in retransmission of a large number of packets.
• Solución: Utilizar Repetición Selectiva (RS).
Figura 2.21: Vistas del emisor y receptor de un repetidor selectivo (SR) del espacio de números de secuencia
El remitente retransmite solo aquellos paquetes que sospecha que eran erróneos.
• Por lo tanto, evita retransmisiones innecesarias. De ahí el nombre 'repetición selectiva'.
El receptor reconoce individualmente los paquetes recibidos correctamente.
Se utiliza un tamaño de ventana N para limitar el número de paquetes pendientes y no reconocidos en el canal.
La figura 2.21 muestra la vista del espacio de números de secuencia del emisor SR.
[Link] SR Remitente
Las diversas acciones tomadas por el remitente SR son las siguientes:
1) Datos recibidos de arriba.
Cuando se reciben datos de arriba, el remitente verifica el siguiente número de secuencia disponible para
el paquete.
Si el número de secuencia está dentro de la ventana del remitente;
Luego, los datos se empaquetan y se envían;
De lo contrario, los datos se almacenan en caché para su transmisión posterior.
2) Tiempo de espera.
Cada paquete debe tener su propio temporizador lógico. Esto se debe a que
→ solo se transmitirá un solo paquete en caso de tiempo de espera.
3) ACK recibido.
Si se recibe un ACK, el remitente marca ese paquete como recibido.
Si el número de secuencia del paquete es igual a send_base, la base de la ventana se incrementa en el
número de secuencia más pequeño.
Si hay paquetes no transmitidos con números de secuencia que se encuentran dentro de la ventana, estos
se transmiten paquetes.
«La vida se pasa a medias antes de que sepamos lo que es.» —George Herbert
2-24
REDES DE COMPUTADORAS
[Link] Receptor SR
Las diversas acciones tomadas por el receptor SR son las siguientes:
1) El paquete con número de secuencia en [rcv_base, rcv_base+N-1] se recibe correctamente.
En este caso,
→el paquete recibido cae dentro de la ventana del receptor y
→ se devuelve un paquete ACK selectivo al remitente.
Si el paquete no fue recibido previamente, se almacena en búfer.
Si este paquete tiene un número de secuencia igual a rcv_base, entonces este paquete y cualquier anterior
Los paquetes en búfer y numerados de manera consecutiva se entregan a la capa superior.
La ventana de recepción se mueve hacia adelante por el número de paquetes entregados a la capa superior.
Por ejemplo: considera la Figura 2.22.
¤ Cuando se recibe un paquete con un número de secuencia de rcv_base=2, este y los paquetes 3, 4,
y 5 se puede entregar a la capa superior.
2) El paquete con número de secuencia en [rcv_base-N, rcv_base-1] se recibe correctamente.
En este caso, se debe generar un ACK, aunque este sea un paquete que el receptor ha
reconocido anteriormente.
3) De lo contrario.
Ignora el paquete.
2-25
REDES INFORMÁTICAS
2.4.5 Resumen de los mecanismos de transferencia de datos confiables y su uso
“Entre dos males, siempre elijo el que nunca he probado antes.” —Mae West
2-26
REDES DE COMPUTADORAS
2.5 Transporte Orientado a Conexión: TCP
TCP es un protocolo orientado a la conexión y fiable.
Orientado a la conexión significa que se establece una conexión entre el emisor y el receptor antes de enviar.
los datos.
Un servicio confiable significa que TCP garantiza que los datos llegarán al proceso de destino.
correctamente.
•TCP proporciona control de flujo, control de errores y control de congestión.
«El secreto del éxito es estar preparado cuando llegue tu oportunidad.» —Benjamin Disraeli
2-27
REDES DE COMPUTADORAS
2.5.2 Estructura del Segmento TCP
• El segmento consta de campos de encabezado y un campo de datos.
• El campo de datos contiene un fragmento de datos.
Cuando TCP envía un archivo grande, divide el archivo en fragmentos de tamaño MSS.
• La Figura 2.24 muestra la estructura del segmento TCP.
“Cada fracaso es solo un paso más cerca de una victoria. Nunca dejes de intentarlo.” —Robert M. Hensel
2-28
REDES DE ORDENADORES
[Link] Números de secuencia y números de reconocimiento
Números de Secuencia
• El número de secuencia se utiliza para la numeración secuencial de paquetes de datos que fluyen del remitente a
receptor.
•Applications:
1) Los huecos en la secuencia de números de los paquetes recibidos permiten que el receptor detecte un paquete perdido.
2) Los paquetes con números de secuencia duplicados permiten al receptor detectar copias duplicadas de un
paquete.
Números de acuse de recibo
• El número de acuse de recibo es utilizado por el receptor para informar al remitente que un paquete ha sido
recibido correctamente.
Las confirmaciones típicamente llevarán el número de secuencia del paquete que se está confirmando.
Figura 2.25: Números de secuencia y reconocimiento para una aplicación Telnet simple sobre TCP
2-29
REDES INFORMÁTICAS
[Link] Telnet: Un estudio de caso sobre números de secuencia y reconocimiento
Telnet es un protocolo de capa de aplicación popular utilizado para iniciar sesión de forma remota.
•Telnet se ejecuta sobre TCP.
Telnet está diseñado para trabajar entre cualquier par de hosts.
• Como se muestra en la Figura 2.27, supongamos que el cliente inicia una sesión de Telnet con el servidor.
• Ahora supongamos que el usuario escribe una sola letra, 'C'.
• Tres segmentos se envían entre el cliente y el servidor:
1) Primer segmento
El primer segmento se envía del cliente al servidor.
El segmento contiene
→letra ‘C’
→número-de-secuencia 42
→acknowledgment-number 79
2) Segundo segmento
El segundo segmento se envía desde el servidor al cliente.
Dos propósitos del segmento:
i) Proporciona un reconocimiento de los datos que el servidor ha recibido.
ii) Se utiliza para devolver la letra 'C'.
El reconocimiento para los datos de cliente a servidor se lleva en un segmento que lleva de servidor a cliente
datos.
Se dice que este acuse de recibo está apoyado en el segmento de datos de servidor a cliente.
3) Tercer segmento
El tercer segmento se envía del cliente al servidor.
One purpose of the segment:
i) Reconoce los datos que ha recibido del servidor.
Figura 2.27: Números de secuencia y reconocimiento para una aplicación Telnet simple sobre TCP
“If you live your life in the past, you waste the life you have to live.” —Jessica Cress
2-30
REDES DE COMPUTADORAS
2.5.3 Estimación del Tiempo de Viaje de Ida y Vuelta y Tiempo de Espera
• TCP utiliza un mecanismo de tiempo de espera/retransmisión para recuperarse de segmentos perdidos.
• Claramente, el tiempo de espera debe ser mayor que el tiempo de ida y vuelta (RTT) de la conexión.
Si los valores de SampleRTT tienen poca fluctuación, entonces DevRTT será pequeño.
Si los valores de SampleRTT tienen una gran fluctuación, entonces DevRTT será grande.
"Los ganadores nunca se rinden y los que se rinden nunca ganan." —Vince Lombardi
2-31
REDES DE COMPUTADORAS
2.5.4 Transferencia de Datos Confiable
• IP es poco confiable, es decir, IP no garantiza la entrega de datos.
IP does not guarantee in-order delivery of data.
IP no garantiza la integridad de los datos.
TCP crea un servicio de transferencia de datos confiable sobre el servicio poco confiable de IP.
• En el receptor, el servicio confiable significa
→el flujo de datos no está corrupto
El flujo de datos está libre de duplicación y
→el flujo de datos está en secuencia.
2-32
REDES DE COMPUTADORAS
[Link].2 Segundo Escenario
• Como se muestra en la Figura 2.29, el Host-A envía dos segmentos uno tras otro.
El Host-B envía dos acuses de recibo separados.
• Supongamos que ninguno de los acuses de recibo llega a Host-A antes del tiempo de espera.
• Cuando ocurre el evento de tiempo de espera, el Host-A reenvía el primer segmento y reinicia el temporizador.
El segundo segmento no será retransmitido hasta que llegue el ACK para el segundo segmento.
nuevo tiempo de espera.
«La fe es el pájaro que siente la luz cuando el amanecer aún está oscuro.» —Rabindranath Tagore
2-33
REDES DE COMPUTADORAS
[Link] Retransmisión Rápida
El periodo de tiempo de espera puede ser relativamente largo.
•El remitente a menudo puede detectar la pérdida de paquetes mucho antes de que ocurra el tiempo de espera al notar ACKs duplicados.
• Un ACK duplicado se refiere al ACK que el remitente recibe por segunda vez. (Figura 2.31).
Figura 2.31: Retransmisión rápida: retransmitiendo el segmento faltante antes de que expire el temporizador del segmento
2-34
REDES DE COMPUTADORAS
2.5.5 Control de Flujo
• TCP proporciona un servicio de control de flujo a sus aplicaciones.
Un servicio de control de flujo elimina la posibilidad de que el remitente desborde el búfer del receptor.
Buffer de Recepción
El receptor mantiene un búfer de recepción para retener datos incluso si llegan fuera de orden.
•El búfer de recepción mantiene 2 punteros: LastByteRead y LastByteRcvd. La relación entre estos dos es:
•El receptor limita al emisor al anunciar una ventana que es más pequeña que la cantidad de espacio libre.
que puede bufferas:
2-35
REDES DE COMPUTADORAS
2.5.6 Gestión de Conexiones TCP
[Link] Configuración de conexión y transferencia de datos
• Para establecer la conexión, se envían tres segmentos entre los dos hosts. Por lo tanto, este proceso es
conocido como un apretón de manos de tres vías.
• Supongamos que un proceso cliente quiere iniciar una conexión con un proceso servidor.
La figura 2.33 ilustra los pasos involucrados:
Paso 1: El cliente envía un segmento de solicitud de conexión al servidor
El cliente primero envía un segmento de solicitud de conexión al servidor.
El segmento de solicitud de conexión contiene:
1) El bit SYN está configurado en 1.
2-36
REDES DE COMPUTADORAS
[Link] Liberación de Conexión
Cualquiera de los dos procesos en una conexión puede finalizar la conexión.
Cuando una conexión termina, los "recursos" en los anfitriones son desasignados.
• Suponga que el cliente decide cerrar la conexión.
•La figura 2.34 ilustra los pasos involucrados:
1) El proceso cliente emite un comando de cierre.
Entonces, el cliente envía un segmento de cierre al servidor.
¤ Este segmento tiene un bit FIN establecido en 1.
2) El servidor responde con un acuse de recibo al cliente.
3) El servidor luego envía su propio segmento de apagado.
¤ Este segmento tiene un bit FIN establecido en 1.
4) Finalmente, el cliente reconoce el segmento de apagado del servidor.
«Los hombres deben vivir y crear. Vivir hasta el punto de las lágrimas.» —Albert Camus
2-37
REDES DE COMPUTADORAS
2.6 Principios del Control de Congestión
2.6.1 Las Causas y los Costos de la Congestión
[Link] Escenario 1: Dos Emisores, un Enrutador con Buffers Infinitos
• Dos anfitriones (A y B) tienen una conexión que comparte un solo salto entre la fuente y el destino.
• Esto se ilustra en la Figura 2.35.
Figura 2.35: Escenario de congestión 1: Dos conexiones compartiendo un solo salto con búferes infinitos
• Deja
Tasa de envío de Host-A = λenbytes/seg
La capacidad del enlace saliente = R
• Packets from Hosts A and B pass through a router andover a sharedoutgoing link.
El enrutador tiene búferes.
• Los búferes almacenan paquetes entrantes cuando la tasa de llegada de paquetes supera la capacidad del enlace saliente.
Figura 2.36: Escenario de congestión 1: Rendimiento y retraso como función de la tasa de envío del host
Regla No.1: Nunca pierdas dinero. Regla No.2: Nunca olvides la regla No.1.
2-38
REDES DE COMPUTADORAS
[Link] Escenario 2: Dos emisores y un enrutador con búferes finitos
• Aquí, tenemos 2 suposiciones (Figura 2.37):
La cantidad de almacenamiento en búfer del enrutador es finita.
Figure 2.37: Scenario 2: Two hosts (with retransmissions) and a router with finite buffers
2-39
REDES DE COMPUTADORAS
[Link] Escenario 3: Cuatro Enviadores, Enrutadores con Buffers Finitos y Rutas de Múltiples Saltos
Cuatro anfitriones transmiten paquetes, cada uno a través de rutas de dos saltos superpuestas.
Figura 2.39: Cuatro emisores, enrutadores con búferes finitos, y caminos de múltiples saltos
• Considera la conexión desde el Host-A al Host C, pasando a través de los enrutadores R1 y R2.
• La conexión A–C
→comparte el enrutador R1 con la conexión D–B y
→comparte el router R2 con la conexión B–D.
• Caso-1: Para valores extremadamente pequeños de λ
→ los desbordamientos de búfer son raros (como en los escenarios de congestión 1 y 2) y
el rendimiento aproximadamente iguala la carga ofrecida.
• Caso-2: Para valores ligeramente más grandes de λen, el rendimiento correspondiente también es mayor. Esto se debe a que
→se transmite más datos originales a la red
→data is deliveredto the destination and
Los desbordamientos todavía son raros.
valor de λdentro.
donde R = la capacidad del enlace de R1 a R2.
Siλenes extremadamente grande para todas las conexiones, entonces la tasa de llegada del tráfico B–D en R2 puede ser
mucho más grande que el del tráfico A–C.
El tráfico A–C y B–D deben competir en el enrutador R2 por la cantidad limitada de espacio en el búfer.
Así, la cantidad de tráfico A–C que pasa con éxito a través de R2 se vuelve más pequeña y
más pequeño a medida que la carga ofrecida de B-D se hace cada vez más grande.
En el límite, a medida que la carga ofrecida se acerca a infinito, un búfer vacío en R2 es inmediatamente
llenado por un paquete B-D, y el rendimiento de la conexión A-C en R2 se vuelve cero.
Cuando un paquete se pierde a lo largo de un camino, la capacidad de transmisión termina siendo
desperdiciado.
2-40
REDES DE COMPUTADORAS
2.6.2 Enfoques para el Control de Congestión
• Los enfoques de control de congestión se pueden clasificar en función de si la capa de red proporciona alguna
asistencia explícita a la capa de transporte:
1) Control de Congestión de Extremo a Extremo
La capa de red no proporciona soporte explícito a la capa de transporte para el control de congestión.
Incluso la presencia de congestión debe ser inferida por los sistemas finales basándose solo en
comportamiento de red observado.
La pérdida de segmentos se toma como una indicación de congestión de la red y el tamaño de la ventana es
disminuyó en consecuencia.
Control de congestión asistido por la red
Los componentes de la capa de red proporcionan retroalimentación explícita al remitente con respecto a la congestión.
Este feedback puede ser un único bit que indica congestión en un enlace.
La información de congestión se retroalimenta de la red al remitente de una de dos formas:
i) La retroalimentación directa puede ser enviada desde un enrutador de red al remitente (Figura 2.40).
¤ Esta forma de notificación típicamente toma la forma de un paquete de estrangulación.
ii) Un enrutador marca un campo en un paquete que fluye del remitente al receptor para indicar
congestión.
¤ Al recibir un paquete marcado, el receptor luego notifica al remitente del
indicación de congestión.
¤ Esta forma de notificación toma al menos un tiempo de ida y vuelta completo.
Figura 2.40: Dos rutas de retroalimentación para la información de congestión indicada por la red
2-41
REDES DE COMPUTADORAS
2.6.3 Ejemplo de Control de Congestión Asistido por Red: Control de Congestión ABR de ATM
El protocolo ATM (Modo de Transferencia Asincrónica) utiliza un enfoque asistido por la red para el control de congestión.
• ABR (Tasa de Bit Disponible) ha sido diseñado como un servicio de transferencia de datos elástico.
i) Cuando la red está poco cargada, ABR tiene que aprovechar el ancho de banda disponible sobrante.
ii) Cuando la red está congestionada, ABR debería reducir su tasa de transmisión.
2-42
REDES DE COMPUTADORAS
2.7 Control de Congestión TCP
2.7.1 TCP Congestion Control
• TCP tiene un mecanismo de control de congestión.
• TCP utiliza control de congestión de extremo a extremo en lugar de control de congestión asistido por la red
• Así es como funciona:
Cada remitente limita la tasa a la que envía tráfico en su conexión como función de
congestión percibida.
i) Si el remitente percibe que hay poca congestión, entonces el remitente aumenta su tasa de datos.
ii) Si el emisor percibe que hay congestión, entonces el emisor reduce su tasa de datos.
• Este enfoque plantea tres preguntas:
¿Cómo limita un remitente la tasa a la que envía tráfico a su conexión?
2) ¿Cómo percibe un remitente que hay congestión en el camino?
¿Qué algoritmo debería usar el remitente para cambiar su tasa de datos?
• El remitente realiza un seguimiento de una variable adicional llamada la ventana de congestión (cwnd).
La ventana de congestión impone una restricción en la tasa de datos de un emisor.
La cantidad de datos no reconocidos en un emisor no excederá el mínimo de (cwnd y rwnd), es decir:
Si tratas a las personas bien, ellas te tratarán bien... el 90% del tiempo.
2-43
REDES DE COMPUTADORAS
[Link] Comienzo Lento
• Cuando comienza una conexión TCP, el valor de cwnd se inicializa en 1 MSS.
•TCP duplica el número de paquetes enviados cada RTT en una transmisión exitosa.
• Así es como funciona:
Como se muestra en la Figura 2.42, el TCP
→envía el primer segmento a la red y
→espera un reconocimiento.
When an acknowledgment arrives, the sender
aumenta la ventana de congestión en un MSS y
→envía 2 segmentos.
Cuando llegan dos reconocimientos, el remitente
→aumenta la ventana de congestión en un MSS y
→envía 4 segmentos.
Este proceso resulta en un duplicado de la tasa de envío cada RTT.
Así, la tasa de datos TCP comienza lenta pero crece exponencialmente durante la fase de arranque lento.
Los hombres no son prisioneros del destino, sino solo prisioneros de sus propias mentes.
2-44
REDES DE COMPUTADORAS
2-45
REDES INFORMÁTICAS
[Link] Evitación de Congestión
• Al entrar en el estado de evitación de congestión, el valor de cwnd es aproximadamente la mitad de su valor anterior.
Por lo tanto, el valor de cwnd se incrementa en un solo MSS cada RTT.
• El remitente debe aumentar cwnd en bytes MSS (MSS/cwnd) cada vez que llega un nuevo reconocimiento.
¿Cuándo debería terminar el aumento lineal (de 1 MSS por RTT)?
1) Cuando ocurre un tiempo de espera.
Cuando ocurrió el evento de pérdida,
→el valor de cwnd se establece en 1 MSS y
El valor de ssthresh se establece en la mitad del valor de cwnd.
2) Cuando ocurre un ACK duplicado triple.
Cuando se recibieron los ACK triples duplicados,
el valor de cwnd se reduce a la mitad.
El valor de ssthresh se establece en la mitad del valor de cwnd.
2-46
REDES DE COMPUTADORAS
[Link] Control de Congestión TCP: Retrospectiva
• El control de congestión de TCP consiste en (AIMD aumento aditivo, disminución multiplicativa
→Aumentando linealmente (aditivo) el valor de cwnd en 1 MSS por RTT y
→Reducción a la mitad (decrecimiento multiplicativo) del valor de cwnd en un evento de tres ACK duplicados.
Por esta razón, el control de congestión TCP se conoce a menudo como AIMD.
El control de congestión AIMD da lugar al comportamiento de "diente de sierra" que se muestra en la Figura 2.45.
• TCP
aumenta linealmente el tamaño de la ventana de congestión hasta que ocurre un evento de triple ACK duplicado y
→ disminuye entonces el tamaño de la ventana de congestión por un factor de 2
2-47
REDES DE ORDENADORES
2.7.2 Equidad
El mecanismo de control de congestión es justo si cada conexión recibe una parte igual del ancho de banda del enlace.
• Como se muestra en la Figura 2.46, considere 2 conexiones TCP compartiendo un único enlace con una tasa de transmisión R.
• Suponga que las dos conexiones tienen el mismo MSS y RTT.
La Figura 2.47 muestra el rendimiento realizado por las dos conexiones TCP.
Si TCP comparte el ancho de banda del enlace de manera equitativa entre las 2 conexiones,
entonces el rendimiento cae a lo largo de la flecha de 45 grados que parte del origen.
2-48
REDES DE COMPUTADORAS
PARTE 2
14) Explica brevemente TCP y sus servicios. (6*)
15) Con formato general, explique varios campos del segmento TCP. (6*)
16) Con un diagrama, explica la importancia de los números de secuencia y de reconocimiento. (4*)
17) Con un diagrama, explica la transferencia de datos confiable con algunos escenarios interesantes. (8)
18) Con un diagrama, explica la retransmisión rápida en TCP. (6*)
19) Con un diagrama, explica el control de flujo en TCP. (6)
20) Con un diagrama, explica la gestión de conexiones en TCP. (8*)
21) Con un diagrama, explica las causas de la congestión con algunos escenarios. (8)
22) Explica brevemente los enfoques para el control de congestión. (6*)
23) Con un diagrama, explica el control de congestión ABR de ATM. (8)
24) Con un diagrama, explica el lento inicio en TCP. (6*)
25) Con un diagrama, explica la recuperación rápida en TCP. (6*)
La vida es como montar en bicicleta. Para mantener tu equilibrio, debes seguir adelante.
2-49