Examen de Redes - Primer Parcial - ETSIA - 17 de Junio de 2005 Apellidos, Nombre: Grupo de matrícula: 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: .................................................. 8. (1 punto) Se quiere enviar un correo electrónico desde la máquina redes01.redes.upv.es al destinatario [email protected]. El servidor de correo saliente de la UPV es smtp.upv.es y el servidor de correo correspondiente al destinatario es mx1.examen.es. Ninguno de los equipos mencionados conoce las direcciones IP necesarias. Indica, en orden, qué protocolos de aplicación y de transporte se utilizan para hacer llegar el mensaje hasta el buzón del destinatario, entre qué ordenadores se usan y cuál es la función de los protocolos de aplicación empleados. Orden Protocolos Origen/Destino Aplicación Transporte Función O: 1 D: O: 2 D: O: 3 D: O: 4 D: O: 5 D: 2. (0,5 puntos) Utilizando la orden ftp en una consola de Linux, indica la secuencia de órdenes necesarias para establecer una sesión ftp anónima con el servidor zoltar.redes.upv.es, visualizar el contenido del directorio al que se accede, descargar el fichero PRUEBA.txt que se encuentra en él y terminar la sesión ftp. 1 4. (0,5 puntos) ¿Qué resultado tiene la ejecución de la instrucción ./sock -l :7701? 5. (2 puntos) Una empresa desea implantar un sistema informático que controle la hora de entrada de sus programadores. Cada ordenador tiene instalado un programa cliente que al arrancar el ordenador se conecta con el servidor ficha.empresa.com al puerto 1724 de TCP y transmite una línea con el nombre del usuario y espera una línea de contestación “Ok” antes de cerrar la conexión. a) Construye el programa servidor iterativo (en Java) que acepte las conexiones de los clientes en ese puerto, reciba una línea de la misma, envíe una línea al cliente con la cadena “Ok” e imprima por pantalla una línea con la fecha/hora actual y el texto recibido del cliente. import java.util.*; import java.io.*; class ServidorA { public static void main(String args[])throws Exception{ } } Notas: ● La declaración Date d= new Date(); inicializa d con la fecha y hora actual en formato imprimible ● Constructores de clases de entrada/salida: BufferedReader(Reader in), InputStreamReader(InputStream in), PrintWriter(OutputStream out) 2 b) La dirección de la empresa quiere controlar el número de horas trabajadas. Para ello ha instalado un nuevo programa cliente que se conecta al puerto 1725 de TCP del servidor ficha.empresa.com cuando un ordenador se va a apagar. Construye un nuevo servidor que acepte conexiones en ambos puertos (1724 y 1725), que lea una línea de texto de los clientes que se conecten a cualquiera de ellos y que escriba en pantalla la fecha/hora actual, la palabra “ENTRA” si se trata del puerto 1724 o “SALE” si se trata del 1725, y el texto de usuario recibido del cliente. Atención: el servidor debe aceptar conexiones en cualquiera de los dos puertos sin restricciones. 3 6. (2 puntos) Dado el siguiente programa escrito en Java: import java.net.*; import java.io.*; class programa { public static void main(String args[]) throws UnknownHostException, IOException { Socket s=new Socket("158.42.43.44",1234); s.getOutputStream().write(new byte[512], 0, 512); s.close(); } } Describe el intercambio de segmentos producido por la ejecución de dicho programa que tendría lugar entre el proceso que ejecuta dicho programa (pA) y el proceso que está escuchando en el puerto 1234 en 152.42.43.44 (pB). Suponed que los números de secuencia iniciales son NSI(pA) = 1000 y NSI(pB) = 5000. A lo largo de toda la ejecución del programa los tamaños de ventana que pA y pB declaran en sus segmentos permanecen constantes e igual a 500 bytes. El MSS a utilizar es 100 bytes. Siempre que sea posible, se enviarán segmentos del tamaño máximo. Ambos procesos van a hacer uso de la técnica de reconocimientos retrasados, en la que se envía un reconocimiento global de los datos recibidos cada dos segmentos. Supondremos que el RTT es muy grande. La transferencia de información debe seguir los protocolos asociados a TCP para prevenir la congestión. La ventana de congestión inicial es de 2 segmentos. NOTA: El formato de los segmentos sólo tendrá en cuenta el número de secuencia, los flags de la cabecera TCP, el reconocimiento (si procede), y el campo de datos. Así por ejemplo: Proceso pA Nº secuencia 51 Flags SYN, ACK Nº reconocimiento 200 Datos 51..100 representa un segmento emitido por pA que lleva 50 bytes de datos, con números de secuencia del 51 al 100, un reconocimiento hasta el octeto 199 y con los flags SYN y ACK activos. Proceso Nº secuencia Flags 4 Nº reconocimiento Datos 7. (0,75 puntos) Si un servidor web no encuentra el objeto solicitado y no puede enviarlo, responde con un código de estado “404 Not Found”. En ese caso, ¿puede incluir la respuesta del servidor una cabecera “Content Type:text/html”? Justifica tu respuesta. 8. (1 punto) En el protocolo HTTP, a) Explica en qué consiste el GET condicional. b) ¿Qué mejoras se obtienen respecto al GET no condicional? 9. (1 punto) Se pretende transmitir un fichero de 10.000.000 bits (10 Mbits) entre el computador A y el B, interconectados mediante una ruta con cinco enlaces. El retardo de propagación de cada uno de los enlaces es de 10-9 segundos, y la velocidad de transmisión es 10Mbps. Los retardos en los nodos intermedios se desprecian. Se plantean tres opciones: I. Dividir el fichero en paquetes de 1000 bits. II. Enviar el fichero en un único paquete de 10 Mbits. Cada paquete, independientemente de la cantidad de datos que lleva, debe agregar a los mismos una cabecera de 100 bits. a) Calcula la sobrecarga de bits en cada una de las opciones anteriores. 5 b) Calcula el tiempo que tarda en recibirse el fichero en cada una de las opciones. 9. (0,75 puntos) Explica el funcionamiento de las redes P2P con directorio centralizado. ¿Qué limitaciones tienen estas redes? 10.(0,5 puntos) ¿Qué es la pseudocabecera? ¿Cuál es su función? 6