Nombre y apellidos: 1 DNI: Examen de Redes de Computadores. Ingenierı́a Técnica en Informática de Gestión Septiembre de 2008 Número de identificación del examen: examid Duración: 2 horas. Se permiten libros y apuntes. R E S R e t h 0 d i r e c c i o n I P : 1 2 . 3 . 4 . 1 4 m a s c a r a : 2 5 5 . 2 5 5 . 2 5 5 . 2 4 0 e d i r e c c i o n M A C : 0 0 . 6 0 . 0 0 . 1 1 . 1 1 . 0 t h 0 d i t h 1 b l d i r e c c i o n I P : 1 5 . 3 . 1 . 1 2 m a s c a r a : 2 5 5 . 2 5 5 . 2 5 5 . i r e c c i o n M A C : 0 0 . 6 0 . 0 0 . 1 1 . 1 1 . 1 a d e r u t a r u t a : 1 2 . 3 . 4 . r u t a 2 : 1 2 . 3 . 4 . r u t a 3 : 1 2 . 3 . 4 . r u t a 4 : 0 . 0 . e c i r e c c i c i o o n I i o n P : M 1 A 2 C . : 3 . 0 4 0 . . 6 1 3 0 m . 0 0 . 2 a s 0 0 . 2 2 . 2 c a . 2 2 r . 0 a : 2 5 5 . 2 5 5 . 2 5 5 . 2 4 0 a : 2 5 5 . 2 5 5 . 2 5 5 . 2 4 0 0 t h 1 d i r e c e c c i c o n I n P : M 1 A 2 C . : 3 . 0 4 0 . . 6 1 7 0 m . a s 2 c a 2 r . 1 1 s t 1 r 1 d a i 0 e d t r 0 d e 0 . 1 6 4 8 1 2 0 / 2 8 s i g . s a l t o : 1 2 . 3 . 4 . 1 3 / 2 8 s i g . s a l t o : 1 2 . 3 . 4 . 1 2 / 2 8 / 0 s i 7 g . s s i a l t g . o s a : l 1 t 5 . o : 3 . 1 2 1 . . 3 . 4 . 1 a b l r u t a r u t a r u t a a d 1 e r u t a s : 1 2 . 3 . 4 . 2 : 1 2 . 3 . 4 . 3 : 4 8 1 / 2 8 2 8 / 2 s i 7 g . s i s a g . l s t o : a l t 1 o : 3 . 2 . 1 3 . 2 . 4 . 3 . 2 . 0 . 0 . 0 . 0 / 0 s i g . s a l t o : 1 2 . 4 . 1 1 8 4 1 S S e r v i d o r e r v i d o r A A e t h 0 d i d S e r v i d o r i r r e c e c c i c i o n o I n P M : 1 A 2 C . : 3 . 0 4 0 . . 1 2 5 0 m . 0 0 . a 1 s 1 . c 1 a 1 . r 1 a : 2 5 5 . 2 5 5 . 2 5 5 . 2 4 0 2 5 5 . 2 5 5 . 2 5 5 . 2 4 0 1 B t R 1 4 2 a b l a d e r u t a s E r r e d E 1 x r u t a r u t a 1 : 1 2 . 3 . 4 . 4 8 / 2 8 s i g . s a l t o : 1 2 . 3 . 4 . 1 8 S R e d S e r 2 : 0 . 0 . 0 . 0 / 0 s i g . s a l t o : 1 2 . 3 . 4 . 1 7 t 0 S 1 e r v i d o r B 0 1 2 . 3 . 4 . 1 6 / 2 8 e 1 2 . 3 . 4 . 0 / 2 t h 0 d i r e c c i o n I P : 1 2 . 3 . 4 . 2 6 m a s c a r a : 8 d i r e c c i o n M A C : 0 0 . 1 0 . 0 0 . 2 2 . 2 2 . 2 2 0 t a b l a d e r u t a s i g u a l q u e S e r v i d o r A 0 B R R S P e r v i d o r C S e r v i d o r C 2 1 1 r e d B i s r e d r P o d e t h 0 d i d ? ? ? ? 1 2 . 3 . 4 . 4 8 / 2 e l J e f e S C P B i e r v i d o r W e b c c i c i o n o I n P : M 1 A 2 C . : 3 . 0 4 . 0 . 2 7 1 0 m . 0 0 . a 3 s 3 . c 3 a 3 r . 3 a : 2 5 5 . 2 5 5 . 2 5 5 3 r P o d b s l a r P d o e r u t a s i g u a l q u e S e r v i d o r A d 1 P B R e e t h 0 d i r e c c i o n I P : 1 2 . 3 . 4 . 1 2 m a s c a r a : 2 5 5 . 2 5 5 . 2 5 5 . 2 4 t h 0 d i i r i r i r e c c i o i o i o n M A C : 0 0 . 6 0 . 0 0 . 3 3 0 0 0 . . 3 3 . . 3 3 . . 3 3 3 . 0 t h 1 d i r e c c i o n I P : 1 2 . 3 . 4 . 6 0 m a s c a r a : 2 5 5 . 2 5 5 . 2 5 5 . 2 4 e c c n M A C : 0 0 . 6 0 . 3 3 . 1 t h 2 d i t r e c c i o n I P : 1 2 . 3 . 4 . 1 2 9 m a s c a r a : 2 5 5 . 2 5 5 . 2 5 5 . 2 2 t a b l r u t a r u t a a e d 1 c c e : r 1 2 u . n t a 3 . M A C : 0 0 . 6 0 . 0 3 3 . 2 : 0 . 0 . . 4 . . 1 0 6 / / 2 0 8 s i s g . i s g a . l t s a o l : 1 t o : 2 1 . 2 . 4 . 3 1 C P d h 1 h e 0 l J d e i r f e . 5 a b u e u t l i a a r 2 d e c c i c : e 0 r . 0 n I i o n P M : 1 A 2 C . : 3 0 . 4 0 . . 6 1 8 0 . m 0 0 . a 4 4 s 0 0 . 4 4 2 . 3 . c 4 a 4 r . a 0 : 2 5 5 . 2 5 5 . 2 5 5 . 2 4 0 0 i r e c e c c i c o n I n P M : 1 A 2 C . : 0 3 . 4 0 . . 6 5 9 0 . m a s c . a 4 r 4 . a : 1 2 5 5 . 2 5 5 . 2 5 5 . 2 4 0 1 l t a a d 1 e : r 0 . u 0 t . a 0 s . 0 / 0 s i g . s a l t o : 1 . 4 . 6 0 r t v h i 0 d o d i r r e W e c c i b o n I P : 1 2 . 3 . 4 . 5 0 m a s c a r a : 2 5 5 . 2 5 5 . 2 5 5 . 2 4 0 e c o n I P : 1 2 . 3 . 4 . 1 3 2 m a s c a r a : 2 5 5 . 2 5 5 . 2 5 5 . 2 2 i u t o n . 0 a M A C : 0 0 . 3 0 . 0 0 . 1 1 . 1 1 . 1 i r e c c i o n M A C : 0 0 . 5 0 . 0 0 . 2 . 1 1 . 1 1 . 1 1 4 a b l a d e r u t a s 1 r b o 9 t d a r d d t i o 4 e e i i s 4 0 c c 2 S 2 c c 4 r d e e 1 t e r 0 d d i 0 e e r 0 d d r e s R t C P a C P d c 8 t C r e ? / P i r u t a 2 : 0 . 0 . 0 . 0 / 0 s i g . s a l t o : 1 3 . 4 . 6 0 s . 0 / 0 s i g . s a l t o : 1 2 . 3 . 4 . 1 2 9 Le han nombrado administrador de red de una empresa que vende un juego multijugador en red. Su red está construida por varias redes interconectadas como se ve en la figura. La red Ser en la que están los servidores del juego. La red Prod contiene a los ordenadores de producción y desarrollo desde los que controlan los servidores públicos del juego, asi como el servidor web. La red Bis contiene los ordenadores de negocios de la empresa y no relacionados directamente con el desarrollo. Pregunta 1: (0.833 ptos) A la vista de la información de que dispone ¿cual es la subred IP y el rango de direcciones de la red Bis? Razone la respuesta . 2 4 0 Nombre y apellidos: DNI: 2 Respuesta correcta: 12.3.4.128 / 27 Se obtiene de la configuración de cualquier interfaz conectado a esa red por ejemlpo el eth2 del router RB ip 12.3.4.129 mascara 255.255.255.224 que son 27 bits. Al pasar la mascara 255.255.255.224 a 12.3.4.129 nos queda 12.3.4.128. Asi que es 12.3.4.128 / 27 Tambien se puede ver como entrada en la tabla de rutas de RE y RS 12.3.4.129//27 Nombre y apellidos: DNI: 3 Pregunta 2: (0.833 ptos) Como administrador se le ha encargado reorganizar la red Prod. Se han desconectado todos los PCs de esa red a excepción del servidor web, con lo que ahora la red esta como se ve en la figura. Indique la configuración que instalará en uno de los PCs de producción (PCProd1). ¿Cual es la dirección IP mas alta y mas baja que puede emplear en un ordenador de producción? Configuracion de PCProd1 Direccion IP: Mascara: Tabla de rutas: Dirección IP más alta utilizable: Dirección IP más baja utilizable: Respuesta correcta: Configuracion de PCProd Direccion IP: 12.3.4.49 (por ejemplo) Mascara: 255.255.255.240 Tabla de rutas: 0.0.0.0 0.0.0.0 12.3.4.60 Dirección IP más alta utilizable: 12.3.4.62 Dirección IP más baja utilizable: 12.3.4.49 Pregunta 3: (0.833 ptos) Se pretende colocar 25 PCs en la red de producción. ¿Se puede con la configuración de red actual? ¿Cuál es el máximo numero de PCs que podemos añadir a la red Prod de la figura? Si el rango de IPs asignado a la empresa es el 12.3.4.0/24 y no queremos cambiar la direccion IP del servidor web. Asigne una subred a la red Prod de forma que podamos direccionar los 25 PCs pero no tengamos que cambiar ninguna dirección IP de las ya asigandas. Respuesta correcta: En la red 12.3.4.48/28 caben 16 direcciones quitando dos direcciones invalidas dos direcciones de routers y el servidor Web nos quedan 11 direcciones para PCs asi que no podemos poner 25 en la configuracion actual. Como el rango 12.3.4.32/28 esta libre podemos unirlo con el 12.3.4.48/28 y obtener el rango 12.3.4.32/27 en el que caben 30 direcciones IP que son suficientes para 2 routers, el servidor web y 25 PCs Pregunta 4: (0.833 ptos) Un administrador de los servidores de juego configura incorrectamente la máscara del servidor B a 255.255.255.192. Se excusa diciendo que tras el cambio sigue funcionando y los jugadores Nombre y apellidos: DNI: 4 externos se conectan y juegan normalmente. Sin embargo parece que ahora el servidor es inaccesible desde el servidor web. ¿Es posible? ¿Por qué falla el ping desde el servidor web al servidor B? ¿Por que funciona el ping a un jugador exetrno? Razone la respuesta Respuesta correcta: Con la nueva máscara 255.255.255.248 el servidor B piensa que todos los direcciones del rango 12.3.4.0/26 estan en su misma red de area local Cuando tiene que enviar un paquete al exterior mira la rabla de rutas y envia el paquete a RS por lo que todo funciona correctamente Pero si tiene que enviar un paquete a un ordenador como 12.3.4.50 cree que esta en su misma red y envia el paquete a la red de area local en lugar de enviarlo a RP por lo que nadie contestara a la peticion de ARP y el paquete no saldrá de servidorB Pregunta 5: (0.833 ptos) ¿Dónde se pierden los paquetes (a consecuencia del fallo de la pregunta 4) si el ServidorB envı́a un paquete de datos al servidorWeb? a) El router RS los envia a RE y RE vuelve a enviarlos a RS y asi sucesivamente hasta que uno de los dos los descarta por demasiados saltos b) En el router RP, que recibe los paquetes de ServidorB a causa del cambio de máscara pero al ser el camino incorrecto se ve obligado a descartarlos c) En el Servidor B, que recibe los paquetes del ping pero nunca llega a enviar las respuestas nunca llega a enviarlos d) En el servidor web, que descarta los paquetes que vienen de ServidorB ya que no llevan la máscara correcta Respuesta correcta: En el Servidor B, que recibe los paquetes procedentes de jugadores en el exterior normalmente pero a causa del cambio de máscara descarta los paquetes con las respuestas en lugar de enviarlos al router RS porque le parece que no esta en su misma subred Pregunta 6: (0.833 ptos) ¿Qué camino siguen los paquetes de un ping desde ServidorWeb a un servidor de juego configurado correctamente como ServidorA? a) La ida ServW eb → RB → RP → ServA y la vuelta ServA → RP → ServW eb b) La ida ServW eb → RB → RS → ServA y la vuelta ServA → RS → RB → ServW eb c) La ida ServW eb → RP → ServA y la vuelta ServA → RP → ServW eb d) La ida ServW eb → RB → RP → ServA y la vuelta ServA → RS → RB → ServW eb e) La ida ServW eb → RB → RS → ServA y la vuelta ServA → RP → RB → ServW eb f) La ida ServW eb → RB → RP → ServA y la vuelta ServA → RS → RP → ServW eb Respuesta correcta: La ida ServW eb → RB → RP → ServA y la vuelta ServA → RP → ServW eb Pregunta 7: (0.833 ptos) ¿Puede jugar el jefe desde PCdelJefe a pesar del problema de la pregunta 4? Razone la respuesta Nombre y apellidos: DNI: 5 Respuesta correcta: Si porque su direccion 12.3.4.132 no esta dentro del rango de 12.3.4.0/26 por lo que los paquetes se envian de servidor B a RP y de ahi a RB y al PCdelJefe Pregunta 8: (0.833 ptos) Un jugador externo utiliza un PC con dirección IP 86.21.3.2 mascara 255.255.255.0 y dirección MAC 00:88:33:22:11:00. Indique las direcciones IP y MAC del primer paquete que recibirı́a el ServidorB desde el ordenador del jugador externo ası́ como las del primer paquete que recibirı́a el ServidorB desde PCdelJefe Primer paquete de un jugador externo conectándose al servidorB [ Dirección MAC origen: __________________ Dirección MAC destino: __________________] [ Dirección IP origen: __________________ Dirección IP destino: __________________] Primer paquete del jefe conectándose al servidorB [ Dirección MAC origen: __________________ Dirección MAC destino: __________________] [ Dirección IP origen: __________________ Dirección IP destino: __________________] Primer paquete de un jugador externo conectándose al servidorB [ Dirección MAC origen: 00.60.00.22.22.11 Dirección MAC destino: 00.10.00.11.11.11] [ Dirección IP origen: 86.21.3.2 Dirección IP destino: 12.3.4.25 ] Primer paquete del jefe conectándose al servidorB [ Dirección MAC origen: 00.60.00.44.44.00 Dirección MAC destino: 00.10.00.11.11.11] [ Dirección IP origen: 12.3.4.132 Dirección IP destino: 12.3.4.25 ] Nombre y apellidos: S e r v i d o r i c i c e n t 6 DNI: e n t e l e l S J u e g a T U s e r C P 3 1 0 0 c c i o n e a s s r J s v i d e u o g r o 1 : U P e o D P 3 1 0 0 1 : p T C s u a r i s i c i o n e s P C U o o : F o o a : a d a 1 5 m i n u t o s e n j u e g o E u e l o a e n i a r u s e r y p a s l s e r i d o r d e j u e g o s v v C o n t r a s e ñ * * v v * p a r a q u e s e p a q u e s i g o j u g a n d p r a u e t g d e r u n t a a l s e r i d o r d e o v T S 3 1 0 0 e r v i d o C P 3 1 0 1 0 h s i e l j u g a d o r t i e n e r 1 S 3 A u t e n t i fi i c a o 1 0 0 e r v i d o e c h o a j u g a r r 1 n c A u t e n t i fi i c a o n c Las comunicaciones de tiempo real del servidor de juego con los clientes de los jugadores se utilizan UDP como se ve en la figura. El cliente del juego desde el ordenador del usuario envı́a mensajes con sus acciones y movimientos y al puerto 31001 del servidor y el servidor desde ese puerto envı́a el estado del juego y las acciones de los otros jugadores. Para la autentificación del usuario previamente al comienzo del juego el cliente remoto establece una conexión TCP con un servidor en el ordenador ServidorWeb que contiene la base de datos de los usuarios que tienen derecho a jugar y le envı́a su usuario y contraseña para verificación. Esta autentificación tiene validez por 20 minutos y cada 15 minutos el cliente renueva la autentificacion si su usuario no ha salido del programa. Cuando el servidor del juego recibe comandos de un usuario se asegura de que ese usuario se ha autentificado preguntando al servidor de autentificación. Esta pregunta se realiza en una conexión TCP a un servidor de autentificacion situado en el puerto 31010. Sobre esta conexión se emplea un protocolo de nivel de aplicación sencillo propio del juego. El cliente establece la conexión y envı́a un comando al servidor en texto con el siguiente formato. CHECK <nombredeljugador> <ipdelservidor> \n Donde se indica el nombre del jugador y la direccion IP en formato a.b.c.d del servidor que pide la autentificación [podemos tener varios servidores con el mismo usuario] El servidor de autentificación debe comprobar si el usuario tiene permiso para jugar e indicar que si o que no con el mensaje AUTH AUTH <nombredeljugador> <nombredeljugador> FROM <ipdelservidor> OK\n FROM <ipdelservidor> ERR\n Donde OK o ERR indica si el usuario esta autentificado o no para jugar en ese servidor Se le ha encomendado la realización de un servidor de autentificacion que responda a las preguntas del juego segun este protocolo. Para ello se escribe la función main siguiente int main(int argc, char *argv) { int s; printf("AuthTellGame... running\n"); s=prepara_socket_tcp(31010); escucha_peticiones(s); } Y la funcion prepara socket tcp() construye el socket int prepara_socket_tcp(int puerto) { struct sockaddr_in midireccion; int sock , err; sock = socket(PF_INET,SOCK_DGRAM,0); midireccion.sin_family = AF_INET; midireccion.sin_addr.s_addr = htonl(INADDR_ANY); midireccion.sin_port = htons(puerto); err = bind(sock, (struct sockaddr *)&midireccion, sizeof(midireccion)); if ( err == -1 ) { exit(-1); } listen(sock,5); return sock; } Nombre y apellidos: DNI: 7 Pregunta 9: (0.833 ptos) ¿Qué errores se han cometido al escribir la función prepara socket tcp() ? a) Ninguno b) A la función socket hay que pasarle SOCK STREAM en lugar de SOCK DGRAM c) No hay que poner INADDR ANY sino la dirección IP del servidor de juego d) Otro error (indicar cual) e) La instrucción listen(sock,5); hay que eliminarla dado que al tratarse de un socket UDP dará error Respuesta correcta: A la función socket hay que pasarle SOCK STREAM en lugar de SOCK DGRAM La función escucha peticiones se mantiene a la escucha de peticiones del juego preguntando por la autentificación de diferentes jugadores int escucha_peticiones(int s) { int socket_cliente; struct sockaddr_in d; unsigned int dlen; char buf[200], jugador[200], ip[200]; FILE *f; while (1) { dlen=sizeof(d); socket_cliente=accept(s,(struct sockaddr *)&d,&dlen); f=fdopen(socket_cliente,"r+"); if (fgets(buf,200,f) != NULL) { sscanf(buf,"CHECK %s %s",jugador,ip); if (esta_autentificado(jugador)) { fprintf(f,"AUTH %s FROM %s OK\n",jugador,ip); } else { fprintf(f,"AUTH %s FROM %s ERR\n",jugador,ip); } } fclose(f); } } Pregunta 10: (0.833 ptos) ¿Como modificarı́a la función para que sólo se acepten preguntas de autentificación sobre una IP de servidor si la conexión proviene de esa dirección IP? int escucha_peticiones(int s) { int socket_cliente; struct sockaddr_in d; unsigned int dlen; char buf[200], jugador[200], ip[200]; FILE *f; while (1) { dlen=sizeof(d); socket_cliente=accept(s,(struct sockaddr *)&d,&dlen); f=fdopen(socket_cliente,"r+"); if (fgets(buf,200,f) != NULL) { sscanf(buf,"CHECK %s %s",jugador,ip); if ( inet_addr(ip) == d.sin_addr.s_addr ) { if (esta_autentificado(jugador)) { fprintf(f,"AUTH %s FROM %s OK\n",jugador,ip); } else { fprintf(f,"AUTH %s FROM %s ERR\n",jugador,ip); Nombre y apellidos: DNI: 8 } } } fclose(f); } } Pregunta 11: (0.833 ptos) Si un cliente esta autentificado y se envı́a el mensaje AUTH j1 FROM 12.3.4.25 OK hacia el servidor ¿en cual de estos paquetes viaja el mensaje? a) Un paquete TCP con puerto origen 31010 b) Un paquete UDP con puerto origen 31010 c) Un paquete TCP con puerto destino 31001 d) Un paquete TCP con puerto origen 31001 e) No hay suficiente información para saberlo ya que el mensaje se manda por el socket socket cliente y no por el socket s Respuesta correcta: Un paquete TCP con puerto origen 31010 Pregunta 12: (0.833 ptos) Un usuario malicioso realiza una conexión desde su ordenador con direccion IP 133.2.1.12. Utilizando el comando nc 12.3.4.51 31010 y una vez establecida la conexión la deja abierta sin enviar nada por ella. ¿Como reacciona nuestro programa? ¿Que efectos tiene en el juego? a) El servidor se queda esperando la pregunta. Esto bloquea que no se pueden atender posteriores preguntas sobre otros jugadores. Ningun jugador nuevo puede entrar a jugar hasta que se cierre la conexion y los que estan jugando iran cayendo conforme caduquen sus autentificaciones. b) El servidor se queda bloqueado esperando la pregunta, cuando pasa un tiempo sin recibir nada la función fgets() devuelve el control al programa devolviendo NULL, eso hace que puedan seguir atendiéndose peticiones aunque por unos segundos las entradas de nuevos jugadores están bloqueadas porque el servidor no es concurrente tal y como esta escrito c) El proceso que atiende la peticion de ese cliente se queda bloqueado esperando que el fgets() devuelva el control. Pero eso no afecta al proceso que escucha el socket del servidor que sigue atendiendo peticiones. La entrada de jugadores no se ve afectada d) La peticion no proviene de la dirección IP de ningún servidor ası́ que el accept() no acepta esa conexión Nombre y apellidos: DNI: 9 Respuesta correcta: El servidor se queda esperando la pregunta. Esto bloquea que no se pueden atender posteriores preguntas sobre otros jugadores. Ningun jugador nuevo puede entrar a jugar hasta que se cierre la conexion y los que estan jugando iran cayendo conforme caduquen sus autentificaciones.