Free YouTube Transcribe

Video transcript

Comunicación confiable - CC4303

I. Bachmann · 1,301 words · 6 min read

Want to search this transcript, jump the video from any line, or download it as TXT, SRT, or VTT?

Open in the transcript tool

Full transcript

0:00Hola, hoy vamos a ver otras formas de establecer una comunicación confiable.

0:04Hasta ahora vimos que TCP puede mantener una comunicación confiable usando Stop & Wait.

0:09Sin embargo, Stop & Wait es sumamente ineficiente.

0:12Alternativas como Go-Back N y Selective Repeat son mucho más eficientes.

0:17Ambas formas de enviar datos utilizan lo que se llaman “ventanas deslizantes” o sliding windows.

0:22Para entender este concepto, imaginemos que queremos mandar un mensaje,

0:25el cual está dividido en varios segmentos, de esta manera.

0:29Al usar ventanas deslizantes manejamos estos segmentos por grupos o ventanas de un cierto tamaño N.

0:34Por ejemplo, podríamos tener que el emisor maneja una ventana de tamaño 3 y envía estos 3 segmentos uno tras otro

0:42sin tener que esperar los ACKs como ocurría en Stop & Wait.

0:46Conforme el emisor va recibiendo los ACKs, esta ventana se va moviendo y se van enviando nuevos segmentos,

0:52de ahí el nombre “ventana deslizante” o “sliding window”.

0:56Debemos notar que esta ventana deslizante se puede usar tanto en el emisor como en el receptor.

1:02En esta sección vamos a aumentar el número de secuencia de acuerdo a la posición del segmento luego de dividir el mensaje.

1:09En particular, dada una ventana de tamaño N, vamos a tener que las posiciones van a ir de 0 a 2N-1.

1:16Si N = 3 vamos a tener estas ubicaciones.

1:20Con esto, los números de secuencia van a estar siempre entre “Y” e “Y + 2N -1”,

1:25donde Y es el número de secuencia almacenado al comenzar el envío de datos.

1:30Pero, ¿por qué este cambio?

1:32Porque si buscan en Internet la mayoría del material usa este formato.

1:37Con esto veamos cómo funciona Go-back N con nuestra versión “simplificada” de TCP.

1:44Go-back N usa una ventana en el lado del emisor.

1:47Coloca un timer luego de enviar el primer segmento.

1:49El receptor solo acepta segmentos consecutivos.

1:53Si se cumple el timeout se reenvía toda la ventana.

1:55Y la ventana del emisor avanza todo lo que puede conforme llegan los ACKs*.

2:00Veamos un ejemplo.

2:01Supongamos una ventana de tamaño 3.

2:04Partimos mandando los primeros 3 segmentos en orden y ponemos un timer luego de enviar el primer segmento dentro de la ventana.

2:11Al llegar el primer segmento, el receptor verifica si el número de secuencia es válido.

2:16Si lo es envía el ACK correspondiente y aumenta el número de secuencia esperado en 1.

2:21Esto se repite para cada segmento que le va llegando al receptor.

2:25Al llegar el ACK del primer segmento, el emisor avanza su ventana,

2:28envía el segmento que acaba de entrar a la ventana y resetea su timer.

2:32Conforme van llegando estos ACKs, vamos repitiendo este proceso.

2:36Por el lado del receptor vemos que el número de secuencia esperado sigue aumentando.

2:41Como N=3, el número de secuencia aumentará hasta llegar a Y+5 y luego volverá a esperar un número de secuencia igual a Y.

2:49Ahora, ¿qué ocurre si hay **pérdida**?

2:51Supongamos que se pierde el segundo segmento de nuestra ventana.

2:54En este caso el emisor recibe el primer segmento y responde ACK.

2:59Como se pierde el segundo segmento, lo siguiente que le llega es el tercer segmento,

3:03pero este trae un número de secuencia MAYOR al número que está esperando, así que lo descarta.

3:08En el emisor, como el primer ACK llegó bien, el emisor avanzó su ventana y envió el cuarto segmento,

3:14sin embargo, este también tiene un número de secuencia mayor al que espera el receptor y este también se descarta.

3:21Eventualmente, el último timer que puso el emisor cumple su timeout.

3:25Al llegar el timeout el emisor reenvía toda la ventana,

3:29la cual en este caso contiene los segmentos 2, 3 y 4.

3:34Si todo sale bien, el proceso continúa como habíamos visto anteriormente.

3:39Ahora, ¿Qué ocurre si se pierde el segundo ACK en vez del segundo segmento?

3:43Si solo se pierde el segundo ACK vamos a ver que el emisor recibe el primer ACK, mueve su ventana,

3:48envía el siguiente segmento y luego recibe el tercer ACK.

3:52Por cómo funciona Go-Back N, sabemos que el receptor enviará un ACK solo si ya recibió los segmentos anteriores con éxito.

3:59De esta forma, cuando el emisor recibe el tercer ACK sabe que tanto el segundo como el tercer segmento llegaron con éxito,

4:05incluso si no le llegó el segundo ACK.

4:07Luego avanza su ventana en 2 y continúa los envíos.

4:12Con Go-Back N todavía no hacemos un uso tan eficiente de los recursos,

4:18pues al cumplirse el timeout volvemos a enviar toda la ventana.

4:22Aquí es donde entra Selective Repeat.

4:24En el caso de Selective Repeat manejamos una ventana en el emisor y una en el receptor.

4:29Como su nombre sugiere, aquí sólo reenviamos los segmentos cuyo ACK no llegó luego de un tiempo.

4:35Para ello, cada segmento tiene su propio timeout.

4:38Y las ventanas avanzan tanto como pueden cada vez que puedan.

4:41Veamos cómo funciona.

4:43Supongamos que tenemos una ventana nuevamente de tamaño 3.

4:46Partimos mandando los primeros 3 segmentos en orden y ponemos un timer para cada segmento enviado.

4:52Ahora notemos que el receptor también tiene una ventana.

4:56Esta ventana espera que le lleguen números de secuencia entre Y e Y+2.

5:00Conforme van llegando los segmentos se verifica el número de secuencia, se añaden a la ventana del receptor,

5:06se envía el ACK correspondiente y se mueve la ventana tanto como se pueda.

5:11Al mover la ventana, se mueven los números de secuencia que el receptor está esperando.

5:15Aquí nos llegan 3 elementos consecutivos de forma exitosa, por lo que la ventana del receptor avanza 3 espacios, uno tras otro.

5:23Por el lado del emisor, conforme llegan los ACK los vamos almacenando y vamos avanzando la ventana lo más que podamos.

5:28Cada vez que entra un nuevo elemento a la ventana del emisor, lo enviamos al receptor y reseteamos el timeout.

5:35Esta secuencia continúa hasta que se reciba todo el mensaje.

5:41Supongamos que se pierde el primer segmento de la ventana.

5:44Aquí vemos que el receptor recibe el segundo y el tercer segmento, los almacena y envía sus ACKs.

5:50Sin embargo, como no ha llegado el primer elemento de la ventana, esta no puede avanzar.

5:54Lo mismo ocurre con el emisor, le llegan los ACKs del segundo y el tercer segmento, por lo que se detienen sus timers y se almacenan sus ACKs.

6:01Pero al no haber llegado el ACK del primer segmento no puede avanzar su ventana y, por lo tanto, no puede enviar más segmentos.

6:09Cuando se cumple el timeout del primer segmento, este se vuelve a enviar.

6:13Al ser recibido por el receptor, este envía su ACK y avanza su ventana 3 espacios.

6:18Ahora el emisor recibe el ACK del primer segmento y logra avanzar su ventana en 3* espacios.

6:25Veamos qué ocurre si llegan bien los segmentos, pero se pierde el primer ACK.

6:30Aquí el emisor recibe todo bien, por lo que avanza su ventana en 3.

6:35Sin embargo, al perderse el primer ACK, el emisor no puede avanzar su ventana.

6:40Al cumplirse el timeout del primer segmento, el emisor reenvía este segmento.

6:45Sin embargo, ¡el receptor ya recibió dicho segmento!

6:48Aquí vemos que el segmento tiene un número de secuencia que cae fuera del rango que espera, por lo que se descarta el segmento.

6:55Como en este caso el número de secuencia que recibe es menor que su rango esperado,

6:59el receptor reenvía el ACK asociado al número de secuencia que acaba de recibir.

7:03De esta forma, el emisor ahora sí recibe el ACK del segmento 1 y logra avanzar su ventana en 2 espacios.

7:09De esta forma, Selective Repeat evita reenviar segmentos de forma innecesaria (en la mayoría de los casos)

7:16En esta clase hemos visto:

7:17Sliding window

7:18Go-back N

7:19Y Selective Repeat

7:20Cualquier duda o consulta, ¡no duden en contactar al equipo docente!

Recently added transcripts

Browse the whole transcript library

This transcript was generated from the captions YouTube publishes for this video. Get the transcript of any YouTube video atfreeyoutubetranscribe.com, free, unlimited, no sign-up.