repos/TB067

Apuntes y resueltos de la materia Redes de Comunicaciones (TB067)
Commits Files Refs README
commit a27d6198dfbd11b2de343b022f4a7212226b6656
parent 6ba9de13df159d7d5409053d687d7cbe230cdcd4
Author: Martin Kloeckner <mjkloeckner@gmail.com>
Date:   Tue, 22 Oct 2024 00:15:00 -0300

update `guias/2`

Diffstat:
Mguias/2/2.md | 120++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--------------
Mguias/2/2.pdf | 0
2 files changed, 100 insertions(+), 20 deletions(-)
diff --git a/guias/2/2.md b/guias/2/2.md
@@ -84,30 +84,37 @@ a. Suponiendo números de secuencia y reconocimiento relativos al comienzo de la
    Finalmente, el numero de secuencia de B debería ser 1, el mismo que luego de
    iniciada la sesión TCP ya que el host B no le envía datos a A, solo valida
    los segmentos que A le envía.
-b. Si el segmento de 40 bytes llega primero, puede ocurrir que el host B lo
-   descarte o que lo guarde en un buffer hasta recibir todos los segmentos, esto
-   depende de como esté configurado el stack TCP/IP en el host B.
+b. Si el segmento de 40 bytes llega primero, el numero de reconocimiento del
+   host B y el numero de secuencia del paquete recibido de 40 bytes no
+   coinciden; el numero de reconocimiento de B sería 145 mientras que el numero
+   de secuencia del paquete es 165, es decir, falta llegar un paquete de 20
+   bytes. Ante esta situación puede ocurrir que el host B descarte el paquete de
+   40 bytes o que lo guarde en un buffer hasta recibir el segmento faltante,
+   esto depende de como esté configurado el stack TCP/IP en el host B.
+c. Luego de que el timeout expira en el host A, este retransmite el segmento,
+   en el host B el segmento ya se había recibido dicho segmento por lo que se
+   descarta pero se vuelve a enviar el segmento ACK al host A.
 
-\pagebreak
 > 6. En la secuencia de envío de segmentos TCP reflejada en la figura, en la que
 >    las líneas horizontales representan tics de reloj, se sabe que:
 > 
->    a. A desea enviar a B 200 bytes de datos.
->    b. B desea enviar a A 100 bytes de datos.
->    c. A y B usan un tamaño fijo de datos de 50 bytes.
->    d. A y B ajustan la ventana acorde con “congestion avoidance”.
->    e. Tanto A como B sólo transmiten segmentos coincidiendo con el tic de
->       reloj.
->    f. Todos los segmentos tardan en llegar al destino medio tic de reloj, sino
->       se pierden.
->    g. A y B tienen un plazo para retransmitir segmentos de 5 tics de reloj.
->    h. A y B enviarán segmentos con datos siempre que puedan.
->    i. A y B enviarán un asentimiento cada vez que reciban un segmento con
->       datos.
->    j. Teniendo en cuenta que la zona sombreada indica un periodo de tiempo
->       durante el cual todos los segmentos transmitidos se perderán y que fuera
->       de dicho periodo no se perderá ningún segmento, complete la transmisión
->       en la figura (incluyendo el cierre de conexión).
+>    * A desea enviar a B 200 bytes de datos.
+>    * B desea enviar a A 100 bytes de datos.
+>    * A y B usan un tamaño fijo de datos de 50 bytes.
+>    * A y B ajustan la ventana acorde con “congestion avoidance”.
+>    * Tanto A como B sólo transmiten segmentos coincidiendo con el tic de
+>      reloj.
+>    * Todos los segmentos tardan en llegar al destino medio tic de reloj, sino
+>      se pierden.
+>    * A y B tienen un plazo para retransmitir segmentos de 5 tics de reloj.
+>    * A y B enviarán segmentos con datos siempre que puedan.
+>    * A y B enviarán un asentimiento cada vez que reciban un segmento con
+>      datos.
+> 
+>    Teniendo en cuenta que la zona sombreada indica un periodo de tiempo
+>    durante el cual todos los segmentos transmitidos se perderán y que fuera
+>    de dicho periodo no se perderá ningún segmento, complete la transmisión
+>    en la figura (incluyendo el cierre de conexión).
 > 
 >       ![\ ](ej6.png){ width=75% }
 >
@@ -187,5 +194,78 @@ b. Si el segmento de 40 bytes llega primero, puede ocurrir que el host B lo
 >    Se pide: Analizar los campos relevantes de la información de nivel de
 >    transporte que contienen.
 
+Analizando el encabezado Ethernet de todas las tramas (bytes en verde) se puede
+ver que en todas se utiliza el protocolo de red IPv4, ya que en el ultimo par de
+bytes se encuentra `0x0800`. 
+
+Del encabezado IPv4 (bytes en rojo) se puede ver que el protocolo utilizado en
+las tramas 1 y 2 es UDP, ya que en el décimo byte se encuentra `0x11` (en
+decimal `17`), el cual es el numero correspondiente con este protocolo.
+
+\vspace{1em}
+\renewcommand{\arraystretch}{1.25}
+\begin{tabularx}{1.00\textwidth} { 
+  | >{\centering\arraybackslash}X 
+  | >{\centering\arraybackslash}X 
+  | >{\centering\arraybackslash}X 
+  | >{\centering\arraybackslash}X 
+  | >{\centering\arraybackslash}X | }
+  \hline
+    Trama & Src Port & Dest Port & Length &  Checksum \\ \hline
+      1   &   1030   &    53     &    42  &   11432   \\ \hline
+      2   &    53    &   1030    &    72  &   13845   \\ \hline
+\end{tabularx}
+\vspace{1em}
+
+Para las tramas restantes: 3, 4, 5 y 6, el protocolo es TCP, ya que en lugar de
+encontrarse `0x11` se encuentra `0x6` (`6` en decimal) el cual corresponde con
+este protocolo.
+
+\vspace{1em}
+\renewcommand{\arraystretch}{1.25}
+\begin{tabularx}{1.00\textwidth\small} { 
+  | >{\centering\arraybackslash}X 
+  | >{\centering\arraybackslash}X 
+  | >{\centering\arraybackslash}X 
+  | >{\centering\arraybackslash}X 
+  | >{\centering\arraybackslash}X 
+  | >{\centering\arraybackslash}X 
+  | >{\centering\arraybackslash}X | }
+  \hline
+  Trama & Src Port & Dest Port &    Seq \#  &    Ack \#  & Win Size &  Flags    \\ \hline
+    3   &   3156   &    80     & 4041778071 &      0     &  65535   &  SYN      \\ \hline
+    4   &    80    &   3156    &  373009933 & 4041778072 &   5840   &  SYN, ACK \\ \hline
+    5   &   3156   &    80     & 4041778072 &  373009934 &  65535   &  ACK      \\ \hline
+    6   &   3156   &    80     & 4041778072 &  373009934 &  65535   &  PSH, ACK \\ \hline
+\end{tabularx}
+\vspace{1em}
+
 > 9. ¿Qué son Slow Start y Congestion Avoidance? ¿Cómo intervienen sobre el
      tráfico?
+
+Arranque lento (Slow Start) y Evitación de Congestión (Congestion Avoidance) son
+dos mecanismo que utiliza TCP para evitar la congestion en la linea al
+transmitir datos. Para evitar la congestion en la linea, se limita la cantidad
+de bytes que el emisor puede enviar sin ser validados por el receptor. Esta
+magnitud que define la cantidad de bytes en la linea sin ser reconocidos, se
+almacena en el emisor como **ventana de congestion**.
+
+Cuando se establece una sesión TCP, la ventana de congestion del emisor se
+establece en `1 MSS` y se incrementa de acuerdo al mecanismo de Arranque lento,
+en el cual se duplica por cada segmento ACK recibido, esto provoca que la
+ventana de congestion crezca exponencialmente en cada periodo RTT hasta que se
+produzca congestion en la red, detectado por ejemplo por la perdida de un
+paquete (el cual luego se retransmite), luego de que se detecte la congestion la
+ventana de congestion vuelve a un valor pequeño como `1 MSS` y se define un
+umbral, el cual queda determinado por la mitad del valor de la ventana de
+congestion cuando se produzco la congestion; el valor de la ventana de
+congestión vuelve a incrementar exponencialmente pero esta vez hasta el valor
+umbral desde donde luego se cambia el mecanismo a evitación de la congestion, en
+el cual la ventana de congestion se incrementa linealmente en `1 MSS` por cada
+RTT. El mecanismo de arranque lento también puede terminar si se detecta 3
+paquetes ACK duplicados, en cuyo caso TCP realiza una retransmisión rápida.
+
+En el modo de evitación de la congestión, el valor de la ventana de recepción es
+aproximadamente la mitad del valor que tuvo en la transmisión anterior en la
+cual hubo congestion, en este modo la ventana de congestion se incrementa
+linealmente y se termina en los mismo caso que para arranque lento.
diff --git a/guias/2/2.pdf b/guias/2/2.pdf
Binary files differ.