Universidad Tecnológica Nacional Facultad Regional Buenos Aires Departamento de Ingeniería Electrónica Apellido y Nombres Legajo Técnicas Digitales III 23 de Julio de 2008 Examen Final Calificación Parte Teórica: Tiempo Límite 45 minutos 1) Mediante una puerta de tarea se conmuta de una tarea de nivel 0 a otra de nivel 3 quedando el selector DS apuntando al descriptor 5 de la GDT cuyo DPL es 3; y el selector de código CS apuntando al descriptor 6 de la GDT. a. Con qué valor quedan los registros CS y DS? b. Con qué RPL queda el selector DS? c. Explique el mecanismo del proceso y justifique su respuesta de a y b. 2) Qué debería hacer el handler correspondiente a la excepción 11h (segment not present).? a. Proponga un mecanismo. b. Que sucedería con dicho mecanismo si el descriptor de la IDT correspondiente a dicha excepción fuese del tipo “interrupt gate”? 3) Diferencia entre aritmética saturada y aritmética de desborde. Cite ejemplos e instrucciones IA32 para ambos casos. 4) Si Ud. desarrolla un servidor TCP: a. ¿Cómo hace para no permitir acceso a cierto rango de direcciones IP? b. ¿Es posible realizar esto antes de invocar a la función Accept? Justifique. Universidad Tecnológica Nacional Facultad Regional Buenos Aires Departamento de Ingeniería Electrónica Apellido y Nombres Legajo Técnicas Digitales III 23 de Julio de 2008 Examen Final Calificación Parte Práctica: Tiempo Límite 1hora 30 minutos Se dispone de un servidor concurrente que escucha pedidos por el puerto TCP 32001 para luego procesar transacciones con los clientes conectados hasta que los mismos envían la palabra “END”. Debido a que los datos de las transacciones viajan en “Texto plano” y los mismos suelen ser confidenciales, su tarea será desarrollar un servidor que actúe como túnel de seguridad de datos encriptados. Es decir, los clientes, en lugar de conectarse al servidor descripto, se conectarán al servidor de seguridad, enviando los datos encriptados por el puerto TCP 32002 para que luego este servidor los desencripte y reenvíe al servidor original de transacciones. Para desencriptar los datos, el servidor de seguridad dispone de una librería con la función: char* Desencript(char *data, char *ip_client, int publicKey) donde el 1er. parámetro corresponde a la información encriptada que envía el cliente, el 2do. a su IP y el 3ro. se trata de una clave pública que se recibe por el puerto UDP 32002 cada cierto tiempo. Esta función devuelve un puntero al buffer de los datos desencriptados. Análogamente el servidor de seguridad debe encriptar las respuestas que el servidor original envía al cliente mediante la función: char* Encript(char *data, char *ip_client, int publicKey) donde ahora el 1er. parámetro corresponde a la información desencriptada y análogamente la función devuelve un puntero al buffer de la información encriptada para ser enviada. Para aumentar la confiabilidad del sistema de seguridad se dispone al servidor de transacciones en una LAN privada con una de las dos interfaces Ethernet del Servidor de Seguridad, en tanto que la segunda interfase de este último se conecta a la WAN en la que se encuentran los diferentes clientes que requieran transacciones. A continuación se ilustra el sistema sobre el que debe ejecutarse su aplicación El servidor a desarrollar debe ser concurrente y soportar 100 pedidos de conexión sin arrojar errores y no mas de 350 conexiones activas cada una manejada con un child. No debe dejar procesos zombies.