Download Trabajo Práctico nro. 2
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. Comunicación entre procesos e 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. Análisis de los programas a utilizar, su estructura y funcionamiento. 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 de red. Evaluación Parcial El informe de este TP deberá entregarse indefectiblemente antes de rendir el primer parcial. Este incluye los temas desarrollados en las clases de teoría, en los módulos 2 (Redes y TCP/IP), 3 (Comunicación entre procesos) y 4 (Servicios Distribuidos: Nombres, Tiempo, Archivos) Sistemas Distribuidos – TP 2 Pág. 1 Programas a utilizar en el práctico 1. Descripción Estos programas fueron desarrolados por la cátedra y están contenidos en 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 o superior. 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): Archivo Propósito 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): Archivo Propósito NetRelojUDPServer.java Servidor de fecha/hora sobre UDP NetRelojUDP.java Thread del servidor NetRelojUDPCliente.java Cliente sobre UDP a) Servidor: Sistemas Distribuidos – TP 2 Pág. 2 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): Archivo Propósito MulticastServer.java Servidor de fecha/hora multicast MulticastServerThread.java Thread del servidor MulticastClient.java Cliente multicast 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. Sistemas Distribuidos – TP 2 Pág. 3 Metodología de Ejecución del Práctico El práctico puede llevarse a cabo en cualquier entorno donde se disponga de dos o mas PC's conectadas a una red LAN, con conexión a Internet, por ejemplo el Laboratorio de Informática del 1er. Piso de Pellegrini, el laboratorio de la EIE en el CUR, el LINCE, un locutorio, una red hogareña o empresarial, etc. El sistema operativo de las PC's puede ser Linux o Windows. Las PC's a utilizar deberán tener instalado el JDK de Java versión 1.2 o superior, y el analizador de paquetes Ethereal (http://www.ethereal.com) o el Analyzer (http://analyzer.polito.it) Tareas 1. Determinar la configuración de TCP/IP de las dos PC's a utilizar usando en cada una de ellas los comandos apropiados. Debe obtenerse: ● ● ● ● ● ● ● ● 2. 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 Análisis de paquetes: se deberá hacer una captura de los paquetes enviados y recibidos por las computadoras utilizadas para hacer el práctico, a fin de hacer un análisis posterior del intercambio de mensajes entre clientes y servidores. 3. Transporte TCP 1. Abrir en una PC dos ventanas MS-DOS. (si se usa Windows) o ventanas de terminal de comando (si usa Linux) 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 de la misma PC ejecutar el servidor NetRelojTCP sin parámetros. En la primera ventana volver a ejecutar el comando del punto 1. Analizar la captura de paquetes y los mensajes en pantalla de ambas ventanas. 3. En otra PC de la red abrir una ventana de comando y ejecutar el cliente NetRelojTCP usando como valor del parámetro host la dirección IP de la primera PC y puerto 8888. Analizar mensajes y la captura de paquetes en ambas PC's. 4. Abortar el servidor del punto 2 con Control-C 4. Transporte UDP 1. Ejecutar en la primera PC 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 de la misma PC 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 segunda PC ejecutar el cliente NetRelojUDP usando como valor del parámetro host la Sistemas Distribuidos – TP 2 Pág. 4 dirección IP de la primera PC y puerto 8888. Analizar mensajes y la captura de paquetes en ambas PC's. 4. Interrumpir el servidor NetRelojUDPServer tipeando Control-C 5. Transporte Multicast 1. Ejecutar en una PC el cliente Multicast. Analizar captura de paquetes y mensajes en pantalla. 2. Ejecutar en la segunda ventana de la misma PC el servidor Multicast. Analizar captura de paquetes y mensajes en pantalla. 3. Ejecutar en la otra PC el cliente Multicast. Analizar captura de paquetes y mensajes en pantalla. 4. Interrumpir el servidor Multicast con Control-C.Analizar captura de paquetes y mensajes en pantalla. 6. Servicio de Reloj 1. El Departamento de Sistemas 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 desde dos locaciones diferentes, por ejemplo, desde el laboratorio de informática de la FCEIA y desde su casa, locutorio o cualquier otra PC conectada a Internet. Sistemas Distribuidos – TP 2 Pág. 5 Conclusiones Deberán ser volcadas en un informe donde consten el escenario utilizado y 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. Sistemas Distribuidos – TP 2 Pág. 6