Examen de Redes - ETSIA – 9 de septiembre - Primer Parcial Apellidos, Nombre: Grupo: AUTORIZO a los profesores de la asignatura Redes de 2º curso de la ETSIA a publicar las calificaciones de los exámenes de la asignatura en la web o microweb de la asignatura. Firma: .................................................. 1. (0,5 puntos) Indica cómo puede un servidor web saber qué cliente (Mozilla, Internet Explorer, etc.) está solicitándole una página web. ¿Lo puede saber siempre? Justifica la respuesta. Mediante una cabecera en la petición HTTP. Concretamente la cabecera User-Agent: No lo puede saber siempre ya que esta cabecera no es obligatoria. 2. (1 punto) El protocolo SMTP no requiere la autenticación del cliente. ¿Debe permitirse que clientes ajenos a la organización que gestiona un servidor SMTP abran una sesión SMTP en el servidor (tengáse en cuenta que estos clientes pueden estar incluidos en agentes de usuario u otros servidores)? ¿Por qué? ¿Qué acciones deberían permitírseles a cada uno de estos tipos de clientes? Sí debe permitirse que clientes ajenos a la organización abran una sesión SMTP en el servidor. Es necesario para que otros servidores SMTP hagan llegar sus mensajes a los destinatarios de la organización. Estos clientes “ajenos” sólo deberían tener la posibilidad de entregar mensajes dirigidos a destinatarios de la propia organización. No se les debería permitir que utilizasen a nuestro servidor como retransmisor para enviar mensajes a otros destinatarios externos. 3. (0,75 puntos) En una comunicación de datos mediante FTP, ¿qué es el modo activo?, ¿cómo se conoce la dirección IP y el puerto al que conectarse? Modo activo: cuando se va a transferir un archivo, el servidor inicia la conexión de datos desde su puerto 20 al puerto que le indica el cliente. Para comunicarle el puerto de conexión (y la dirección IP) el cliente envía por la conexión de control la orden PORT d1,d2,d3,d4,p1,p2 donde d1.d2.d3.d4 es la dirección IP en la notación usual y p1*256+p2 es el puerto en decimal. 1 4. (2 puntos) Dado el siguiente servidor escrito en Java: import java.net.*; import java.io.*; class servidor { public static void main(String args[]) throws IOException { ServerSocket ss=new ServerSocket(7777); while (true) { Socket s=ss.accept(); PrintWriter out = new PrintWriter(s.getOutputStream(),true); out.println("Bienvenido!"); s.close(); } } } a) Escribe un cliente en Java que se conecte a este servidor que se ejecuta en “zoltar.redes.upv.es”, lea la información que envía el servidor y la visualice por pantalla. import java.net.*; import java.io.*; class cliente { public static void main(String args[]) throws UnknownHostException,IOException { Socket s = new Socket("zoltar.redes.upv.es",7777); BufferedReader entrada = new BufferedReader(new InputStreamReader(s.getInputStream())); System.out.println(entrada.readLine()); } } b) Diseña una versión concurrente del servidor. import java.io.*; import java.net.*; class servidorConcurrente extends Thread { Socket sock; servidorConcurrente(Socket s) { sock = s; } public void run() { try { PrintWriter salida = new PrintWriter(sock.getOutputStream(),true); salida.println("Bienvenido!"); sock.close(); } catch (Exception e) { } } public static void main(String[] args) throws IOException { ServerSocket ss=new ServerSocket(7777); while (true) { Socket s=ss.accept(); servidorConcurrente t = new servidorConcurrente(s); t.start(); } } } 5. (2 puntos) Tras resolver el nombre de un servidor web, un cliente se conecta a él para obtener una página que contiene un documento HTML de 100 bytes y dos gráficos de 3000 bytes cada uno (3 objetos en 2 total). Las conexiones emplean los mecanismos de control de la congestión TCP, con tamaño inicial de ventana de congestión igual a uno. Para cada segmento recibido se genera un ACK de forma inmediata. El MSS del segmento es de 1000 bytes. Todas las peticiones HTTP tienen un tamaño de 100 bytes. El nivel de enlace añade cabeceras de 14 bytes y no impone ninguna restricción al tamaño máximo o mínimo de trama. El nivel de red añade cabeceras de 20 bytes. La velocidad de transmisión es 10 Mbps, y el tiempo de propagación 1 segundo. Calcula el tiempo que tarda en bajarse dicha página si: a) El navegador emplea el protocolo HTTP 1.0 y no admite conexiones concurrentes. b) El navegador y el servidor utilizan el protocolo HTTP 1.1 sin pipeline. La solución a este problema no es única. Mostraremos aquí una de las posibles soluciones. a) HTTP 1.0: conexiones no persistentes. Se necesita una conexión para cada uno de los objetos. SYN SYN CK ,A SYN ACK GET SYN RTT 1 L HTM ACK RTT 3 ACK RTT 4 K RTT 1 ACK GET . 1.1 Graf ACK . 1.2 Graraf f. 1.3 GACK ACK . 1.4 Graf ACK RTT 2 FIN FIN, ACK , AC Para cada gráfico se necesitarán 4 segmentos, ya que hay que transmitir 3000 bytes más las cabeceras HTML. El tiempo de transmision de las cabeceras HTML lo despreciaremos ya que se trata de unos pocos bytes. Desglosaremos el cálculo en dos partes: los tiempos de transmisión y los de propagación. FIN FIN, ACK ACK RTT 2 RTT 3 RTT 4 RTT 5 RTT 6 tiempos El tiempo de transmisión diferirá para los distintos segmentos, ya que tienen distintas longitudes: – segmentos sólo de control (ACKs, SYN, FIN) = 20 + 20 + 14 = 54 bytes (20 de la cabecera TCP, 20 de la cab. IP y 14 de la cab. de enlace de datos). – Gets y página HTML = 20 + 20 + 14 + 100 = 154 bytes – Gráficos = 1054 bytes T =27×544×1546×1054×8=63.026/10 7=6,3×10−3 s. trans El tiempo de propagación comprende 2 segundos por cada RTT (exceptuando el RTT 6). T =4×25×25×22=30 s. propag Como puede verse el tiempo de transmisión es despreciable frente al de propagación ya que es 3 órdenes de magnitud menor, por lo que el tiempo necesario para descargarse la página puede estimarse como: T ≈ T ≈30 s. propag total 3 b) HTTP 1.1: conexión persistente. Una conexión para todos los objetos. SYN SYN , AC K RTT 1 Nota: por claridad en el dibujo durante el RTT sólo se ha dibujado un único ACK de los 4. ACK GET L HTM ACK GET .1 r G af. 1. 1.2 f a r G ACK ACK Graf. 1.3.4 Graf. 1 GET .1 r G aff.. 22.2 a r G . 2.3 Graf Graf. 2.4 ACK FIN FIN, ACK ACK El tiempo de propagación es: RTT 2 T =7×2=14 s. propag El tiempo de transmisión es: RTT 3 7 −3 T =15×544×1546×1054×8=61.578/10 =6,1×10 trans s. También en este caso podemos aproximar el tiempo total al de RTT 4 propagación. T ≈ T ≈14 s. propag total RTT 5 RTT 6 RTT 7 6. (1 punto) El host B recibe peticiones de conexión TCP desde un host remoto llamado “A”. Realiza, para cada uno de los escenarios siguientes, un esquema gráfico detallando qué segmentos se intercambiarían TRAS la llegada de los segmentos que se indican. No hay que detallar ningún segmento de la posible fase de transferencia de datos. a) Llega una petición de conexión desde “A”, con número de secuencia 34, a un puerto donde no hay ningún servidor escuchando. SYN , 34 CK 35 RST y, A B rechaza la conexión b) Llega una petición de conexión desde “A”, con número de secuencia 34, a un puerto donde hay un servidor escuchando. Antes de que se haya completado el establecimiento de la conexión en “B” llega, desde “A”, una retransmisión de la petición anterior. SYN , 34 SYN , 34 5 , ACK 3 0 0 0 2 N SY 35 0 , ACK SYN 200 ACK 200 1 ACK 20 01 B elige como número de secuencia inicial 2000 Conexión establecida Se ignora 4 c) “B” envía una petición de conexión a “A”, con número de secuencia 75, a un puerto donde hay un servidor escuchando. Instantes después, “B” recibe una petición de conexión desde “A”, con número de secuencia 34, a un puerto donde también hay un servidor escuchando. A elige como número de secuencia inicial 3000 Conexión establecida 5 SYN 7 SYN 3 4 SYN 3 000, A CK 76 5 ACK 3 , 0 0 0 SYN 2 001 ACK 3 ACK 2 001 B elige como número de secuencia inicial 2000 Conexión establecida d) Llega una petición de conexión desde “A”, con número de secuencia 34. Tras enviar “A” la petición de conexión, el computador A es reiniciado. Cuando “B” contesta esta petición de conexión, el computador A vuelve a estar totalmente operativo, ¿cuál sería su respuesta? SYN , 34 A se reinicia y no tiene constancia de su petición A rechaza la conexión K 35 000 , AC SYN 2 B elige como número de secuencia inicial 2000 RST x, A CK 2001 7. (0,5 puntos) ¿Qué tipo de información obtenemos cuando hacemos una consulta al servidor DNS con el nombre de dominio upv.es y el tipo MX?, ¿y si repetimos la consulta con el tipo NS? Cuando hacemos una consulta del tipo MX al servidor DNS acerca del dominio upv.es obtenemos los nombres de dominio de los servidores de correo electrónico que atienden el dominio de correo upv.es. Si hacemos la misma consulta, pero con el tipo NS, obtenemos nombres de dominio de los servidores de nombres para el dominio upv.es. 8. (0,5 puntos) Explica de qué forma se puede reducir el tiempo de respuesta en los accesos a páginas web al usar un proxy web. Al usar un proxy web, todas las peticiones de los clientes se canalizan por dicho proxy. Este proxy podría guardar una caché de las páginas consultadas por los clientes, de forma que cuando un cliente accede a una página web determinada, si antes otro cliente ha accedido a esa misma página, el proxy no necesita solicitar la página al servidor web correspondiente sino que la puede sacar de su propia caché, ahorrándose el tiempo de la consulta y de esta forma reduciendo el tiempo de respuesta que observa el cliente. 5 9. (1 punto) Suponiendo que el emisor tiene siempre datos pendientes de transmitirse, muestra en la tabla siguiente la evolución de la ventana de transmisión del emisor (en segmentos) en función del tiempo (medido en RTTs), para una conexión TCP que se inicia en RTT=0 con la ventana de congestión igual a 2 segmentos y la ventana de permisos del receptor permanentemente igual a 64 segmentos. Asimismo, indica cómo se modifica esta ventana si en RTT=10 vence un temporizador. RTT 0 1 2 3 4 5 6 7 8 9 Vtrans 2 4 8 16 32 64 64 64 64 64 Tras vencer el temporizador en RTT= 10, Vtrans = 1 10.(0,75 puntos) Encuentra los cinco errores de la siguiente cabecera TCP, sabiendo que corresponde al primer segmento de establecimiento de una conexión realizada por un cliente estándar de HTTP hacia el correspondiente servidor estándar, y que el campo de opciones no está vacío. Razona la respuesta. Puerto TCP origen: Puerto TCP destino: Número de secuencia: Número de reconocimiento: Longitud de la cabecera: Reservado: Código: Tamaño de la ventana (en decimal) Checksum (en hexadecimal) Opciones (en bytes hexadecimales) Relleno: 120 80 1400 0 5 0 URG = 0 RST = 0 ACK = 1 SYN = 1 PSH = 0 FIN = 0 86535 9FB0 02- 04 - 05 – B4 (MSS = 1460) 04 – 02 (activar reconocimiento selectivo) (sin relleno) Nota: los valores del checksum y de las opciones son correctos. Error 1: El puerto origen no puede ser el 120, dado que es un cliente estándar y por tanto el puerto que utilizase debería ser mayor que 1023. Error 2: La longitud de la cabecera no puede ser 5, dado que el cabecera tiene opciones y una longitud de 5 corresponde a una cabecera sin opciones. El valor correcto es 7. Error 3: El bit ACK no puede ser 1 dado que es el primer segmento que se envía y aun no hay nada que reconocer. Error 4: El tamaño de la ventana no puede ser 86.535 puesto que ese valor es superior al valor máximo de 64K. Error 5: Dado que el campo de opciones no abarca un número entero de palabras de 32 bits, necesita ser rellenado para ajustarse a un múltiplo entero de 32 bits. Sin embargo, el relleno está vacío, cuando debería ser de 16 bits. 6