Download Escuela de Ingeniería Electrónica
Document related concepts
no text concepts found
Transcript
Cátedra de Sistemas Distribuidos Escuela de Ingeniería Electrónica Departamento de Sistemas e Informática Trabajo Práctico nro. 2: Comunicación Entre Procesos – Tiempo Distribuido Objetivos del Práctico Aplicar y afirmar los conocimientos teóricos adquiridos mediante la utilización de aplicaciones distribuidas en un entorno de red, incluyendo: 1. Interacciones cliente-servidor utilizando distintos transportes (TCP, UDP e IP Multicast) 2. Secuencias de establecimiento y liberación de conexiones, control de flujo y paquetes de reconocimiento. 3. Ver un ejemplo práctico de la utilización del API de Sockets TCP y UDP en Java. 4. Ver un ejemplo de servidor multithreaded 5. Ensayar situaciones de falla. 6. Utilización de un software de captura y análisis de paquetes Evaluación Previa El parcial que debe aprobarse antes de la ejecución del práctico incluye los temas desarrollados en los módulos 2 (Redes y TCP/IP), 3 (Comunicación entre procesos) , 4 (Servicios Distribuidos: Nombres, Tiempo, Archivos) Deberán analizarse además los programas Java a utilizar, su estructura y funcionamiento. Descripción de los Programas 1. Descripción Son tres paquetes que ilustran la utilización de la interface de programación (API) de sockets del stack TCP/IP. Básicamente son implementaciones de un servidor de fecha y hora y el cliente correspondiente, en lenguaje Java utilizando JDK 1.2. Cada uno de los paquetes contiene la implementación sobre distintos transportes:TCP, UDP e IP Multicast. 2. Paquetes 2.1 TCP Consiste de tres programas fuente (.java) y sus bytecodes (.class): . NetRelojTCPServer.java: Servidor de fecha/hora sobre TCP . NetRelojTCP.java: Thread del servidor . NetRelojTCPCliente.java: Cliente sobre TCP Utilización: a) Servidor: java -classpath . NetRelojTCPServer [puerto] Este comando ejecuta el servidor de fecha/hora. Si se especifica como argumento un entero entre 1024 y 65535, el puerto de conexión será ese. En caso de no especificarse un puerto, el servidor toma por defecto el 8888. El servidor arranca y espera conexiones entrantes sobre transporte TCP. Cuando detecta una conexión la acepta, disparando un thread que envía al cliente una cadena con la fecha y hora actual, cerrando la conexión a continuación. b) Cliente: java -classpath . NetRelojTCPCliente host port Donde host es el nombre o la dirección IP y port es el puerto del servidor NetRelojTCP. 2.2 UDP Consiste de tres programas fuente (.java) y sus bytecodes (.class): . NetRelojUDPServer.java: Servidor de fecha/hora sobre UDP . NetRelojUDP.java: Thread del servidor . NetRelojUDPCliente.java: Cliente sobre UDP a) Servidor: java -classpath . NetRelojUDPServer [puerto] Este comando ejecuta el servidor de fecha/hora. Si se especifica como argumento un entero entre 1024 y 65535, el puerto de conexión será ese. En caso de no especificarse un puerto, el servidor toma por defecto el 8888. El servidor arranca y espera datagramas entrantes sobre transporte UDP. Cuando recibe un datagrama lo acepta, disparando un thread que envía al cliente una cadena con la fecha y hora actual en un datagrama UDP. b) Cliente: java -classpath . NetRelojUDPCliente host port Donde host es el nombre o la dirección IP y port es el puerto del servidor NetRelojUDP. 2.3 Multicast Consiste de tres programas fuente (.java) y sus bytecodes (.class): . MulticastServer.java: . MulticastServerThread.java: . MulticastClient.java: Servidor de fecha/hora multicast Thread del servidor Cliente sobre TCP a) Servidor: java -classpath . MulticastServer Este comando ejecuta el servidor multicast de fecha/hora, que envía a intervalos aleatorios una cadena de caracteres conteniendo fecha y hora a una dirección multicast (230.0.0.1) en el puerto 4446. b) Cliente: java -classpath . MulticastClient El cliente multicast se asocia al grupo de receptores identificados por la dirección IP 230.0.0.1 (clase D), esperando por mensajes destinados a esa dirección. Metodología de Ejecución del Práctico 1. Determinar la configuración de TCP/IP del host local usando el comando apropiado. Debe obtenerse: • • • • • • • • Nombre de host y de dominio del equipo Tipo y número de adaptadores de red presentes en el equipo Dirección IP y netmask de cada uno de ellos Ruteador por defecto (Default Gateway) Servidores DNS configurados Tabla de rutas Tabla del protocolo arp Dirección MAC del equipo 2. Completar la tabla adjunta según datos que indique el docente a cargo: N° Nombre IP MAC Address Tabla T-1 3. Analizador de paquetes: se deberá hacer una captura de los paquetes enviados y recibidos por la computadora utilizada para hacer el práctico, a fin de hacer un análisis posterior del intercambio de mensajes entre clientes y servidores. 4. Transporte TCP 1. Abrir dos ventanas MS-DOS. Ejecutar en una de ellas el cliente NetRelojTCP con el parámetro host = localhost y port = 8888. Analizar la captura de paquetes y los mensajes en pantalla. 2. En la otra ventana ejecutar el servidor NetRelojTCP sin parámetros. En la primera ventana volver a ejecutar el comando del paso 1. Analizar la captura de paquetes y los mensajes en pantalla de ambas ventanas. 3. En la primera ventana ejecutar el cliente NetRelojTCP con los nombres de la tabla T-1 y puerto 8888. Analizar mensajes y la captura de paquetes. 4. Abortar el servidor en la segunda ventana con Control-C 5. Transporte UDP 1. Ejecutar en la primera ventana el cliente NetRelojUDP con el parámetro host = localhost y port = 8888. Analizar la captura de paquetes y los mensajes en pantalla. 2. En la otra ventana ejecutar el servidor NetRelojUDP sin parámetros. En la primera ventana volver a ejecutar el comando del paso 1. Analizar la captura de paquetes y los mensajes en pantalla de ambas ventanas. 3. En la primera ventana ejecutar el cliente NetRelojUDP con los nombres de la tabla T-1 y puerto 8888. Analizar mensajes y la captura de paquetes. 4. Interrumpir el servidor NetRelojUDPServer tipeando Control-C 6. Transporte Multicast 1. Ejecutar en la primera ventana el cliente Multicast. Analizar captura de paquetes y mensajes en pantalla. 2. Ejecutar en la segunda ventana el servidor Multicast. Analizar captura de paquetes y mensajes en pantalla. 3. Interrumpir el servidor Multicast con Control-C.Analizar captura de paquetes y mensajes en pantalla. 7. Servicio de Reloj 1. En el laboratorio se cuenta con un servicio de reloj ajustado a milisegundos, accesible en el puerto TCP 8888 del host dsi.fceia.unr.edu.ar, el cual responde a una conexión de cliente enviando el tiempo local en milisegundos en un long de acuerdo al método System.currentTimeMillis(), tal como se describe en la referencia siguiente (http://java.sun.com/j2se/1.4.2/docs/api/java/lang/System.html#currentTimeMillis() ): public static long currentTimeMillis() Returns the current time in milliseconds. Note that while the unit of time of the return value is a millisecond, the granularity of the value depends on the underlying operating system and may be larger. For example, many operating systems measure time in units of tens of milliseconds. See the description of the class Date for a discussion of slight discrepancies that may arise between "computer time" and coordinated universal time (UTC). Returns: the difference, measured in milliseconds, between the current time and midnight, January 1, 1970 UTC. Java SDK 1.4 API documentation 2. Modificar el código del programa NetRelojTCPCliente.java para que encueste a este servicio, e indique a continuación el ajuste necesario del reloj local de acuerdo al algoritmo de Cristian. 3. Determinar el ajuste requerido para distintas PC's, accediendo localmente (desde el laboratorio) y desde Internet (en casa, locutorio o laboratorio de informática primer piso). . Conclusiones Deberán ser volcadas en un informe donde consten los resultados obtenidos, interpretando en cada caso los mensajes intercambiados entre cliente y servidor, las secuencias de establecimiento y liberación de conexión, la resolución de nombres y ARP, etc. El informe se valorará principalmente por las conclusiones a las que se arribe a partir de los resultados obtenidos en la experiencia.