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.