repos/TB067

Apuntes y resueltos de la materia Redes de Comunicaciones (TB067)
Commits Files Refs README
commit 0bbfc3acbb4e80478724e0f15e147ce80e504778
parent fd3c00e4d0f9f279bc3505a2bdbf8dcc63f19d5b
Author: Martin Kloeckner <mjkloeckner@gmail.com>
Date:   Fri, 18 Oct 2024 16:28:18 -0300

update `guias/1`

Diffstat:
Mguias/1/1.md | 295++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-------------
Mguias/1/1.pdf | 0
Aguias/1/ej20.png | 0
Aguias/1/ej22.png | 0
Mguias/style.tex | 9++++++---
5 files changed, 255 insertions(+), 49 deletions(-)
diff --git a/guias/1/1.md b/guias/1/1.md
@@ -89,33 +89,28 @@ si no hubiera servidor caché.
 > 10. La siguiente cadena de caracteres ASCII ha sido capturada por Wireshark
 >     cuando el navegador enviaba un mensaje GET HTTP. Responda a las siguientes
 >     cuestiones, indicando en qué parte del siguiente mensaje GET HTTP se
->     encuentra la respuesta.  
->  
-> \vspace{1em}
-> ```
->    GET /cs453/index.html HTTP/1.1<cr><lf>
->    Host: gaia.cs.umass.edu<cr><lf>
->    User-Agent: Mozilla/5.0 (Windows;U; Windows NT 5.1; en-US; rv:1.7.2)
->    Gecko/20040804 Netscape/7.2 (ax)<cr><lf>
->    Accept:ext/xml, application/xml, application/xhtml+xml, text/html;q=0.9,
->    text/plain;q=0.8, > image/png,*/*;q=0.5<cr><lf>
->    Accept-Language: en-us,en;q=0.5<cr><lf>
->    Accept-Encoding: zip,deflate<cr><lf>
->    Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7<cr><lf>
->    Keep-Alive: 300<cr><lf>
->    Connection:keep-alive<cr><lf><cr><lf>
-> ```
-> \vspace{1em}
-> 
-> <!-- `fix vim syntax -->
->   a. ¿Cuál es el URL del documento solicitado por el navegador?
->   b. ¿Qué versión de HTTP se está ejecutando en el navegador?
->   c. ¿Qué tipo de conexión solicita el navegador, persistente o no
->      persistente?
->   d. ¿Cuál es la dirección IP del host en el que se está ejecutando el
->      navegador?
->   e. ¿Qué tipo de navegador inicia este mensaje? ¿Por qué es necesario indicar
->      el tipo de navegador en un mensaje de solicitud HTTP?
+>     encuentra la respuesta.
+>     a. ¿Cuál es el URL del documento solicitado por el navegador?
+>     b. ¿Qué versión de HTTP se está ejecutando en el navegador?
+>     c. ¿Qué tipo de conexión solicita el navegador, persistente o no
+>        persistente?
+>     d. ¿Cuál es la dirección IP del host en el que se está ejecutando el
+>        navegador?
+>     e. ¿Qué tipo de navegador inicia este mensaje? ¿Por qué es necesario
+>        indicar el tipo de navegador en un mensaje de solicitud HTTP?  
+>     ```
+>     GET /cs453/index.html HTTP/1.1<cr><lf>
+>     Host: gaia.cs.umass.edu<cr><lf>
+>     User-Agent: Mozilla/5.0 (Windows;U; Windows NT 5.1; en-US; rv:1.7.2)
+>     Gecko/20040804 Netscape/7.2 (ax)<cr><lf>
+>     Accept:ext/xml, application/xml, application/xhtml+xml, text/html;q=0.9,
+>     text/plain;q=0.8, > image/png,*/*;q=0.5<cr><lf>
+>     Accept-Language: en-us,en;q=0.5<cr><lf>
+>     Accept-Encoding: zip,deflate<cr><lf>
+>     Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7<cr><lf>
+>     Keep-Alive: 300<cr><lf>
+>     Connection:keep-alive<cr><lf><cr><lf>
+>     ```
 
 a. La URL del documento solicitado es `www.gaia.cs.umass.edu/cs453/index.html`
 ya que se indica en la sección del encabezado `Host:`.
@@ -134,11 +129,14 @@ indica que es compatible con ese navegador, y se incluye por razones históricas
 > 11. El siguiente texto muestra la respuesta devuelta por el servidor al mensaje
 >     de solicitud GET HTTP del problema anterior. Responda a las siguientes
 >     cuestiones, indicando en qué parte del siguiente mensaje se encuentran las
->     respuestas.  
-> 
-> \vspace{1em}
-> 
-> ```
+>     respuestas.
+>     a. ¿Ha podido el servidor encontrar el documento? ¿En qué momento se
+>     suministró la respuesta con el documento?
+>     b. ¿Cuándo fue modificado por última vez el documento?
+>     c. ¿Cuántos bytes contiene el documento devuelto?
+>     d. ¿Cuáles son los primeros cinco bytes del documento que se está devolviendo?
+>     e. ¿Ha acordado el servidor emplear una conexión persistente?  
+>     ```
 >     HTTP/1.1 200 OK<cr><lf>Date: Tue, 07 Mar 2008 12:39:45GMT<cr><lf>Server:
 >     Apache/2.0.52 (Fedora) <cr><lf>Last-Modified: Sat, 10 Dec2005 18:27:46
 >     GMT<cr><lf>ETag: ”526c3-f22-a88a4c80”<cr><lf>Accept- Ranges:
@@ -151,22 +149,14 @@ indica que es compatible con ese navegador, y se incluye por razones históricas
 >     Netscape]”><lf> <title>CMPSCI 453 / 591 / NTU-ST550ASpring 2005
 >     homepage</title><lf></head><lf> <aquí continúa el texto del documento (no
 >     mostrado)>
-> ```
-> 
-> \vspace{1em}
-> 
->    a. ¿Ha podido el servidor encontrar el documento? ¿En qué momento se
->    suministró la respuesta con el documento?
->    b. ¿Cuándo fue modificado por última vez el documento?
->    c. ¿Cuántos bytes contiene el documento devuelto?
->    d. ¿Cuáles son los primeros cinco bytes del documento que se está devolviendo?
->    e. ¿Ha acordado el servidor emplear una conexión persistente?
+>     ```
 
 a. Si lo ha podido encontrar ya que el codigo de respuesta es `200 OK`, el
 moemnto en que se suministro la respuesta fue en la fecha `Tue, 07 Mar 2008
 12:39:45 GMT`.
-b. El documento fue modificado por utilma vez en la fecha `Sat, 10 Dec2005
-18:27:46 GMT`.
+b. El documento recibido por el servidor fue modificado por utilma vez en la
+fecha `Sat, 10 Dec 2005 18:27:46 GMT`, como se puede ver en la seccion
+`Last-Modified` del encabezado.
 c. El documento devuelto contiene `3874` bytes, esto se puede ver en la etiqueta
 `Length` del encabezado.
 d. Los primeros 5 bytes son `<!doc`, la secuencia `<cr><lf><cr><lf>` indica el
@@ -177,5 +167,218 @@ indica `Keep-Alive`.
 
 > 12. Haga Telnet a un servidor web y envíe un mensaje de solicitud multilínea.
 >     Incluya en el mensaje de solicitud la línea de encabezado
->     `If-modified-since:` para forzar un mensaje de respuesta con el código de
->     estado 304 No modificado.
+>     `If-modified-since:` para forzar un mensaje de respuesta con el código de
+>     estado 304 No modificado.
+
+Se accede utilizando telnet al servidor web `www.example.com` en el puerto 80,
+de la siguiente manera:
+
+```console
+$ telnet www.example.com 80
+Connected to example.com.
+Escape character is '^]'.
+```
+
+Luego se envia un mensaje multilinea de peticion de `index.html` con el codigo
+`If-Modified-Since: Wed, 10 Oct 2024 10:00:00 GMT`, con lo cual el servidor
+responde
+
+```console
+HTTP/1.1 304 Not Modified
+Accept-Ranges: bytes
+Age: 596825
+Cache-Control: max-age=604800
+Date: Thu, 17 Oct 2024 16:10:53 GMT
+Etag: "3147526947+gzip"
+Expires: Thu, 24 Oct 2024 16:10:53 GMT
+Last-Modified: Thu, 17 Oct 2019 07:18:26 GMT
+Server: ECAcc (mid/871B)
+Vary: Accept-Encoding
+X-Cache: HIT
+```
+
+Notese que se agrega el campo `Host: example.com` ya que este servidor acepta
+HTTP versión 1.1 y en esa version es obligatorio este campo.
+
+> 13. La LAN de una universidad tiene una velocidad de transmisión de 100 Mbps.
+>     Para acceder a Internet tiene un enlace de acceso cuya velocidad de
+>     transmisión es de 10 Mbps. La velocidad media de paquetes es de 20
+>     solicitudes / seg. Si cada paquete es de 1Mbit, se pide:
+>     a. La velocidad media de los bits en bits/seg.
+>     b. La intensidad de tráfico en la LAN.
+>     c. La intensidad de tráfico en el enlace de acceso.
+>     d. ¿Cómo son las intensidades de tráfico calculadas comparadas con 1? ¿Qué
+>        significa esa comparación en términos de retardos?
+>     e. Proponga dos soluciones posibles para bajar la intensidad de tráfico en
+>        el enlace de acceso.
+>     f. Suponga que la universidad instala una caché y que la tasa de acierto
+>        es de 0,45. ¿Qué porcentaje de solicitudes serán satisfechas casi de
+>        inmediato?¿Qué porcentaje de solicitudes serán satisfechas por los
+>        servidores de origen?
+
+> 14. Un cliente HTTP desea recuperar un documento web que se encuentra en un
+>     URL dado. Inicialmente, la dirección IP del servidor HTTP es desconocida.
+>     ¿Qué protocolos de la capa de aplicación y de la capa de transporte además
+>     de HTTP son necesarios en este escenario?
+
+En principio para obtener la direccion IP del servidor HTTP se necesita el
+protocolo del nivel de aplicacion DNS, de manera tal que resuelva la URL y
+obtenga asi la direccion IP del servidor, luego se necesita un protocolo de la
+capa de aplicacion que realice una peticion al servidor HTTP por el archivo, por
+ejemplo FTP; el protocolo FTP utiliza el protocolo de transporte TCP para obtner
+los archivos del servidor.
+
+> 15. Mencione 3 motivos por los cuales un servidor de DNS no puede ser
+>     centralizado.
+
+En principio porque un servidor DNS es critico para resolver la URL de otros
+servidores de internet, por lo que ser centralizado implicaria la dependencia
+de una sola organizacion o servidor central.
+
+Otro motivo seria la enorme cantidad de tráfico que este servidor centralizado
+tendria que manejar.
+
+Por ultimo que un servidor sea centralizado implicaria una enorme perdida de
+rendimiento, ya que cualquier region que quiera acceder a internet deberia pasar
+por este servidor centralizado, que puede que esté a una distancia muy  lejana.
+
+> 16. Dada la jerarquía de servidores DNS (Servidores DNS raíz, Servidores de
+>     dominio de nivel superior y servidores autoritativos) se pide
+>     a. ¿Qué direcciones IP proporcionan cada uno?
+>     b. Cuando un host realiza una consulta DNS, ¿a qué tipo de servidor de
+>        DNS, que actúa como proxy llega?
+>     c. Llamamos R al Servidor DNS raíz, T al Servidor TLD, A al servidor
+>        autoritativo, L al servidor local y H al host que realiza la consulta.
+>        Suponíamos que el servidor TLD conoce el servidor DNS autoritativo
+>        correspondiente al nombre de host. Indique el trayecto del mensaje de
+>        consulta desde que el host lo inicia hasta que obtiene la dirección IP
+>        del host consultado mediante la letra correspondiente, un guión, la
+>        letra siguiente y así sucesivamente.
+>     d. ¿Cuántos mensajes DNS se necesitan enviar para obtener la dirección
+>        correspondiente a un nombre de host si no se encuentra en el proxy del
+>        servidor local y servidor TLD conoce el servidor DNS autoritativo
+>        correspondiente al nombre del host consultado?
+
+> 17. ¿Cuál es la diferencia entre consultas de DNS iterativas y consultas
+>     recursivas?
+
+Una consulta DNS recursiva ocurre cuando un servidor DNS se comunica con otros
+servidores DNS para intentar resolver una direccion URL y devolverla al cliente,
+en cambio, una consulta DNS iterativa ocurre cuando el cliente se comunica
+directamente con cada servidor DNS involucrado en la resolucion de la direccion
+URL[^1].
+
+[^1]: [https://www.cloudflare.com/learning/dns/what-is-recursive-dns/](https://www.cloudflare.com/learning/dns/what-is-recursive-dns/)
+
+> 18. Dado que la correspondencia entre el nombre de un host y su dirección IP
+>     puede cambiar, ¿cuál es el comportamiento de un servidor de DNS respecto
+>     de la información almacenada en su caché DNS para prevenir esto?
+
+> 19. Un cliente se conecta a una aplicación de home banking basada en la web
+>     mediante protocolo HTTP, el cual no tiene memoria del estado de la
+>     conexión. Una vez que inició sesión, ¿cómo identifica el servidor al
+>     cliente?
+
+> 20. Supongamos que estás realizando un análisis de tráfico de red y te
+>     encuentras con la siguiente captura de dos paquetes DNS relacionados con
+>     la resolución de nombres de dominio para "wireshark.org".
+>     a. ¿Qué tipo de consulta DNS se envía en el primer paquete y quién la
+>        realiza?
+>     b. ¿Cuál es la dirección IP del servidor DNS al que se envía la consulta
+>        DNS en el primer paquete?
+>     c. ¿Qué tipo de respuesta se recibe en el segundo paquete y cuál es la
+>        dirección IP asociada al nombre de dominio "wireshark.org"?
+>     d. ¿Cuáles son las direcciones MAC de origen y destino en ambos paquetes
+>        Ethernet?
+>     e. ¿Puedes explicar por qué el puerto de origen y destino cambia entre la
+>        consulta DNS en el primer paquete y la respuesta DNS en el segundo
+>        paquete?
+>     ![\ ](ej20.png)
+
+> 21. Descargar, analizar mediante Wireshark y contestar las preguntas sobre la
+>     transmisión de datos HTTP relacionada con la descarga de un archivo de
+>     imagen desde un servidor web a partir de la captura de paquetes de
+>     HTTP.cap del siguiente enlace:
+>     [https://packetlife.net/captures/category/web/](https://packetlife.net/captures/category/web/)
+>     a. ¿Qué recurso se está solicitando en el primer paquete HTTP y quién
+>        realiza la solicitud?
+>     b. ¿Cuál es el código de estado de la respuesta del servidor en el segundo
+>        paquete y qué significa este código?
+>     c. ¿Qué tipo de archivo se está transfiriendo según la información
+>        proporcionada en la captura?
+>     d. ¿Cuál es el tamaño del contenido (en bytes) de la imagen que se está
+>        transfiriendo según la respuesta del servidor?
+>     e. ¿Cuál es la longitud de la respuesta HTTP (en bytes) en el segundo
+>        paquete?
+>     f. ¿Cuál es la fecha y hora en que se envió la respuesta del servidor al
+>        cliente según los datos proporcionados en la captura?
+
+> 22. Enviar un mensaje de consulta DNS directamente desde el host en el que
+>     está trabajando al servidor google.com.ar mediante nslookup.
+>     a. ¿Qué información devuelve este comando?
+>     b. ¿Cuál es la dirección IP del servidor web de google.com.ar?
+>     c. ¿Cuál es la dirección IP del servidor DNS que proporcionó la respuesta
+>        al comando nslookup?
+>     d. La respuesta de este comando proporciona dos datos, ¿Que representa
+>        cada uno?
+>     e. Existen tres clases de servidores DNS: los servidores DNS raíz, los
+>        servidores DNS de dominio de nivel superior (TLD, Top-Level Domain) y
+>        los servidores DNS autoritativos. Los servidores de nombres raíz
+>        proporcionan las direcciones IP de los servidores TLD. Los servidores
+>        TLD proporcionan las direcciones IP para los servidores DNS
+>        autoritativos. Los servidores autoritativos contienen las direcciones
+>        IP y sus nombres correspondientes de cada página web. ¿Qué servidor,
+>        según el esquema de la figura siguiente, devuelve esta información?
+> 
+>     ![\ ](ej22.png){ width=50% }
+
+> 23. Para el comando `nslookup -type=NS fi.uba.ar` se pide:
+>     a. ¿Qué información devuelve el comando?
+>     b. ¿La respuesta al comando nslookup provino de un servidor autorizado o no
+>        autorizado?
+>     c. ¿Qué significa “Respuesta no autoritativa” en la respuesta?
+>     d. ¿De qué tipo es el archivo de recursos que contiene la información
+>        devuelta?
+>     e. ¿Por qué hay dos tipos diferentes de direcciones IP?
+
+> 24. ¿Qué respuesta aparece en la pantalla con el comando nslookup 157.92.1.1?
+ 
+> 25. DNS usa UDP en vez de TCP. Si se pierde un paquete DNS, no hay
+>     recuperación automática. ¿Provoca esto un problema y, de ser así, cómo se
+>     resuelve?
+ 
+> 26. Suponga que en UDPCliente.py, después de crear el socket, añadimos esta
+>     línea: clientSocket.bind((’’, 5432))
+>     a. ¿Será necesario modificar el programa UDPServidor.py?
+>     b. ¿Cuáles son los números de puerto para los sockets en UDPCliente y
+>        UDPServidor luego del cambio?
+>     c. ¿Cuáles eran antes de realizar este cambio?
+ 
+> 27. Análisis de captura de paquetes del protocolo DNS.
+>     a. Mediante el comando `ipconfig /all` obtener
+>        * Dirección IPv4 e IPv6 la placa de red o de WiFi según corresponda.
+>        * Dirección MAC
+>        * Dirección IP de la puerta de enlace predeterminada
+>        * Direcciónes IP del servidor DNS  
+>
+>     b. En Wireshark, en Interface List (captura-opciones-entrada) elija la
+>        asociada a la IP y MAC registrada en a. Guardar la captura en un archivo
+>        llamado ejercicio30.pcap (captura-opciones-salida)
+>     c. Comience a capturar paquetes.
+>     d. Ir a www.google.com en un navegador.
+>     e. Al ver la página de Google detenga la captura de paquetes.
+>     f. Filtre paquetes DNS Si no se ve ninguno, cerrar el navegador web y
+>        enviar el comando ipconfig /flushdns. Repetir los pasos desde b. Si no
+>        se ven paquetes DNS, enviar el comando nslookup www.google.com en vez
+>        de usar el navegador.
+>     g. Busque un paquete standard query (A) google.com y complete la tabla:
+> 
+>         Número de trama:  
+>         Cantidad de bytes capturados:  
+>         Dirección MAC de origen:  
+>         Dirección MAC registrada en a):  
+>         Dirección MAC de destino:  
+>         Dirección IP de origen:  
+>         Dirección IP registrada en a):  
+>         Dirección IP de destino:  
+>         Dirección IP de la puerta de enlace predeterminada registrada en a)  
diff --git a/guias/1/1.pdf b/guias/1/1.pdf
Binary files differ.
diff --git a/guias/1/ej20.png b/guias/1/ej20.png
Binary files differ.
diff --git a/guias/1/ej22.png b/guias/1/ej22.png
Binary files differ.
diff --git a/guias/style.tex b/guias/style.tex
@@ -2,7 +2,7 @@
 
 % page setup
 \usepackage[a4paper,
-            top=2.0cm,
+            top=2.0cm,
             bottom=2.0cm,
             left=1.75cm,
             right=1.75cm,
@@ -189,10 +189,10 @@ BoldFont        =   *-Bold,
     enhanced,
     breakable,
     size=minimal,
-    left=12pt,
+    left=18pt,
     top=12pt,
     bottom=12pt,
-    right=14pt,
+    right=12pt,
     boxrule=1pt,
     sharp corners=all,
     colback=bgcolor,
@@ -236,3 +236,6 @@ BoldFont        =   *-Bold,
 \usepackage{amsfonts}
 \usepackage{subcaption}
 \usepackage{float}
+\usepackage{tabularx}
+
+\usepackage{bbding} % HandRight (install texlive-fontsextra)