Download ClasesCC52n-7 - DCC

Document related concepts
no text concepts found
Transcript
Módulo ECI - 11: Fundamentos de Redes de Computadores
Por Qué Multicasting y Broadcasting
Qué pasa cuando se quiere hacer enviar los mismos
de datos demasiado pesados a mucha gente?
Por cada cliente, el servidor queda mucho rato
“pegado” escribiendo datos.
Imaginémonos ahora la situación en una
videoconferencia: se trata de transmitir varios
frames de video por segundo a una cantidad grande
de “oyentes” => no es posible en la práctica!
En el Multicasting se trata de transmitir una sola
vez la información a un punto en la internet, y desde
ahí la leen los clientes.
Esto implica que el hardware (el de la red, se
entiende) debe ser “multicastingable”
1
Universidad de Chile - Tupper 2007, Santiago - Fono/Fax: (56 2) 698 8427 - Email: hthiemer @ cec.uchile.cl
Módulo ECI - 11: Fundamentos de Redes de Computadores
Multicast y Broadcast
Multicast y Broadcast son protocolos de red
que permiten a una aplicación poner un
paquete en una red para ser recibidos por
todos. De esta manera sólo es necesario
enviarlo una vez.
Broadcast funciona generalmente sólo dentro
de la red local y le llega a todas las máquinas
Multicast le llega sólo a los miembros del
grupo registrados (interesados).
Broadcast requiere soporte de la red local.
Multicast requiere de host y routers IGMP
2
Universidad de Chile - Tupper 2007, Santiago - Fono/Fax: (56 2) 698 8427 - Email: hthiemer @ cec.uchile.cl
Módulo ECI - 11: Fundamentos de Redes de Computadores
Multicast
Multicast es muy parecido a UDP excepto
que se transmite a direcciones IP en el rango
(224.0.0.0 - 239.255.255.255)
Para recibir el paquete un cliente debe
expresar interés en unirse al grupo y la red se
preocupa de informar alor routers relevantes
Cualquier host puede transmitir al grupo
Requiere de mayor complejidad en el
algoritmo de ruteo ya que el ruteador debe
saber en cuáles de las redes adyacentes hay
interesados.
3
Universidad de Chile - Tupper 2007, Santiago - Fono/Fax: (56 2) 698 8427 - Email: hthiemer @ cec.uchile.cl
Módulo ECI - 11: Fundamentos de Redes de Computadores
MBone
Multicast no está muy extendido en la
internet,hay muchas redes que no lo soportan
Existe una subred llamada MBone que
comunica islas de redes multicastingable a
través de túneles.
Un tunel comunica a los ruteadores de dos
redes entre si haciéndolos aparecer como que
son redes contiguas (los ruteadores tienen ip
de ambas redes)
Los ruteadores deben saber rutear paquetes
Mbone.
4
Universidad de Chile - Tupper 2007, Santiago - Fono/Fax: (56 2) 698 8427 - Email: hthiemer @ cec.uchile.cl
Módulo ECI - 11: Fundamentos de Redes de Computadores
Broadcast
Broadcast es similar a Multicast pero en una red
local
Toda redbasada en Broadcast (como la ethernet)
tiene una dirección IP de broadcast, es decir la
reciben todos los computadores
Hay que ponerse de acuerdo solo en el número del
port
Usualmente la direscción de broadcast es la última
posible para la subred:
 Clase C: 192.1.2.0 -> 192.1.2.255
 Para una subred de 16 hosts 197.84.66.192 ->
197.84.66.207
5
Universidad de Chile - Tupper 2007, Santiago - Fono/Fax: (56 2) 698 8427 - Email: hthiemer @ cec.uchile.cl
Módulo ECI - 11: Fundamentos de Redes de Computadores
¿ Broadcast o Multicast ?
Si se puede elegir es preferible multicast ya
que no molesta a los que no están interesados
Muchas veces se necesitan privilegios para
escribir a la dirección broadcast.
Multicast permite varios grupos multicast en
la misma red (diferentes grupos de interés)
El tráfico que generan es el mismo: un sólo
paquete que lo leen varios
Broadcast se hace en java con las clases para
transmitir UDP. Sólo cambia la dirección
6
Universidad de Chile - Tupper 2007, Santiago - Fono/Fax: (56 2) 698 8427 - Email: hthiemer @ cec.uchile.cl
Módulo ECI - 11: Fundamentos de Redes de Computadores
Soporte de Java para Multicast
MulticastSocket: extensión del DatagramSocket
 MulticastSocket( ) lo amarra a un port UDP libre
 MulticastSocket(int port) a un port específico
Varios socket multicast pueden escuchar del
mismo port (no así para los socket Datagram)
Los mismos de Datagram (send, receive)
 joinGroup(InetAddress group)
 leaveGroup(InetAddress group)
 setTimeToLive(int ttl)
7
Universidad de Chile - Tupper 2007, Santiago - Fono/Fax: (56 2) 698 8427 - Email: hthiemer @ cec.uchile.cl
Módulo ECI - 11: Fundamentos de Redes de Computadores
Llamadas remotas: RPC (remote procedure call)
 Fue el primer mecanismo que se implementó para facilitar
el llamado remoto de funciones entre dos procesos en
máquinas distintas
 la motivación fue la implementación del NFS de Sun
 Existen 2 formas de diseñar aplicaciones distribuidas
 Orientado a la comunicación: se empieza diseñando el protocolo
 Orientadao a la aplicación: se desarrolla el programa como si
fuera local, luego se divide en módulos que se ejecutan separados
 el paradigma de rpc se focaliza en la aplicación. Permite al
programador concentrarse en el desarrollo de un programa
convencional que trata de resolver el problema planteado
antes de tratar de dividirlo para que opere en multples
computadores.
8
Universidad de Chile - Tupper 2007, Santiago - Fono/Fax: (56 2) 698 8427 - Email: hthiemer @ cec.uchile.cl
Módulo ECI - 11: Fundamentos de Redes de Computadores
Llamadas remotas: RPC (2)
 Se trata de extender el concepto de llamadas a
procedimientos (funciones, métodos) que son ejecutados
en otros computadores.
 El proceso que hace la llamada se bloquea hasta que
retorna la llamada del rpocedimiento remoto.
 Tiene analogía con el concepto cliente-servidor: el
computador que pide que se ejecute un procedimiento en
otro es el cliente, el servidor es el que ejecuta el
procedimiento.
 A un procedimiento remoto se le pueden pasar parámetros
y puede retornar resultados => datos viajan por la red
 XDR: un protocolo para estandarizar el formato de los
datos que viajan por la red (eXtrernal Data Representation)
 De esta manera cliente y servidor pueden intercambiar
datos
9
Universidad de Chile - Tupper 2007, Santiago - Fono/Fax: (56 2) 698 8427 - Email: hthiemer @ cec.uchile.cl
Módulo ECI - 11: Fundamentos de Redes de Computadores
Llamadas remotas: Cómo se programan ?
 Se debe primero especificar un archivo con el protocolo
del proceso remoto que se va a tener: nombre del proceso,
parámetros que recibe, resultado que retorna
 Este es el llamado archivo de interfaz (entre cliente y
servidor): el cliente no conoce la implementación del
procedimiento pero sí cómo se llama.
 El servidor implementa el procedimiento declarado (con
ayuda de una biblioteca que lo conierte en proceso
llamable desde otro computador)
 El cleinte, usando el archivo de interfaz, escribe un
programa que llama a este procedimiento.
 1. Primero debe establecer contacto con el servidor (existe una
función para ello)
 2. Hacer la llamada como si fuera un procedimiento local, dando
los parámetros necesarios y recibiendo lo que retorna el
procedimiento.
10
Universidad de Chile - Tupper 2007, Santiago - Fono/Fax: (56 2) 698 8427 - Email: hthiemer @ cec.uchile.cl
Módulo ECI - 11: Fundamentos de Redes de Computadores
Objetos Remotos en JAVA
 La tecnología RMI (Remote Method Invocation) permite a un
programa corriendo en una máquina virtual de java (un intérprete)
invocar el método de un objeto localizado en otra máquina virtual de
java (ubicada en cualquier parte de la red TCP/IP que se pueda
acceder desde el lugar)
 Normalmente se tiende a ver aplicaciones que usan RMI como
aplicaciones de cliente servidor. Una típica aplicación de servidor crea
un objeto, lo “publica” para que pueda ser accesible de cualquier otro
lado y espera a que llamen clientes pidiendo la invocación de sus
métodos. Una típica aplicación cliente obtiene una referencia al objeto
remoto en el servidor y luego invoca sus métodos como si fuera un
objeto local.
 RMI provee mecanismos con los cuales el cliente y el servidor se
pueden intercambiar información, convirtiendolas en aplicaciones de
objetos distribuidos. Estos mecanismos deben hacer posible: 1)
localizar objetos remotos, 2) comunicarse con los objetos remotos 3)
traspasar el código de los objetos remotos (deben ser serializables
Universidad de Chile - Tupper 2007, Santiago - Fono/Fax: (56 2) 698 8427 - Email: hthiemer @ cec.uchile.cl
11
Módulo ECI - 11: Fundamentos de Redes de Computadores
Interfaces, objetos y métodos remotos
 Como en otras aplicaciones, una aplicación distribuida que
usa RMI está constituida por interfaces y clases. Las
interfaces definen los métodos que serán conocidos por
los clientes de los objetos remotos. Las clases remotas
implementan estos y quizas otros métodos también.
 Un objeto remoto se implementa siguiendo los siguientes
pasos:
1) Diseño e implementación de las componentes de la
aplicación distribuida
2) Compilar los códigos fuentes y generar los llamados
“stubs” y skeletons
3) echar a andar la aplicación
12
Universidad de Chile - Tupper 2007, Santiago - Fono/Fax: (56 2) 698 8427 - Email: hthiemer @ cec.uchile.cl
Módulo ECI - 11: Fundamentos de Redes de Computadores
Diseñar e implementar las componentes de la
aplicación
 Definir las interfaces remotas: Una interfaz remota
especifica los métodos que pueden ser invocados en forma
remota por un cliente. Los clientes conocerán los objetos
remotos sólo a través de las interfaces.
 Implementación de los objetos remotos: los objetos
remotos deben implementar una o más interfaces remotas.
Además pueden implementar otros métodos que no
corresponden a las interfaces remotas y que son de uso
local.
 Implementar los clientes: Los clientes que usan los objetos
remotos se pueden implementar una vez que las interfaces
remotas están definidas.
13
Universidad de Chile - Tupper 2007, Santiago - Fono/Fax: (56 2) 698 8427 - Email: hthiemer @ cec.uchile.cl
Módulo ECI - 11: Fundamentos de Redes de Computadores
Un ej: Un objeto remoto que contiene un número
//el archivo de definición de la interfaz
import java.rmi.*;
public interface Numero extends Remote {
public int getNumero() throws RemoteException;
}
 Este es la definición de la interfaz: implica que los clientes
sólo conocerán el método getNumero() de el objeto
remoto. Para los clientes la clase de este objeto es
Numero, no importa cómo lo haya llamado en el archivo
de implementación del tipo de objeto.
14
Universidad de Chile - Tupper 2007, Santiago - Fono/Fax: (56 2) 698 8427 - Email: hthiemer @ cec.uchile.cl
Módulo ECI - 11: Fundamentos de Redes de Computadores
Un ej: Un objeto remoto (2 la implementación)
//el archivo de definición de la implementación
import java.rmi.*;
import java.rmi.server.UnicastRemoteObject;
public class NumeroImpl extends UnicastRemoteObject implements
Numero
{ int cont = 0;
public int getNumero() throws RemoteException {
int ret = cont++;
return ret;
}
public static void main(String args[]) {
System.setSecurityManager(new RMISecurityManager());
try { NumeroImpl n = new NumeroImpl();
Naming.rebind("//"+args[0]+"/elNumero",n);
System.out.println("Numero creado");
} catch (Exception e) {}
}
}
15
Universidad de Chile - Tupper 2007, Santiago - Fono/Fax: (56 2) 698 8427 - Email: hthiemer @ cec.uchile.cl
Módulo ECI - 11: Fundamentos de Redes de Computadores
Aclaración: Existe un servidor de
comunicaciones !!!!)
 Es un programa que provee java llamado rmiregistry
 Se echa a correr en la máquina donde está el programa servidor
del objeto remoto
 Cualquier cliente que quiera ocupar el objeto remoto debe
pedirle a él una referencia al objeto remoto antes de ocuparlo
=> debe saber con qué nombre se registró y en qué máquina
esta corriendo.
Naming.lookup(2)
rmiregistry
Naming.rebind(1)
Internet
Cliente
Objeto.metodo() (3)
Universidad de Chile - Tupper 2007, Santiago - Fono/Fax: (56 2) 698 8427 - Email: hthiemer @ cec.uchile.cl
servidor
16
Módulo ECI - 11: Fundamentos de Redes de Computadores
Un ej: Un objeto remoto que contiene un
número (3 el cliente)
//el archivo del cliente
import java.rmi*;
import java.rmi.server.*;
class ClienteNumero {
public static void main(String args[]) {
try {
Numero N = (Numero)
Naming.lookup("//"+args[0]+"/elNumero");
System.out.println("El numero vale ahora”
+N.getNumero();
} catch( Exception e) {}
}
}
 Notar que el cliente sólo conoce al objeto remoto por su interfaz. Por
eso, para el cliente el número no es de tipo NumeroImpl sino Numero.
Universidad de Chile - Tupper 2007, Santiago - Fono/Fax: (56 2) 698 8427 - Email: hthiemer @ cec.uchile.cl
17
Módulo ECI - 11: Fundamentos de Redes de Computadores
Compilar los códigos fuentes y generar las
clases y los llamados “stubs” y skeletons
Una vez implementados las 3 clases hay que
compilarlas para generar
 Numero.class: la interfaz que define lo que se conocerá
del objeto en toda la red.
 NumeroImpl.class: que es el que implementa el objeto
remoto. Además de implementar el constructor y el
método de la interfaz contiene un main que lo único
que hace es crear el objeto y registrarlo o publicarlo
con un nobre dado.
 Cliente.class
 Esto se hace con el compilador javac
18
Universidad de Chile - Tupper 2007, Santiago - Fono/Fax: (56 2) 698 8427 - Email: hthiemer @ cec.uchile.cl
Módulo ECI - 11: Fundamentos de Redes de Computadores
Compilar los códigos fuentes y generar las
clases y los llamados “stubs” y skeletons(2)
 Una vez generadas las 3 clases hay que compilar la clase
implementadora para generar el stub y skel.
 NumeroImpl_stub.class: Es el llamado stub del objeto
remoto. Es el encargado de recibir y transmitir los datos
necesarios para servir a los clientes que piden acceso al
objeto remoto NumeroImpl.
 NumeroImpl_skel.class: es como un esqueleto de la clase.
Tiene sólo la estructura de la clase pero es suficiente
información para que el cliente pueda reunir todo los
antecedentes para llegar a hacer un pedido al stub
 Esto se hace con el compilador rmic NumeroImpl
19
Universidad de Chile - Tupper 2007, Santiago - Fono/Fax: (56 2) 698 8427 - Email: hthiemer @ cec.uchile.cl
Módulo ECI - 11: Fundamentos de Redes de Computadores
Echar a andar toda la aplicación
 Echar a correr rmiregistry:
 java rmiregistry
 Echar a correr el programa servidor de objeto remoto:
 java -Djava.rmi.server.codebase=file:///c:\publico\
-Djava.rmi.server.hostname=ciguena
-Djava.security.policy=policy.txt NumeroImpl
 Echar a correr cliente(s):
 java -Djava.security.policy=policy.txt Cliente
 Una vez obtenida la referencia por el cliente el flujo de
datos corre:
 cliente ->stub->skel->Server->skel->stub->cliente
20
Universidad de Chile - Tupper 2007, Santiago - Fono/Fax: (56 2) 698 8427 - Email: hthiemer @ cec.uchile.cl
Módulo ECI - 11: Fundamentos de Redes de Computadores
CORBA:
Common Object Request Broker Arquitecture
 CORBA es una especificación. No es un software o aplicación.
 Auspiciado por Object Managament Group (OMG), para
establecer una especificación de inter-operabilidad entre
plataformas.
 OMG es fundada en 1989, por American Airlines, Canon, Data
General, HP, Philips Telecomunicaciones, Sun , 3Com y Unisys
 Hay un gran número de implementaciones de CORBA. Estas
son conocidas como Object Request Broker (ORB)
21
Universidad de Chile - Tupper 2007, Santiago - Fono/Fax: (56 2) 698 8427 - Email: hthiemer @ cec.uchile.cl
Módulo ECI - 11: Fundamentos de Redes de Computadores
¿que soluciona Corba?
· Infraestructura IT
 Aplicaciones. Procesos clientes y servidores que
representan la lógica del negocio como objetos
que pueden residir en distintas máquinas.
Aplicaciones
Middleware
Servicios
de Red
Servicios
Locales
 Middleware. Soporte que permite la
comunicación entre aplicaciones.
 Servicios de Red. Transporta la información entre
computadores.
 Servicios Locales. Ejemplo, bases de datos y
administradores de transacciones.
Sistema Operativo
 Sistema Operativo. Provee servicios básicos de
Hw y scheduling.
22
Universidad de Chile - Tupper 2007, Santiago - Fono/Fax: (56 2) 698 8427 - Email: hthiemer @ cec.uchile.cl
Módulo ECI - 11: Fundamentos de Redes de Computadores
Definición Middleware
 Conjunto de servicios comunes no relacionado con “la
lógica de negocio” que permite que aplicaciones servidoras y
clientes interactuen con otras a través de una Red. En esencia
el Middleware es el software que reside sobre la red ,
permitiendo software de aplicacion orientados sólo a “logica
de negocio.
Middleware
23
Universidad de Chile - Tupper 2007, Santiago - Fono/Fax: (56 2) 698 8427 - Email: hthiemer @ cec.uchile.cl
Módulo ECI - 11: Fundamentos de Redes de Computadores
Conceptos claves en CORBA
Los conceptos claves de CORBA son:
 Esencialmente especifica los servicios de middleware que serán usados por
las aplicaciones (objetos).
 Existe una interfaz entre aplicaciones clientes y servidoras. Una lenguaje de
definición de interfaz (IDL) ha sido definido específicamente para CORBA.
 Cualquier objeto puede ser un cliente, un servidor o ambos. Para efectos de
descripción CORBA usa el modelo Cliente/Servidor.
 Soporta “static binding” y “dinamic binding”
 No conoce los detalles de las implementaciones fundamentales de los
objetos. Un “object adapter” mapea modelos genéricos a implementaciones,
siendo la principal manera en que las implementaciones de los objetos
acceden los servicios provistos por el ORB (object Request Broker).
24
Universidad de Chile - Tupper 2007, Santiago - Fono/Fax: (56 2) 698 8427 - Email: hthiemer @ cec.uchile.cl
Módulo ECI - 11: Fundamentos de Redes de Computadores
Diagrama conceptual de CORBA
C
C++
Java
C
C++
Java
Cobol
IDL
IDL
IDL
IDL
Cobol
Client Stubs
Server Skeletons
Corba ORB
25
Universidad de Chile - Tupper 2007, Santiago - Fono/Fax: (56 2) 698 8427 - Email: hthiemer @ cec.uchile.cl
Módulo ECI - 11: Fundamentos de Redes de Computadores
Implementación de CORBA
Cliente
Implementación Objetos
Skeleton
estático
Repositorio
de
Interfaces
Invocación
Dinámica
Stub Cliente
IDL
iinterfaz
ORB
Invocación
Skeleton
Dinámico
Object Adapter
Repositorio de
Implementaci
ones
Corba ORB
26
Universidad de Chile - Tupper 2007, Santiago - Fono/Fax: (56 2) 698 8427 - Email: hthiemer @ cec.uchile.cl
Módulo ECI - 11: Fundamentos de Redes de Computadores
¿como ha evolucionado?
 CORBA es una especificación. Como cualquier especificación
hubo áreas dejadas a la interpretación de los implementadores.
 A través de Internet Inter-ORB Protocol (IIOP), la OMG espera
que ORB’s de diferentes vendedores puedan comunicarse
fácilmente entre si.
 Recientemente las especificaciones “Portable Object Adapter”
(POA) permite a clientes escritos para acceder un ORB en
particular, pueda acceder fácilmente otros productos de diferentes
vendedores.
 Se ha adaptado a los tiempos y a la competencia.
27
Universidad de Chile - Tupper 2007, Santiago - Fono/Fax: (56 2) 698 8427 - Email: hthiemer @ cec.uchile.cl
Módulo ECI - 11: Fundamentos de Redes de Computadores
¿como ha evolucionado?
 CORBA es una especificación. Como cualquier especificación
hubo áreas dejadas a la interpretación de los implementadores.
 A través de Internet Inter-ORB Protocol (IIOP), la OMG espera
que ORB’s de diferentes vendedores puedan comunicarse
fácilmente entre si.
 Recientemente las especificaciones “Portable Object Adapter”
(POA) permite a clientes escritos para acceder un ORB en
particular, pueda acceder fácilmente otros productos de diferentes
vendedores.
 Se ha adaptado a los tiempos y a la competencia.
28
Universidad de Chile - Tupper 2007, Santiago - Fono/Fax: (56 2) 698 8427 - Email: hthiemer @ cec.uchile.cl
Módulo ECI - 11: Fundamentos de Redes de Computadores
¿como ha evolucionado?
CORBA
Feb '92
Ÿ CORBA 1.1
Ÿ Especificación
conocida
'92
Ÿ Primeros
productos
CORBA
comerciales
'89
Ÿ OMG es
fundada
Dec '94
Ÿ anuncia
CORBA 2.0
Dec '93
Ÿ CORBA 1.2
Ÿ
Ÿ
Ÿ
Ÿ
Ÿ
Ÿ
Oct '91
Ÿ CORBA 1.1
1988
1989
1990
1991
Jun '99
CORBA 3.0
Asincrono
Java
Firewalls
POA
Obj. por
valor
Ÿ OMG (750)
Ÿ ........
Ÿ
Ÿ
Ÿ
Ÿ
Ÿ
Ÿ
1992
1993
1994
Ago '96
CORBA 2.0
Sep '98
IIOP
Ÿ anuncia
Ago'97
C++
CORBA 3.0
Seguridad Ÿ CORBA 2.1
Ÿ IIOP / SSL Feb '98
COM
Ÿ CORBA 2.2
.......
Ÿ DCOM
1995
1996
1997
1998
1999
29
Universidad de Chile - Tupper 2007, Santiago - Fono/Fax: (56 2) 698 8427 - Email: hthiemer @ cec.uchile.cl
Módulo ECI - 11: Fundamentos de Redes de Computadores
No es único
Competidores:
DCOM
RMI/RMP
HTTP/CGI
Servlets
Sockets
.............
30
Universidad de Chile - Tupper 2007, Santiago - Fono/Fax: (56 2) 698 8427 - Email: hthiemer @ cec.uchile.cl
Módulo ECI - 11: Fundamentos de Redes de Computadores
Transmitiendo Objetos por TCP
Transmisión: marshaling, delivery y
unmarshaling.
La clave para esto es la serialización de los
objetos: convertirlos en una representación que
pueda ser transmitida
Todos los objetos que provee Java son
serializables.
Basta poner implements Serializable para los
definidos por el usuario (no incluye statics o
referencias a cosas locales, como archivos o
sockets)
Universidad de Chile - Tupper 2007, Santiago - Fono/Fax: (56 2) 698 8427 - Email: hthiemer @ cec.uchile.cl
31
Módulo ECI - 11: Fundamentos de Redes de Computadores
Transmitiendo Objetos por TCP
La clase para transmitirlos son:
 ObjectInputStream readObjetct()
 ObjectOutputStream writeObject()
Se puede cambiar el procedimiento
estándar de serialización declarando que la
clase implementa la interfaz Externalizable
Esto implica implementar
 Void writeExternal(ObjectOutputStram o)
 Void readExternal(ObjectInputStream i);
32
Universidad de Chile - Tupper 2007, Santiago - Fono/Fax: (56 2) 698 8427 - Email: hthiemer @ cec.uchile.cl