commit a27d6198dfbd11b2de343b022f4a7212226b6656
parent 6ba9de13df159d7d5409053d687d7cbe230cdcd4
Author: Martin Kloeckner <mjkloeckner@gmail.com>
Date: Tue, 22 Oct 2024 00:15:00 -0300
update `guias/2`
Diffstat:
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).
>
> { 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.