Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Computacin
Universidad Nacional de Misiones
TESIS DE MAESTRA
ii
Prefacio
El presente trabajo de Tesis de Maestra se ha realizado con el propsito
de integrar diversos conocimientos adquiridos en el desarrollo de la Maestra
para resolver de manera novedosa y a bajo costo, el problema de la integracin de aplicaciones de legado (legacy) desarrolladas en los aos 70s,
que requieren intercambiar informacin entre diferentes equipos conectados mediante Internet, utilizando un gestor de trco de requerimientos
y respuestas a nivel de capa de aplicacin.
El mencionado gestor de trco, llamado protocolo YOSUKO, fue
desarrollado utilizando el lenguaje multiplataforma Java y gran parte de
sus posibilidades de gestin de trco y de seguridad.
Contenido
Esta Tesis est dividida en tres partes claramente denidas:
iii
iv
Agradecimientos
Tabla de Contenidos
Prefacio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Contenido . . . . . . . . . . . . . . . . . . . . . . . . . .
Agradecimientos . . . . . . . . . . . . . . . . . . . . . . .
ii
ii
iv
Introduccin . . . . . . . . . . . . . . . . . . . . . . .
Objetivo General . . . . . . . . . . . . . . . . . . . .
Objetivos Especcos . . . . . . . . . . . . . . . . . .
Hiptesis . . . . . . . . . . . . . . . . . . . . . . . . .
Justicacin del Estudio . . . . . . . . . . . . . . . .
Denicin del Impacto de la Investigacin . . . . . .
Marco Conceptual . . . . . . . . . . . . . . . . . . .
Resea Sobre Modelos de Diseos de Programas
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Introduccin . . . . . . . . . . . . . . . . . . . . . . . .
Niveles o Capas del Modelo OSI . . . . . . . . . . . . .
Protocolo TCP/IP . . . . . . . . . . . . . . . . . . . .
Introduccin . . . . . . . . . . . . . . . . . . . . .
Funciones TCP/IP . . . . . . . . . . . . . . . . .
Denicin del Nivel IP . . . . . . . . . . . . . . .
Estructura del Datagrama . . . . . . . . . . . . .
Ruteo . . . . . . . . . . . . . . . . . . . . . . . . . . .
Detalles de Direccionamiento: Subredes y Broadcasting
Fragmentacin y Reensamblado del Datagrama . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
2
2
3
4
4
5
5
6
6
8
10
14
14
16
17
18
19
21
23
v
TABLA DE CONTENIDOS
vi
...
...
...
Pre...
...
3 Sistema Distribuidos
Introduccin . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Enfoques al Diseo de Aplicaciones Distribuidas . . . . . . . .
Aplicaciones Distribuidas en Internet . . . . . . . . . . . . . .
Sockets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
RPC - Llamadas a Procedimientos Remotos . . . . . . . . . .
Diferentes Enfoques Para la Contruccin de Aplicaciones Distribuida . . . . . . . . . . . . . . . . . . . . . . . . . . .
Entorno de Computacin Distribuida . . . . . . . . . . .
El Modelo de Objeto Componente Distribuido . . . . . .
Arquitectura de Intermediacin de Solicitud de Objetos Comunes (CORBA) . . . . . . . . . . . . . . . . . . . . . .
Invocacin Remota de Mtodos de Java . . . . . . . . . . . . .
El Modelo de Objeto Distribuido de Java . . . . . . . . . . . .
Las Tres Capas de la RMI de Java . . . . . . . . . . . . . . .
Pasar Argumentos y Valores de Retorno . . . . . . . . . . . .
Los Objetos y la Invocacin Remota de Mtodos . . . . . . . .
Seguridad de la Aplicacin Distribuida . . . . . . . . . . . . .
Seguridad en el Transporte . . . . . . . . . . . . . . . . . . . .
Autenticacin y Control de Acceso . . . . . . . . . . . . . . .
4 Sistemas Expertos
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
23
24
26
26
27
29
29
30
31
32
35
37
37
38
42
44
45
46
49
50
51
52
52
57
57
58
58
59
60
60
61
62
TABLA DE CONTENIDOS
vii
El Motor de Inferencia . . . . . . . . . . . . . . . . .
Modus Ponens y Modus Tollens . . . . . . . . . . . .
Resolucin . . . . . . . . . . . . . . . . . . . . . . . .
Encadenamiento de Reglas . . . . . . . . . . . . . . .
Encadenamiento de Reglas Orientada a un Objetivo .
Compilacin de Reglas . . . . . . . . . . . . . . . . .
Control de la Coherencia . . . . . . . . . . . . . . . .
Metodologa de Weiss y Kulikowski . . . . . . . . . .
Base de Conocimiento . . . . . . . . . . . . . . . . .
Modelado de la Base de Conocimiento . . . . . . . .
Deniciones y Conceptos Sobre Grafos . . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
62
64
65
66
67
67
67
68
69
69
73
77
Introduccin . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77
Objeto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78
Clases y Objetos . . . . . . . . . . . . . . . . . . . . . . 79
Propiedades de un Lenguaje Orientado a Objetos . . . . . . . 80
Encapsulamiento . . . . . . . . . . . . . . . . . . . . . . 81
Herencia . . . . . . . . . . . . . . . . . . . . . . . . . . . 83
Polimorsmo . . . . . . . . . . . . . . . . . . . . . . . . 85
Lenguaje Java . . . . . . . . . . . . . . . . . . . . . . . . . . . 86
Caractersticas Destacables del Lenguaje Java . . . . . . 86
Socket . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96
Pasos Para Crear un Servidor . . . . . . . . . . . . . . . 96
Crear el Socket Servidor . . . . . . . . . . . . . . . . . . 97
Aceptar un Cliente . . . . . . . . . . . . . . . . . . . . . 97
Obtener el InputStream y / o OutputStream . . . . . . . 98
Crear unos InputStream y / o OutputStream Ms Adecuados a las Necesidades . . . . . . . . . . . . . . 98
Leer y Escribir Datos Del y Al Cliente . . . . . . . . . . 99
Cerrar el Socket . . . . . . . . . . . . . . . . . . . . . . . 102
Pasos Para Crear un Cliente . . . . . . . . . . . . . . . . 102
104
105
TABLA DE CONTENIDOS
viii
Introduccin . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Objetivos del Prototipo . . . . . . . . . . . . . . . . . . . . .
Estudio Comparativo de Ambas Versiones del Prototipo . . .
Protocolo YOSUKO V. 2.0. . . . . . . . . . . . . . . . . . . .
Introduccin . . . . . . . . . . . . . . . . . . . . . . . . .
Planteo del Problema . . . . . . . . . . . . . . . . . . . .
Estudio de Factibilidad para Brindar una Solucin al Problema . . . . . . . . . . . . . . . . . . . . . . . . .
Conclusin del Estudio de Factibilidad . . . . . . . . . .
Desarrollo de la Experiencia . . . . . . . . . . . . . . . .
Arquitectura Utilizada para Desarrollar el Protocolo . . .
Base de Conocimiento Yosuko V 1.0. . . . . . . . . . . .
Almacenamiento de las Reglas . . . . . . . . . . . . . . .
Conclusin . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Introduccin . . . . . . . . . . . . . . . . . . . . . . .
Seguridad Nivel de Aplicacin . . . . . . . . . .
Seguridad Cuando se Transmite la Informacin
Seguridad Nivel Usuarios . . . . . . . . . . . . .
Diagrama en Bloque del Sistema . . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
105
106
106
107
107
108
108
109
110
115
115
117
131
132
132
133
135
137
138
.
.
.
.
.
.
.
.
.
.
.
.
.
.
140
141
146
152
157
160
162
168
TABLA DE CONTENIDOS
III Anexo
10 Anexo
ix
171
172
172
176
176
177
178
178
179
179
180
Bibliografa
183
ndice Alfabtico
186
Lista de Figuras
2-1
2-2
2-3
3-1
3-2
3-3
3-4
3-5
3-6
3-7
3-8
3-9
4-1
4-2
4-3
4-4
4-5
4-6
4-7
4-8
4-9
4-10
5-1
5-2
5-3
11
15
18
30
32
33
34
36
54
55
55
56
58
61
65
66
70
70
72
74
74
75
79
84
91
x
LISTA DE FIGURAS
5-4
5-5
5-6
5-7
5-8
5-9
5-10
5-11
5-12
5-13
5-14
5-15
5-16
5-17
5-18
5-19
5-20
5-21
5-22
5-23
5-24
6-1
6-2
6-3
6-4
6-5
6-6
6-7
6-8
6-9
6-10
6-11
6-12
6-13
6-14
6-15
Objeto remoto. . . . . . . . . . . . . . . . . . . . . . .
Permiso de seguridad. . . . . . . . . . . . . . . . . . .
Archivo de poltica de seguridad. . . . . . . . . . . . .
Lanzamiento de rmiregristry. . . . . . . . . . . . . . . .
Indicacin de la ubicacin del cdigo base. . . . . . . .
Gestor de seguridad. . . . . . . . . . . . . . . . . . . .
Instancia y registra un objeto en el servidor rmi. . . . .
Solicitud de objeto remoto. . . . . . . . . . . . . . . . .
Llamado a un mtodo. . . . . . . . . . . . . . . . . . .
Creacin del socket servidor. . . . . . . . . . . . . . . .
El servidor activa la atencin a un cliente. . . . . . . .
Lectura y envo de datos. . . . . . . . . . . . . . . . .
Objetos para recibir datos (enteros, otantes, strings).
Objetos para recibir o enviar clases. . . . . . . . . . . .
Implementa interface Serializable. . . . . . . . . . . . .
Implementa interface Serializable. . . . . . . . . . . . .
Dene mtodos privados. . . . . . . . . . . . . . . . . .
Mtodo WriteObjet. . . . . . . . . . . . . . . . . . . .
Lectura de objetos por socket. . . . . . . . . . . . . . .
Cierre de una conexin cliente y servidor. . . . . . . . .
Creacin de una conexin cliente. . . . . . . . . . . . .
Presupuesto de servidor. . . . . . . . . . . . . . . . . .
Costo de la comunicacin. . . . . . . . . . . . . . . . .
Arquitectura utilizada para el sistema experto. . . . . .
Estructura del almacenamiento de las reglas. . . . . . .
Archivo de reglas. . . . . . . . . . . . . . . . . . . . . .
Algoritmo del motor de inferencia de YOSUKO V.1.0. .
Archivo de nodos. . . . . . . . . . . . . . . . . . . . . .
Archivo contenedor de reglas. . . . . . . . . . . . . . .
Regla 1 del ejemplo. . . . . . . . . . . . . . . . . . . .
Regla 2 del ejemplo. . . . . . . . . . . . . . . . . . . .
Regla 3 del ejemplo. . . . . . . . . . . . . . . . . . . .
Regla 4 del ejemplo. . . . . . . . . . . . . . . . . . . .
Regla 5 del ejemplo. . . . . . . . . . . . . . . . . . . .
Clculo de ping modelo 1. . . . . . . . . . . . . . . . .
Clculo TPR segundo mtodo. . . . . . . . . . . . . . .
xi
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
92
93
93
94
94
95
95
96
96
97
98
98
99
99
100
101
101
102
102
102
103
111
114
115
117
118
119
120
122
122
123
123
123
124
126
129
LISTA DE FIGURAS
6-16
7-1
7-2
8-1
8-2
8-3
8-4
8-5
8-6
8-7
8-8
8-9
8-10
8-11
8-12
8-13
8-14
8-15
8-16
8-17
8-18
8-19
8-20
8-21
8-22
8-23
10-1
10-2
10-3
10-4
10-5
10-6
xii
130
134
139
142
143
144
145
146
147
157
158
158
159
159
160
161
162
163
163
164
165
165
166
166
167
167
176
179
180
181
181
182
Parte I
Marco Conceptual y
Herramientas Utilizadas
Captulo 1
Aspectos Conceptuales
Introduccin
La masicacin de las redes computacionales, y el exponencial crecimiento de Internet, han cambiado la forma en que los usuarios comparten, distribuyen y analizan la informacin.
Adems las nuevas tecnologas en comunicacin, han logrado centralizar o distribuir la informacin en tiempo real, brindando grandes
benecios a las empresas o al ser humano que utiliza estas herramientas
para la toma de decisiones.
Muchos sistemas actualmente poseen la Tecnologa Cliente / Servidor con Motores de Bases de Datos, utilizando una conectividad ODBC ,
JDBC , en una gran diversidad de redes locales o de rea amplia, interactuando con diversos dispositivos inteligentes. Esto signica un gran
benecio para algunas empresas (que aprovechan todas las bondades),
y un inconveniente para otras, que solo los aprovechan parcialmente, lo
2
Aspectos Conceptuales
Objetivo General
Teniendo en cuenta los inconveniente antes mencionados, se propuso desarrollar un Sistema Experto Multiplataforma en lenguaje Java, empleando comunicacin de bajo costo, permitiendo gestionar trco entre
servidores remotos, teniendo en cuenta como mtrica la del camino ms
rpido, detectado mediante sondeo en tiempo real, e integrando software
desarrollado en la dcada de los 70s, con tecnologa Clientes Servidor,
Motor de Bases de Datos, e interconexin a Internet, y brindando seguridad a la informacin transmitida.
Para evaluar el sistema se realizaran pruebas con la interfaz, y las
nuevas tecnologas, demostrando la efectividad en costo y velocidad.
Aspectos Conceptuales
Objetivos Especficos
Disear y desarrollar un Sistema Experto basado en reglas (en lenguaje
Java ), con el n de lograr los siguientes objetivos:
1. Gestionar el trco entre servidores remotos, utilizando comunicacin de bajo costo, detectando el mejor camino segn el criterio
ya mencionado.
2. Interactuar con los diferentes Motores de Bases de datos o sistemas
de archivos de los distintos servidores mediante comandos de SQL.
3. Integrar aplicaciones, desarrollada en la dcada de los 70s, a travs
de un contenedor de pedidos; estas aplicaciones se podrn ejecutar
en forma local o remota.
4. Utilizar algoritmos de seguridad para dar proteccin a los datos
recibidos o enviados por el contenedor de pedidos.
5. Disear pruebas que permitan evaluar la efectividad del software.
Hiptesis
Es posible desarrollar un Sistema Experto para gestin de trco, a nivel,
de capa de aplicacin, capaz de integrar software confeccionado en la
dcada de los 70s, con tecnologa Cliente / Servidor, Motor de Bases de
Datos, interconectado con varios servidores, proveyendo seguridad a la
informacin transmitida.
Aspectos Conceptuales
Aspectos Conceptuales
Marco Conceptual
Modelo 1:
Modelo 2:
Son programas de modelo 1, muy planicados, para realizar ejecucin remota. Utilizan lenguaje SQL con tecnologa ODBC o JDBC, y
stos se enlazan con bases de datos relacionales, implicando generalmente
servidores costosos y comunicacin de alto costo para lograr rendimiento.
Adems se debe contar con una buena poltica de seguridad con respecto
a la proteccin de los servidores.
Modelo 3:
Aplicaciones distribuidas, cuyos procedimientos se distribuye por mltiples computadoras de una red, y que son capaces de servir a usuarios
mltiples. Se implementan como sistemas cliente / servidor, organizados
de conformidad con la interfaz de usuario [14, Jaworski-99]. Tambin se
denominan aplicaciones RMI (Invocacin Remota de Mtodos).
[32, Tanenbaum-97-01] Expresa que Un sistema distribuido es aqul
al que sus usuarios ven como un ordinario sistema operativo centralizado;
sin embargo, se ejecuta en diferentes e independientes CPUs. El concepto clave aqu es la transparencia ; en otras palabras, el uso de diversos
procesadores deber ser invisible (transparente) al usuario. Otra forma
de expresar esta misma idea es diciendo que el usuario ver al sistema
como un uniprocesador virtual y no como una coleccin de mquinas
diferentes.
Aspectos Conceptuales
Captulo 2
Protocolos de Comunicacin
de Datos
Introduccin
Desde tiempos muy remotos los seres humanos han desarrollado y asimilado un lenguaje de comunicacin, que les ha permitido entenderse, relacionarse, compartir conocimientos, y progresar. Del mismo modo, en una
red, para establecer la comunicacin entre las computadoras, se requiere
un lenguaje comn, el protocolo es dicho lenguaje.
Los protocolos son estndares software que se instalan en las computadoras de una red para denir el lenguaje, las reglas, los procedimientos,
y las metodologa utilizadas, para que las mquinas de la red, puedan
entenderse entre ellas. El uso de protocolos, permite a las computadoras comunicarse, intercambiar informacin, atender errores que puedan
producirse durante el intercambio, etc.
8
La sincronizacin temporal.
La sincronizacin en el orden de los campos de un paquete.
La sincronizacin en el signicado que se d a los mensajes de los
campos de un paquete.
Estos tres requisitos deben ser cumplidos a la perfeccin por los protocolos para un correcto funcionamiento de la red.
A continuacin se describe cada uno de ellos:
10
Lgicos : Independientes de lo fsico; independientes de las agrupaciones de software y hardware que existen actualmente.
Funcionales : Cada nivel cumple una tarea especca.
Jerrquicos : Cada nivel tiene autoridad sobre su inmediato inferior
y desarrolla tareas ms generales o menos especializadas que su
nivel inferior.
Ideales : Actualmente su implementacin es ms un modelo, un
marco de referencia, una norma, un deseo o una utopa que una re-
Figura 2-1
11
alidad totalmente llevada a la prctica por los fabricantes de hardware, software y protocolos de red.
El modelo de referencia OSI tiene como funcin :
Nivel l (fsico): En este nivel se denen las normas y especicaciones tcnicas del hardware de red (tarjetas de red, Hub, cableado,
conectores, topologas, arquitectura, etc.) y la forma de transmisin de las seales elctricas u pticas (bits) de un ordenador a
otro a travs del cableado.
Nivel 2 (enlace de datos): En este nivel se denen las normas y
especicaciones tcnicas de los controladores (drivers) de la arquitectura de red usada (Ethernet, ARCnet, Token Ring, ATM, etc.)
y de las especicaciones (ODI, NDIS, etc.) que permiten:
12
13
14
Protocolo TCP/IP
Introduccin
15
Figura 2-2
Este lenguaje comn que se instala en las computadoras de la red permite llevar a cabo la comunicacin entre diferentes plataformas, sistemas
operativos, topologas y arquitecturas por el mejor camino disponible.
Eso signica que, en las redes interconectadas, si existe algn camino deteriorado o congestionado con excesivo trco de informacin, los ruteadores
TCP/IP buscan el mejor camino alternativo.
Luego del xito y difusin que tuvo el protocolo TCP/IP, la Agencia
de Investigaciones Avanzadas de Proyectos de Defensa de Estados Unidos
16
Funciones de TCP
Controlar y asegurar el orden en que se envan y reciben los paquetes de datos durante una transmisin a travs de la red, entre dos
mquinas remotas.
Asegurar que los paquetes enviados y recibidos lleguen a destino;
en caso contrario, arbitrar los medios para que sean reenviados.
Asegurar que los paquetes enviados y recibidos lleguen en buen
estado; en caso contrario, arbitrar los medios para que sean reenviados.
Funciones de IP
Las funciones son las siguientes:
Elegir el camino correcto (rutear) de los paquetes de datos que viajan mediante la red pasando a travs de los diferentes ruteadores
para llegar a la computadora destino. Los ruteadores son dispositivos o computadoras que vinculan las redes entre s. Su funcin
es encaminar los paquetes de datos recibidos para que continen el
trayecto hacia su destino nal. Tanto las PCs que envan o reciben
datos a travs de la red como los ruteadores que encaminan dichos
paquetes, hacen uso del protocolo IP para lograr una comunicacin
estandarizada, y as, entenderse y cumplir sus objetivos.
17
18
19
Ruteo
Como se mencion anteriormente, IP es responsable de llevar un datagrama al destino indicado en el encabezado, pero poco se dijo de cmo
se hace. La tarea de encontrar cmo llevar un datagrama al destino es
20
21
Existe la posibilidad de que un gateway mande un mensaje especicando que l no es la mejor opcin e informando cual s lo es.
La mayor parte de las interfaces de red son diseadas para usar este
tipo mensajes para agregar o modicar entradas en la tabla.
Se recomienda que los host en forma individual no traten de buscar el
camino hacia el destino nal por ellos mismos, sino que dejen esta tarea
a los gateways.
Para que los gateways puedan armar sus tablas de ruteo se necesitan
protocolos de ruteo.
22
23
24
Ahora se supone que el host no encuentra la direccin Ethernet asociada en la tabla de ARP local, entonces se utiliza el protocolo ARP para
enviar un Request. Todos los Host escuchan el ARP Request. Cuando
un host interpreta que el ARP Request es para l, responde. Esta respuesta se hace mediante un ARP Reply informando al que origin el
request la direccin Ethernet del que responde. El host origen salvar
la informacin en la tabla de ARP local para enviar futuros paquetes
directamente.
La mayora de los host tratan a las tablas de ARP como una cach y
limpian peridicamente las entradas que no son usadas.
Se debe notar que la forma de enviar en ARP Request es por medio
de un paquete de broadcast. Los ARP request no se pueden enviar
directamente a un Host determinado. Muchos host utilizan los ARP
Request que le arriban para actualizar su propia tabla ARP.
Sistema de Dominios
Generalmente, el software de red utiliza direcciones IP de 32 bits para
enviar datagramas, sin embargo los usuarios preeren utilizar nombres
en lugar de nmeros. De esta manera se podra contar con una base
de datos que permita asociar nombres a direcciones IP, esto implicara
tener una tabla con las direcciones-nombres del resto de los Host. Esta
solucin es simple si contamos con una red pequea, pero se vuelve poco
prctica para redes de gran tamao.
En el caso de redes grandes en lugar de tablas se tiene un conjunto
de servidores de nombres interconectados.
Los servidores de nombres forman un rbol que se corresponde con
una estructura institucional. Estas instituciones conforman el sistema
de dominios y delegan la autoridad sobre los nombres a instituciones
jerrquicamente inferiores en el rbol del sistema de dominios.
Un ejemplo de un nombre es AYELEN.INFO.UNLP.EDU. Este nom-
25
26
27
Mtodos de Comunicacin
Los protocolos de transporte se utilizan para enviar informacin de un
puerto a otro consiguiendo as que haya comunicacin entre los programas
de aplicacin. Utilizan un mtodo de comunicacin orientada a conexin
o bien un mtodo sin conexin.
TCP es un protocolo orientado a conexin y UDP es un protocolo
de transporte sin conexin.
El protocolo TCP orientado a conexin establece un vnculo de comunicacin entre una direccin del puerto fuente y una direccin del puerto
destino. Los puertos se conectan entre s a travs de este vnculo hasta
que la conexin naliza y el vnculo se rompe. Un ejemplo de protocolo
orientado a conexin es una conversacin telefnica. Esta se establece,
la comunicacin tiene lugar y la conexin naliza.
La abilidad de la comunicacin que se establece entre los programas fuente y destino se asegura a travs de mecanismos de deteccin y
correccin de errores que se implementan en el TCP.
TCP implementa la conexin como un ujo de bytes desde la fuente
hasta el destino. Esta caracterstica permite el uso de clases de E/S de
ujo que ofrece Java.io.
El protocolo sin conexin UDP diere del protocolo orientado a conex-
28
Captulo 3
Sistema Distribuidos
Introduccin
La forma ms elemental de interpretar un sistema distribuido es la de
un sistema computacional compuesto por diferentes procesadores interconectados. Normalmente, esta interconexin estar soportada por una
red abierta, basada en un conjunto de protocolos estndar que permita
la colaboracin entre aplicaciones, escalabilidad y portabilidad.
Esta interpretacin no es, sin embargo, completa; los componentes
de una aplicacin distribuida pueden residir en la misma mquina o en
distintos nodos de la red y, por lo tanto, al hablar de las interconexiones
no se trata tanto de que se produzcan a travs de enlaces hardware, sino
de comunicaciones entre procesos.
Las siguientes secciones muestran los principales conceptos: enfoques
al diseo de aplicaciones distribuidas, aplicacin distribuida en Internet,
sockets, RPC - llamadas a procedimientos remotos, diferentes enfoques
29
Sistema Distribuidos
30
Sistema Distribuidos
31
Sistema Distribuidos
32
Servidor
Black-end
Servidor
Black-end
Servidor
De aplicacin
cliente
cliente
cliente
Sockets
La comunicacin entre cliente / servidor se realiza a bajo nivel sobre un
determinado protocolo de red, siendo TCP/IP el ms empleado. Cada
dispositivo en red recibe una direccin IP nica (al menos en el mbito
Sistema Distribuidos
33
Objetos de
Normas
Comerciales
Aplicacin
Financiera
Objeto
de
Bsqueda
Objeto de
Distribucin de
Informacin
Sistema Distribuidos
34
Sistema Distribuidos
35
Sistema Distribuidos
36
Sistema Distribuidos
37
Sistema Distribuidos
38
celda y controlar el acceso a los recursos que estn disponibles dentro de la misma.
Sistema Distribuidos
39
Sistema Distribuidos
40
Sistema Distribuidos
41
Sistema Distribuidos
42
Sistema Distribuidos
43
Sistema Distribuidos
44
Sockets TCP : Java los admite. Puede construir aplicaciones tradicionales cliente / servidor en base a sockets usando Java en una
intranet o en Internet. Los applets y servlets de Java se pueden
usar para distribuir la capa de procesamiento de informacin de la
aplicacin entre el cliente y el servidor. Aunque Java admita sockets TCP, JavaSoft decidi que se necesitaba un enfoque ms denso
para el desarrollo de las aplicaciones distribuidas, como el que proporciona CORBA, con el n de desarrollar aplicaciones distribuidas
avanzadas por medio de Java.
DCE : Se basa en la RPC, que constituye un enfoque orientado a
procedimientos para el desarrollo de aplicaciones distribuidas. La
RPC no se acopla bien con las aplicaciones distribuidas orientadas
a objetos. El enfoque que la invocacin remota de mtodos que
Sistema Distribuidos
45
Sistema Distribuidos
46
Sistema Distribuidos
47
Sistema Distribuidos
48
con ms de una instancia de esqueleto (no admitida activamente), el objeto fragmento adaptador se comunicar con esqueletos mltiples de un
modo multidifusin.
Hoy por hoy, la API RMI slo dene las clases que admiten una comunicacin unidifusin entre un fragmento adaptador y un solo esqueleto.
La capa de referencia remota tambin puede ser utilizada para activar
los objetos servidor cuando se invoquen remotamente.
La capa de refencia remota del host local se comunica con la capa de
referencia remota del host remoto a travs de la capa de transporte de la
RMI.
La capa de transporte congura y administra las conexiones que se dan
entre objetos a los que se puede acceder normalmente y determina cundo
las conexiones estn en comps de espera y se vuelven inoperativas. La
capa de transporte utiliza por defecto sockets TCP para comunicarse
entre los hosts local y remoto, no obstante, se puede usar tambin otros
protocolos de capa de transporte, como SSL y UDP .
La gura 3-9 de la pg. 56 ilustra las tres capas que se usan para
implementar la RMI de Java.
En esta vista ampliada del modelo:
Sistema Distribuidos
49
Sistema Distribuidos
50
La clase del objeto debe implementar una interfaz que ample la interfaz Remote. Esta interfaz debe denir los mtodos que el objeto
va a permitir que se invoquen remotamente. Estos mtodos deben
arrojar la excepcin RemoteException.
La clase del objeto debe ampliar la clase RemoteServer. Esto se
hace normalmente ampliando la subclase UnicastRemoteObject de
RemoteServer.
Sistema Distribuidos
51
Las clases de fragmento adaptador y el esqueleto de la clase de objeto deben ser creados por medio del compilador rmic. El fragmento
adaptador debe ser distribuido al host del cliente.
La clase, interfaz y clase del esqueleto del objeto remoto deben
estar en la CLASSPATH del host remoto. El demonio de activacin
remota y el registro remoto deben estar activados.
.Se debe crear una instancia de objetos remotos, y se debe registrar
en el registro remoto. Los mtodos bind ( ) y rebind ( ) de la clase
Naming se ulizan para registrar un objeto con su nombre asociado.
El objeto remoto debe instalar un administrador de seguridad para
permitir la carga de las clases de la RMI.
Sistema Distribuidos
52
Seguridad en el Transporte
Dado que la RMI utiliza TCP/IP para la comunicacin en redes, est
sujeto a las debilidades del paquete de protocolos TCP /IP.
Las mejoras del JDK 1.2 a la RMI ofrecen la posibilidad de crear
sockets personalizados sobre una base objeto a objeto.
Los sockets personalizados pueden hacer que la RMI utilice el protocolo SSL de Netscape para proteger la informacin a medida que se
comunica entre los objetos locales y remotos. Esto se hace creando una
RMI- SocketFactory personalizada.
Sistema Distribuidos
53
Servidor de objetos
Objeto local
COM
Servidor de objetos
Objeto remoto
COM
Biblioteca
COM
registro
Tiempo de
Ejecucin
COM(SCM)
Tiempo de
Ejecucin
COM(SCM)
nivel de
transporte
nivel de
transporte
registro
Sistema Distribuidos
55
Objetivo cliente
Objetivo cliente
FRAGMENTO
IDL
ESQUELETO
DE IDL
ORB
OBJETO
CLIENTE
OBJETO
SERVIDOR
FRAGMENTO
ESQUELETO
Sistema Distribuidos
56
Objeto
Cliente
Objeto
Servidor
Fragmento
Esqueleto
Nivel de
Nivel de
Referencia
Remota
Referencia
Remota
Nivel de
Transporte
Nivel de
Transporte
Captulo 4
Sistemas Expertos
Definicin de Sistema Experto
Un sistema experto (SE) puede denirse como un sistema informtico
(hardware y software) que simula a los expertos humanos en un rea de
especializacin dada [5, Castillo Gutierrez Haidi-96].
La ms poderosa contribucin de los sistemas expertos es poner al
servicio de los analistas noveles la experiencia adquirida por aquellas
personas consideradas verdaderos especialistas en el rea.
Un SE es un software que imita el comportamiento de un experto
humano en la solucin de un problema. Pueden almacenar conocimientos de expertos para un campo determinado y solucionar un problema
mediante deduccin lgica de conclusiones.
Son programas que contienen tanto conocimiento declarativo (hechos
a cerca de objetos, eventos y/o situaciones) como conocimiento de control
57
Sistemas Expertos
58
Sistemas Expertos
59
Tipos de Conocimiento
Sistemas Expertos
60
Fuentes de Conocimiento
Existen dos tipos de fuentes de conocimiento:
Fuentes Primarias : acceso directo al conocimiento (experto humano, libros, textos, Internet, etc.).
Fuentes Secundarias : acceso indirecto a la informacin (referencias,
publicaciones, etc.).
Sistemas Expertos
61
Sistemas Expertos
62
El Motor de Inferencia
Se ha mencionado que hay dos tipos de elementos : los datos (hechos o
evidencia) y el conocimiento (el conjunto de reglas almacenado en la base
de conocimiento).
Sistemas Expertos
63
Modus Ponens.
Modus Tollens.
Resolucin.
Las estrategias de inferencias son las siguientes:
Encadenamiento de reglas.
Encadenamiento de reglas orientado a un objeto.
Compilacin de reglas, que son utilizadas por el motor de inferencia
para obtener conclusiones simples y compuestas.
Las dos primeras reglas de inferencia se usan para obtener conclusiones simples y el resto de reglas y estrategias para obtener conclusiones
compuestas.
Ntese, sin embargo, que ninguna de las estrategias anteriores, si se
implementan solas, conduce a todas las conclusiones posibles. Por ello
Sistemas Expertos
64
Sistemas Expertos
65
Las dos reglas de inferencia no deben ser vistas como alternativas sino
como complementarias.
La regla Modus Ponens necesita informacin de los objetos de la
premisa para concluir, mientras que la regla Modus Tollens necesita informacin sobre los objetos de la conclusin.
De hecho, para un motor de inferencia que solamente utiliza Modus
Ponens, la incorporacin de la regla de inferencia Modus Tollens puede
ser considerada como una expansin de la base de conocimiento mediante
la adicin de reglas.
Resolucin
Las reglas de inferencias Modus Ponens y Modus Tollens puede ser utilizada para obtener conclusiones simples. Por otra parte, las conclusiones
compuestas, que se basan en dos o ms reglas, se obtienen usando el llamado mecanismo de resolucin .
Sistemas Expertos
66
Encadenamiento de Reglas
Una de las estrategias de inferencia ms utilizada para obtener conclusiones compuestas es el llamado encadenamiento de reglas.
Esta estrategia puede utilizarse cuando las premisas de ciertas clases
coinciden con conclusiones de otras.
Cuando se encadenan las reglas, los hechos pueden dar lugar a nuevos
hechos. Esto se repite sucesivamente hasta que no pueda obtenerse ms
conclusiones.
El tiempo que consume este proceso hasta su terminacin depende,
por una parte, de los hechos conocidos, y por otra, de las reglas que se
activan.
Sistemas Expertos
67
El algoritmo de encadenamiento de reglas orientado a un objetivo requiere del usuario seleccionar, en primer lugar, una variable o nodo objetivo; entonces el algoritmo navega a travs de reglas en bsqueda de una
conclusin para el nodo objetivo.
Si no se obtiene ninguna conclusin con la informacin existente, entonces el algoritmo fuerza a preguntar al usuario en busca de nueva informacin sobre los elementos que son relevantes para obtener informacin
sobre el objetivo.
Compilacin de Reglas
Otra forma de tratar con reglas encadenadas consiste en comenzar con un
conjunto de datos (informacin) y tratar de alcanzar algunos objetivos.
Esto se conoce con el nombre de compilacin de reglas.
Cuando ambos, datos y objetivos, se han determinado previamente,
las reglas pueden ser compiladas, es decir, pueden escribirse los objetivos
en funcin de los datos para obtener las llamadas ecuaciones objetivo.
En el presente trabajo se ha utilizado Modus Ponens y encadenamiento
de reglas.
Control de la Coherencia
En situaciones complejas, incluso verdaderos expertos pueden dar informacin inconsistente (por ejemplo, reglas inconsistentes y/o combinaciones de hechos no factibles). Por ello es muy importante controlar
la coherencia del conocimiento tanto durante la construccin de la base
de conocimiento como durante los procesos de adquisicin de datos y
razonamiento.
Si la base de conocimiento contiene informacin inconsistente (por
ejemplo, reglas y/o hechos), es muy probable que el SE se comporte de
forma poco satisfactoria y obtenga conclusiones absurdas.
Sistemas Expertos
68
Ayudar al usuario a no dar hechos inconsistentes, por ejemplo, dndole al usuario las restricciones que debe satisfacer la informacin
demandada.
Evitar que entre en la base de conocimiento cualquier tipo de
conocimiento inconsistente o contradictorio.
Sistemas Expertos
69
Base de Conocimiento
No es el nico componente de un SE. Si lo fuera un SE podra ser tan
solo una lista de reglas condicionales if - then.
Lo que se necesita es un mecanismo para operar a lo largo de la base
de conocimiento para resolver un problema. A tal mecanismo se le conoce
como motor de inferencia.
Otra pieza necesaria es el rea de trabajo que contenga las condiciones del problema; esta captura puede realizarse mediante una lista
de vericacin, preguntas y respuestas de opcin mltiple o un sistema
extremadamente sosticado sentado en el idioma natural.
Para interactuar con el sistema experto el usuario captura las condiciones de un problema en la interfaz del usuario, y las almacena en el
rea de trabajo.
El motor de inferencia se vale de tales condiciones para buscar una
solucin en la base de conocimiento. La gura 4-5 de la pg. 70 muestra
un diagrama de secuencias de este proceso1 .
Joseph Schmuller-2000.
Joseph Schrnuller-2000.
Sistemas Expertos
70
Para balancear la proliferacin respecto a la necesidad de la simplicidad, primero se crea un sencillo icono que representa a la regla, se llena
la parte de if y la parte de then, seguidamente se debe de incorporar
cierta informacin de identicacin para cada regla, se agrega su nombre
en la parte superior; con esto se logra:
1. Convertir a cada regla en nica.
2. Mostrar adnde ir en el catlogo de reglas para obtener una descripcin y explicacin completa de la regla.
Sistemas Expertos
71
Todas estas etapas inuyen en la calidad del SE resultante, que siempre debe ser evaluado en funcin de las aportaciones de los usuarios.
Las etapas en el desarrollo de un SE se indican en la gura 4-7 de la
pg. 723 .
La diferencia fundamental entre un programa tradicional y un SE
puede resumirse como sigue:
Un programa tradicional puede esquematizarse de la siguiente manera:
3
Sistemas Expertos
72
Sistemas Expertos
73
Sistemas Expertos
74
Las aristas de un grco pueden ser dirigidas o no dirigidas, dependiendo de si se considera o no, el orden de los nodos.
En la prctica esta distincin depender de la importancia del orden
en que se relacionan los objetos.
En la gura 4-8 de la pg. 74 de muestran ejemplos de grafos y en la
gura 4-9 de la pg. 74 notaciones de los mismos.
Los grafos pueden ser extendidos mediante la adicin de rtulos (labels) a los arcos. Estos rtulos pueden representar costos, longitudes,
distancias, pesos, etc.
Un grafo no dirigido se denomina completo si contiene una arista
entre cada par de nodos (ver gura 4-10 de la pg. 75).
Un grafo puede ser representado en memoria numricamente, utilizando determinado tipos de matrices, como la matriz de adyacencia.
Sistemas Expertos
75
La representacin mediante listas de adyacencia consiste en almacenar, para cada nodo, la lista de los nodos adyacentes a l.
Ejemplo:
v1 : v2
v2 : v2 , v3
Sistemas Expertos
76
v3 : v1 , v4
v4 : v3
Esto utiliza espacio O(|E|) y permite acceso eciente a los vecinos,
pero no hay acceso al azar a los arcos.
En el presente trabajo se utiliza modus ponens, encadenamiento de reglas en la versin Yosuko 1.0, y en la versin Yosuko
2.0 se utiliza la tcnica de grafos completos, con matriz de adyacencia,
destacndose los benecios e inconveniente encontrados en cada caso.
Nota :
Captulo 5
78
Objeto
Un objeto es un conjunto constituido por una o varias variables y, opcionalmente por mtodos.
Un objeto es cualquier entidad lgica del mundo real que se pueda
imaginar.
Objetos sicos : Automviles, aviones, animales mamferos etc.
Tambin se puede decir que tienen determiandas caracterstica, y
comportamiento, ej. una casa.
Caractersticas : Nmero de pisos, altura total en metros, color de la
fachada, nmero de ventanas, nmero de puertas, ciudad, calle y nmero
donde est ubicada, etc.
Operaciones : Construir, destruir, pintar fachada, modicar alguna
de las caractersticas, como por ejemplo, abrir una nueva ventana, etc.
Evidentemente, cada objeto puede denirse en funcin de multitud
de caractersticas y se pueden realizar innumerables operaciones sobre l.
79
Ya en trminos de programacin, ser misin del programador determinar qu caractersticas y que operaciones interesa mantener sobre un
objeto. Por ejemplo, sobre el objeto casa puede no ser necesario conocer
su ubicacin y por lo tanto, dichas caractersticas no formarn parte del
objeto denido por el programador. Lo mismo podra decirse sobre las
operaciones.
En terminologa de programacin orientada a objetos, a las caractersticas del objeto se les denomina atributos y a las operaciones mtodos (ver
gura 5-1 de la pg. 79).
Cada uno de estos mtodos es un procedimiento o una funcin perteneciente
a un objeto.
Un objeto est formado por una serie de caractersticas o datos (atributos) y una serie de operaciones (mtodos). No puede concebirse nicamente en funcin de los datos o de las operaciones sino en su conjunto.
Clases y Objetos
En la POO hay que distinguir entre dos conceptos ntimamente ligados,
la clase y el objeto.
De forma anloga a cmo se denen las variables en un lenguaje de
programacin, cuando se declara un objeto hay que denir el tipo de
objeto al que pertenece. Este tipo es la clase.
En C, se denen dos variables X e Y de tipo entero de la forma
siguiente: int X,Y;.
80
Analoga
VARIABLE = OBJETO
TIPO = CLASE
Al declarar casa1 y casa2 como objetos pertenecientes a la clase
Ccasa, se est indicando que casa1 y casa2 tendrn una serie de atributos (datos) como son nPuertas, nVentanas y color ; y, adems, una serie
de mtodos (operaciones que se pueden realizar sobre ellos) como son:
abrirVentanas (), cerrarVentanas (), etc.
Encapsulamiento.
Herencia.
Polimorsmo.
Encapsulamiento
81
<0)
82
nVentanas=0;
}
public void abrirPuertas(int n) {
nPuertas=nPuertas+n;
}
public void cerrarPuertas(int n) {
nPuertas=nPuertas-n;
<
if (nPuertas 0)
nPuertas=0;
}
}
Ccasa casa1,casa2;
Herencia
83
84
mJardin=nj;
}
}
Cchalet chalet1,chalet2;
Figura 5-2
Reutilizacin de objeto.
Como puede verse, nicamente hay que declarar que la nueva clase
Cchalet es descendiente de Ccasa (extends Ccasa) y declarar el nuevo
atributo.
Evidentemente, el mtodo constructor hay que redenirlo para poder
inicializar el nuevo atributo mJardin . Pero los mtodo para Abrir/Cerrar
puertas ventanas no es necesario denirlos, son heredados de la clase
Ccasa y pueden utilizarse, por ejemplo de la siguiente forma:
chalet1.pintar(Blanco);
85
Polimorsmo
Lenguaje Java
86
Orientacin a Objetos
87
Seguridad
Java es uno de los primeros lenguajes de programacin que tiene en
cuenta la seguridad como parte de su diseo.
El lenguaje, el compilador, el intrprete y el entorno de tiempo de
ejecucin de Java fueron desarrollados pensando en la seguridad.
El compilador, el intrprete, la API y los navegadores compatibles
con Java contienen todos ellos varios niveles de medidas de seguridad,
diseados para reducir el riesgo del compromiso de seguridad, prdida de
datos, integridad del programa y daos a los usuarios del sistema.
Caractersticas Varias
El lenguaje Java ofrece muchas caractersticas que lo hacen ms atractivo que C o C++ para el desarrollo de software moderno.
Al principio de la lista nos encontramos con el soporte intrnseco de
Java al multihilo, lo cual falta tanto en C como enC++.
Otras caractersticas son sus posibilidades de manipulacin de excepciones, que fueron recientemente introducidas en C++, su adherencia
estricta al desarrollo de software orientado a clases y objetos, y su soporte
de recoleccin automtica de basura.
Aparte de estas caractersticas, Java implementa un estilo de programacin comn que elimina la posibilidad de salirse del paradigma de
programacin orientado a clases y a objetos para desarrollar programas
orientados a funciones del tipo C.
La API Java
Las clases predenidas de la API Java ofrecen una base conjunta e independiente de la plataforma que se usa para el desarrollo de programas.
Estas clases ofrecen la posibilidad de desarrollar programas de ventana
y de red que se ejecutan en una amplia gama de hosts.
El soporte para la API Java, con la invocacin remota de mtodos,
conectividad de bases de datos y seguridad, no lo supera la API de ningn
otro lenguaje. Adems, ningn otro lenguaje ofrece una potencia inde-
88
89
Introduccin
Al igual que con los RPC (Remote Procedure Call o Llamada a Procedimientos Remotos) de C en Linux, es posible hacer que un programa
en Java llame a mtodos de objetos que estn instanciados en otro programa distinto, incluso que estn corriendo en otra mquina conectada
en red.
Estos mtodos, aunque los llamemos desde este ordenador, se ejecutan
en el otro.
Este mtodo tiene la ventaja de que si, por ejemplo, tenemos un ordenador capaz de realizar cuentas muy rpidamente y otro capaz de dibujar
grcos maravillosos y adems necesitamos hacer un programa con varias
cuentas y varios grcos, podemos implementar en el ordenador de las
cuentas aquellas clases que calculan cuentas, en el ordenador de grcos
aquellas clases de pintado y hacer que cada ordenador haga lo que mejor
puede hacer.
Cuando al hacer un grco necesitemos calcular cuentas, llamaremos
a la clase remota que hace las cuentas, y stas se harn en el ordenador
de las cuentas, devolviendo el resultado al de los grcos.
Las clases que se necesitan para congurar un RMI son las siguientes:
Poltica de Seguridad
90
91
El Objeto Remoto
92
93
Lanzar rmiregistry
94
95
La instanciacin no tiene problemas. Para registrarla hay que llamar al mtodo esttico rebind () de la clase Naming. Se le pasan dos
parmetros. Un nombre para poder identicar el objeto y una instancia
del objeto. El nombre que se ha dado debe conocerlo el cliente, para
luego poder pedir la instancia por el nombre.
El mtodo rebind () registra el objeto. Si ya estuviera registrado, lo
sustituye por el que se acaba de pasarle.
El Cliente de RMI
Ahora slo se tiene que hacer el programa que utilice este objeto de
forma remota.
Los pasos que debe realizar este programa son los siguientes:
Pedir el objeto remoto al servidor de rmi. El cdigo para ello se indica
en la gura 5-11 de la pg. 96.
Se llama al mtodo esttico lookup () de la clase Naming. Se le pasa
a este mtodo la URL del objeto. Esa URL es el nombre (o IP) del
96
host donde est el servidor de rmi (en este caso localhost) y por ltimo
el nombre con el que se registr anteriormente el objeto (en el ejemplo
ObjetoRemoto ).
Este mtodo devuelve un Remote, as que se debe hacer un cast a
InterfaceRemota para poder utilizarlo. El objeto que se recibe aqu es
realmente un ObjetoRemoto_Stubs.
Se procede a llamar al mtodo de suma () segn se muestra en la gura
5-12 de la pg. 96.
Para que el cdigo del cliente compile necesita ver en su classpath a InterfaceRemota.class. Para que adems se ejecute sin problemas necesita
adems ver a ObjetoRemoto_Stubs.class, por lo que estas clases deben
estar accesibles desde el servidor o bien tener copias locales de ellas.
Socket
97
2. Aceptar un cliente.
3. Obtener los InputStream y / o OutputStream del cliente.
4. Crear unos InputStream y / o OutputStream ms adecuados a las
necesidades.
5. Leer y escribir datos del y al cliente.
6. Cerrar el socket.
Aceptar un Cliente
98
Se puede aceptar simultneamente varios clientes, pero para atenderlos se necesita programacin multitarea o algo similar.
99
Estas nuevas clases tienen mtodos como writeInt (), writeChar (), etc.
100
face Serializable.
Las clases de tipos de Java (Integer, Float, String, etc.) implementan
esa interface, as que se pueden enviar / leer a travs de estos mtodos.
Si una clase nuestra contiene atributos que sean primitivos de Java
(int, oat, etc) o clases primitivas (Float, Integer, String, etc.), basta
con hacer que implemente la interface Serializable para poder enviarlas.
No hace falta que se escriba ningn mtodo, simplemente poner que
se implementa (ver gura 5-18 de la pg. 100).
101
Para enviar una de estas clases el cdigo es sencillo (ver gura 5-21
de la pg. 102).
Para leerlo es igual de simple, slo que se tiene que saber qu tipo de
clase se est recibiendo para hacer el cast adecuado (ver gura 5-22 de
la pg. 102).
Se debe ir haciendo varios if con las posibles clases que se nos enven
desde el otro lado.
102
Cerrar el Socket
Para cerrar un socket hay que llamar a la funcin close () (ver gura 5-23
de la pg. 102).
103
Parte II
Desarrollos Efectuados y
Conclusiones
104
Captulo 6
105
106
Utilizar software de bajo costo para la funcin de servir informacin entre las distintas mquinas que tienen el rol de servidores
conectadas a la red con tipologa remota.
Detectar la seal ms estable para la transmisin de los datos.
Detectar la ruta ptima de comunicacin entre los servidores.
Transmitir informacin al Sistema Gestor de Bases de Datos (My
SQL) desarrollado bajo la losofa de cdigo abierto que puede ser
utilizado gratuitamente. El lenguaje normalizado que se utiliza
para llevar adelante esta comunicacin con la base de datos es el
Structured Query Language (SQL), que no es ms que un lenguaje
estndar de comunicacin con bases de datos.
Integrar aplicaciones informticas construidas en la dcada de los
70 con las aplicaciones de ltima generacin, utilizando un procedimiento lgico que las comunica.
107
de programacin orientado a objetos Java con el lenguaje de programacin procedural Clipper 5.2. El potencial de esta versin
radica en la utilizacin de la tcnica de programacin que se utiliza
para la confeccin del Motor de Inferencia, la regla Modus Ponens
y estrategias de inferencias Encadenamiento de Reglas, la cual se
representa en la sintaxis como &, ejemplo: if ®las (Ver archivo
fuente Lectorre.prg ).
YOSUKO Ver 2.0: Es el producto nal, que se detalla en forma
completa durante el desarrollo de este captulo.
Introduccin
108
109
Servidor Centralizado.
Servidor Descentralizado.
110
Desarrollo de la Experiencia
Para desarrollar el protocolo que propone esta Tesis, y mostrar una solucin factible a los problemas mencionados, as como los benecios de tener
servidores descentralizados a nivel de costo, balanceo de carga, etc., se
toma como ejemplo experimental una empresa de transporte de pasajeros
de larga distancia de la ciudad de Posadas, provincia de Misiones, teniendo en cuenta que la informacin de disponibilidad de asientos debe
estar en tiempo real, y centralizada.
Cliente : Empresa de transporte de pasajero de larga distancia de la
ciudad de Posadas, provincia de Misiones.
Problema : Resolver las ventas de boletos en tiempo real, teniendo en
cuenta que posee Puntos de Ventas en Chile, Paraguay, Brasil, Argentina.
111
A modo ilustrativo se adjunta un presupuesto de Infraestructura Tecnolgica con un requerimiento mnimo (ver gura 6-1 de la pg. 111.
112
113
Planteo de Base
Se parte de la hiptesis que existen tres centrales y dos proveedores
de comunicacin por punto, los cuales utilizan comunicacin ADSL con
un costo de $ 350,00.
Objetivo : Detectar el mejor camino.
Cada servidor tiene dos salidas de comunicacin: CPA (Comunicacin Proveedor A) y CPB (Comunicacin Proveedor B).
114
Caminos posibles:
CAMA + CAMD.
CAMC + CAMB.
CAMA + CAMB.
CAMC + CAMD.
CAME.
115
116
117
CAMD < CAMB AND CAMD < (CAMA + CAME) AND CAMD <
(CAMC + CAME) ME VOY POR CAMD.
Nota : Los campos CAMA, CAMB , CAMC y CAMD contienen el
promedio del tiempo exacto que tardan los paquetes de datos en ir y
volver a travs de la red, desde un Servidor a otro Servidor al cual el autor
denomina Tiempo Promedio de Respuesta (TPR); el Motor de Inferencia
toma estos valores, analiza las reglas y obtiene el menor tiempo, con lo
cual establece el mejor camino.
118
reglas.
Si el lenguaje de programacin no tiene el comando & (por
ejemplo: If ®las), no se podra programar el algoritmo,
tal como se observa en la gura 6-6 de la pg. 119, y se tendran que agregar internamente las reglas dentro del lenguaje.
De esta manera, el costo que demandara generar el conocimiento
sera muy alto, y sera difcil mantenerlo.
119
Reglas de encadenamiento.
Grafos completos (Matriz de Adyacencia).
120
Por primera vez se carga en memoria el nodo inicial, con todas las
direcciones IP, que van a existir en la red (ver la Tabla de Nodos
Habilitados en la gura 6-7 de la pg. 120, archivo Nodos.dat ).
121
1. El nodo origen toma la siguiente IP, que est en la tabla nodos (ver
gura 6-7 de la pg. 120).
2. Transmite el registro (paquete), segn diseo de la gura 6-8 de la
pg. 122, a la IP seleccionada.
3. Recibe el paquete la IP seleccionada.
4. Analiza el nodo destino. En caso que no sea igual al nodo destino,
realiza el siguiente proceso:
(a) Toma la IP destino que est grabado en el registro que recibi.
(b) Transmite ese pedido al nodo destino, previa alteracin campo
Reglas (IP del que pide), agregando en dicho campo la IP del
nodo que transmite.
5. Una vez que el pedido lleg al nodo destino, ste le transmite al
nodo origen el registro segn diseo de la gura 6-8 de la pg. 122.
Concluido el proceso, el nodo destino lee el archivo contenedor de
reglas (ver gura 6-8 de la pg. 122), extrae del campo reglas la IP
(IP del que pide). Ejecuta el comando Ping a la IP que se extrajo,
calcula el promedio (TPR), transmite ese valor a la IP que se hizo
el clculo.
A continuacin se muestra un ejemplo:
Dados cuatro nodos IP 1.1 , 1.2 , 1.3 , 1.4, se generan las rutas posibles
entre los nodos 1.1 y 1.3.
Regla No. 1
122
123
Regla No. 5
Ver la gura 6-13 de la pg. 124.
Para confeccionar la regla, se realiza el siguiente proceso: el nodo 1.4
enva al nodo 1.2, el nodo 1.2 enva al nodo 1.3.
124
IP 1.2 est en el campo reglas (IP del que pide). Si no se establece esta
restriccin, entrara en un ciclo repetitivo, entre el nodo 1.2 y el nodo
1.4.
Terminado el proceso y respetada la restriccin, se transmite el archivo
contenedor de reglas, al nodo origen.
Pasos Para Calcular el Valor TPR Los pasos son los siguientes:
125
126
Termina el proceso.
1.
127
Generacin de Reglas Se generan las reglas en el objeto ABMNodos.java , en el evento (botn) crear reglas cmdCrearR_Click (int Nivel).
Criterio Para Generar las Reglas Dados cuatro nodos: 1,2,3,4, se
ciones que se deben cumplir para que una ruta sea vlida son las siguientes:
128
como sigue:
129
130
131
Conclusin
El estudio comparativo de los mtodos de resolucin propuestos lleva a la
siguiente conclusin: el protocolo YOSUKO V.2.0 se basar en el mtodo
Grafo completo no dirigido (Matriz de adyacencia).
Captulo 7
132
133
No repudio: Herramienta que permite probar que se tuvo una comunicacin con un determinado usuario, de modo que alguien no
pueda negar el haber recibido algo, ni otro pueda negar haber mandado algo. Esto se suele conseguir con la rma digital.
Control de acceso: Los sistemas deben estar protegidos, de modo
que slo pueda acceder a sus recursos la persona autorizada. Esto
se consigue mediante passwords (contraseas ).
Seguridad fsica: Los soportes fsicos de un sistema deben estar protegidos de descargas, incendios, acceso de personas no autorizadas.
Autenticacin: Se trata de poder saber si algo es de quien dice ser,
si algo no ha sido falsicado. Se suelen usar mecanismos asimtricos
como la rma digital.
A Nivel de Aplicacin.
Cuando se Transmite la Informacin.
A Nivel Usuarios.
134
Figura 7-1
135
Dgito Vericador
Seguidamente se detalla cmo funciona el control.
Ejemplo: Dados dos nodos A,B, el nodo A transmite una informacin
al nodo B y realiza el siguiente proceso:
136
137
En este mdulo se registran los usuarios y las claves de todos los nodos
(servidores,clientes) que van a estar activos en la aplicacin.
Secuencia de Control
Cuando la aplicacin se ejecuta a nivel usuario se deben ingresar los
siguientes datos:
138
Nombre de usuario.
Contrasea.
IP del servidor.
Captulo 8
Metodologa de Integracin
de YOSUKO V.2.0 y Aplicaciones Informticas
Introduccin
En el presente captulo se desarrolla la metodologa incorporada en el
protocolo YOSUKO V. 2.0, para lograr el objetivo de integrar las aplicaciones informticas construidas con tecnologas de programacin antiguas
con aplicaciones informticas construidas con las tecnologas de programacin de ltima generacin.
Se parte de la base de que conviven aplicaciones informticas que
carecen de capacidad de comunicacin, con las aplicaciones informticas
programadas bajo los nuevos conceptos de tecnologas de la informacin
y de la comunicacin.
140
141
Con el objetivo de brindar una solucin de bajo costo a este problema que presenta el escenario descripto, se incorpora al algoritmo del
protocolo YOSUKO V. 2.0, las siguientes funciones:
Figura 8-1
externas.
142
Diagra
143
Identicador de Procesos : Es un campo mayor a cero, no repetitivo. La Aplicacin Externa lleva el control, y sirve para que se
diferencien los procesos.
Tiempo de Espera en Minuto : Este campo contiene el tiempo mximo que va a esperar la Aplicacin Externa, al protocolo YOSUKO,
para que realice el pedido solicitado.
Tiempo de YOSUKO : Este campo es utilizado por el protocolo; se
graba la hora, minuto, segundo, del nodo que recibe el pedido.
144
Control.dat : Se utiliza para registrar el nodo local (objeto Cong.java ). Si este archivo est vaco, se activa el mdulo registrar el
producto en el servidor de la empresa que va a distribuir el mismo
(ver en el captulo 7, Seguridad a Nivel de Aplicacin (ver estructura del archivo en la gura 8-4 de la pg. 145.
Proc.dat : En este archivo se graban los procesos que el programador de la Aplicacin Externa quiere que realice el protocolo
YOSUKO. El detalle de los campos es el siguiente:
145
146
URL Base de Datos : Es la direccin IP donde reside fsicamente el Motor de Base de Datos.
Puerto: Puerta de entrada donde escucha el Motor de Base
de Datos.
Separador de Campos : Indica al protocolo YOSUKO V.2.0
cmo tiene que presentar la informacin, despus de haber
ejecutado el comando Select.
147
Archivo Activ.dat :
Archivo Read.dat:
148
La Aplicacin Externa denominada ApliVtaBoleto a modo ejemplo, solicita a YOSUKO V. 2.0. que enve un archivo del Nodo 1 al Nodo
3. Espera recibir un archivo procesado por la otra aplicacin externa que
est en el Nodo 3.
Se realiza de la siguiente forma:
Archivo Activ.dat:
Actividad = 2, Nombre de la actividad = Empresa de
Transporte de Pasajeros de Larga Distancia. Carpeta de
trabajo = D:/ACT2/.
Archivo Proc.dat :
Lee el archivo Read.dat, determina que tiene un proceso pendiente, porque tiene un uno en el campo estado.
Graba el campo estado un dos.
Toma el campo Actividad, y lee el archivo Activ.dat, realiza
una bsqueda secuencial para extraer el nombre de la Actividad, y la Carpeta del lugar de trabajo.
Lee el archivo Proc.dat, compara los campos Actividad, Orden
de trabajo. Si encuentra un registro con iguales caractersticas, toma los datos tipo de proceso, nodo destino, tipo de
transmisin.
Detecta el mejor camino. Pasa el archivo, primero por el Nodo
2, y despus por el Nodo 3.
La Aplicacin Externa denominada ApliSql, a modo ejemplo, solicita a YOSUKO V. 2.0 . que enve un archivo, del Nodo 1 al Nodo 3.
Espera recibir un archivo procesado, con la informacin que se extrajo
del Motor de Base de Datos RRRR, que est en el Nodo 3.
Se realiza de la siguiente forma:
Archivo Activ.dat :
Actividad = 2, Nombre de la actividad = Empresa de
Transporte de Pasajeros de Larga Distancia. Carpeta de
trabajo = D:/ACT2/.
Archivo Proc.dat :
Actividad = 2, Orden de trabajo = 3, Tipo de proceso =
2, Nodo destino = 3, Tipo de transmisin = 2.
Archivo Read.dat:
Estado = 1, Cdigo de Actividad = 2, Orden de Trabajo = 3, Nombre del Archivo = comando.txt, Nmero
de Proceso = 102, Tiempo de espera = 3, Id Usuario =
KOKI, Contrasea = 123, Base de Datos = RRRR, URL
=192.168.1.1, Puerto = 4000, Separador de Campo = ,.
En el campo comando.txt, va la sentencia SQL Select .
Lee el archivo Read.dat, determina que tiene un proceso pendiente, porque tiene un uno en el campo estado.
Graba el campo estado un dos.
Toma el campo Actividad, y lee el archivo Activ.dat, realiza
una bsqueda secuencial, para extraer el nombre de la Actividad, y la Carpeta del lugar de trabajo.
Lee el archivo Proc.dat, compara los campos Actividad, Orden
de trabajo. Si encuentra un registro con iguales caractersticas, toma los datos tipo de proceso, nodo destino, tipo de
transmisin.
Detecta el mejor camino. Pasa el archivo, primero por al Nodo
2, y despues al Nodo 3.
Termina el proceso.
En caso que sea una orden SQL Insert, Update, Delete, el proceso es
el mismo. Slo que no transmite el archivo al Nodo 1.
FileNam = null;
Est = (int) Integer.valueOf (dbRead.getValue(0).trim());
IDAct = (int) Integer.parseInt(dbRead.getValue(1).trim());
IDOrden = (int) Integer.parseInt(dbRead.getValue(2).trim());
FileNam = dbRead.getValue(3).trim();
IDProc = (int) Integer.parseInt(dbRead.getValue(4).trim());
waitTime = (int) Integer.valueOf(dbRead.getValue(5).trim());
pedTime = (long) Long.valueOf(dbRead.getValue(6).trim());
valid = true;
Term.dbAct.Go(IDAct-1);
// Si es 1, tiene que realizar un proceso.
if (Est == 1) {
for (j=0; j<dbProc.getRecCount(); j++) {
dbProc.Go(j);
if (Integer.valueOf(dbProc.getValue(0).trim()) == IDAct &&
Integer.valueOf(dbProc.getValue(1).trim()) == IDOrden) {
Term.TipoProc = Integer.valueOf(dbProc.getValue(2));
Term.NodDes = (int) Integer.valueOf(dbProc.getValue(3));
Term.IDProc = IDProc;
Term.TSQL = (int) Integer.valueOf(dbProc.getValue(4));
// Solo cuando es SQL
if (Term.TSQL == 2) {
Term.DatosDB[0] = dbProc.getValue(5).trim();
Term.DatosDB[1] = dbProc.getValue(6).trim();
Term.DatosDB[2] = dbProc.getValue(7).trim();
Term.DatosDB[3] = dbProc.getValue(8).trim();
Term.DatosDB[4] = dbProc.getValue(9).trim();
Term.DatosDB[5] = dbProc.getValue(10).trim();
}
// En el caso de que el proceso sea de tipo 1 (enviar y no esperar respuesta),
// se graba un valor 3, indicando que ha terminado.
if (Term.TipoProc == 1) {
dbRead.setValue(0, 3);
Term.addTask(Pedido No + String.valueOf(IDProc).trim() + terminado.);
} else {
// Si es de tipo 2 (enviar y esperar respuesta), marca con un 2, que signica
// en proceso y guarda la hora en que se ejecuto el pedido
dbRead.setValue(0, 2);
dbRead.setValue(6, String.valueOf(actTime.getTime()));
Term.addTask(Esperando respuesta para el Pedido No: + String. valueOf
(IDProc) + ...);
}
dbRead.SaveRec();
Term.cmdSend_Click(Term.dbAct.getValue(2), FileNam, IDAct, waitTime);
break;
}
}
}
// Si es 2, se esta realizando un proceso y tengo que vericar que espere una
// respuesta hasta cierto tiempo.
if (Est == 2) {
if (((actTime.getTime() - pedTime) / 60000) >= waitTime) {
Term.addTask(Tiempo de espera agotado para el Pedido No + String.
valueOf (IDProc));
dbRead.setValue(0, 3);
dbRead.SaveRec();
}
}
if (Est == 4) {
if (((actTime.getTime() - pedTime) / 60000) >= waitTime) {
Term.addTask(Tiempo de espera agotado para Transmitir el Pedido No +
String. valueOf (IDProc));
dbRead.setValue(0, 3);
dbRead.SaveRec();
}
}
// Si es 5 tengo que re-transmitir. Este valor puso la aplicacion externa a
Java.
if (Est == 5) {
Term.addTask(Pedido No + String.valueOf(IDProc) + : OK);
dbRead.setValue(0, 3); // 3: proceso terminado.
dbRead.SaveRec();
Term.TipoProc = 1;
Term.NodDes = IDOrden;
Term.IDProc = IDProc;
Term.cmdSend_Click(Term.dbAct.getValue(2), FileNam, IDAct, 0);
}
}
dbRead.Close();
} catch (Exception e) {
if (!valid && Est == 1) Term.addTask(El Pedido No + String. valueOf
(IDProc).trim() +
posee parametros incorrectos.);
dbRead.setValue(0, 3);
dbRead.SaveRec();
dbRead.Close ();
}
}
Figura 8-7
1.
158
159
160
161
162
164
165
166
167
Figura 8-23 Deteccin del mejor camino por parte de YOSUKO para
atender una aplicacin externa.
Captulo 9
169
170
Parte III
Anexo
171
Captulo 10
Anexo
Detalles de los Objetos Ms Importantes del Protocolo YOSUKO V. 2.0
En esta seccin se describen los objetos ms importante del protocolo
YOSUKO V. 2.0.
Main.java(): Arranca la aplicacin :
LoginC.Java(): Solicita el Nombre del Usuario, Clave, IP del Servidor. Verica por RMI los datos ingresados.
LoginS.Java(): Registra el producto en el Motor de Base de Datos
MySQL. Este mdulo activa la proteccin a nivel software:
Solicita el Nombre del Usuario, Clave, IP local, Puerto.
Conecta a un Motor de Base de Datos MySQL.
172
Anexo
173
ABMNodos.java(): En este objeto se registran los nodos (Servidores o Clientes), que estarn activos en la red. Los datos ingresados se utilizan para vericar, a travs de RMI, si el usuario tiene
permitido estar en la red.
ABMProc.java(): En este objeto se denen los proceso que puede
realizar un nodo, con una Aplicacin Externa.
ABMUsers.java(): Es una interfaz de usuario. Se utiliza para capturar los datos, conectar con el servidor (primer padre), y vericar
por RMI la veracidad de los datos.
Cong.java(): En este objeto se congura el servidor local o cliente
local.
DB.java(): Este objeto se utiliza como contenedor de archivos con
extensiones variables (XLS, DOC, EXE, BMO, JPG, etc.). Lee y
graba cualquier tipo archivo.
Graco.java(): Se utiliza para representar grcamente los nodos
que estn conectados, y mostrar el mejor camino, cuando se va a
transmite informacin.
Anexo
174
Anexo
175
Terminal.java(): Pantalla principal del sistema. Muestra una ventana con todos los Nodos y los estado de la interfaz que se comunica
con la clase SocketC para poder enviar y recibir datos.
timer.setInitialDelay(): Tiempo 1.
timer2.setInitialDelay(): Tiempo 2.
Graph.setEstNodo(): Verica el estado del Nodo y lo pinta.
Graph.repaint(): Dibuja todos los nodos.
Server.LeerPing(): Lee los valores de Ping.
Server.InfNodos(): Informa los nodos activos a toda las terminales.
LeerNodos(): Carga en memoria todos los Nodos que actan en la
Actividad seleccionada.
DrawNodos(): Dibuja en memoria el grco.
Graph.repaint(): Baja en pantalla el grco.
cmdBegin_Click(): Activa el servidor con una conexin Socket.
cmdSend_Click(): Enva un mensaje por medio de Socket.
DrawNodos(): Dibuja los Nodos en forma circular en la pantalla.
(para realizar el grco utiliza la funcin Seno, Coseno).
ActNodos(): Informa el estado de los Nodos.
addTask(String Task()): Agrego el proceso en el rea de texto,
muestra los eventos del Nodo.
CalcRegla(): Calcula la mejor ruta o camino, teniendo en cuenta
el Nodo destino.
ProcThread extends Thread: Se ejecuta cuando se dispara el 1er.
temporizador, cada 2,5 seg. Lee toda la tabla Read.dat en busca
de procesos a realizar.
Anexo
176
Anexo
177
Ejecutar el archivo rmiRegistry.exe, que se encuentra en el directorio bin del Runtime de Java (ej.: C:\jre1.5.0_03\bin\rmiregistry.exe).
Minimizar la aplicacin rmiregistry.exe y ejecutar Servidor.jar.
Luego de crear las Actividades en la pantalla ABM de Actividades.
Se debern crear las respectivas carpetas de trabajo, caso contrario,
no se podr enviar o recibir informacin. Ver la gura 10-4 de la
pg. 181.
Anexo
178
Panel de Control
Nota : Slo para la versin Servidor estar disponible el botn Informar Nodos.
Conguracin
La pantalla Conguracin del Terminal (ver gura 10-3 de la pg. 180,
permite congurar el nodo local.
Datos solicitados: ID del Nodo , descripcin, contrasea, IP local,
puerto escucha de pedidos, y la Carpeta de Trabajo. Esta carpeta es
de suma importancia, ya que todos los archivos del paquete de instalacin debern estar ubicados all. La ruta deber colocarse con barras
invertidas y terminar con una de ellas (ej.: c:/Yosuko/).
Anexo
179
ABM de Actividades
Esta pantalla permite realizar Altas, Bajas y Modicaciones de las distintas Actividades que el Sistema YOSUCO deber ejecutar (ver la
gura 10-4 de la pg. 181.
Datos a Ingresar : ID de Actividad, Descripcin, Carpeta de Trabajo
(deber colocarse con barras invertidas y terminar con una barra, ej.:
d:/Actividad1/).
Los archivos de transferencia, dependiendo de la actividad, deben
estar situados en esta carpeta.
Anexo
180
ABM de Procesos
Esta pantalla es la interfaz de usuario, entre la Aplicacin Externa y el
protocolo YOSUKO V.2.0.
Se registran procesos, que podr realizar el protocolo (ver gura 10-6
de la pg. 182).
Anexo
181
Bibliografa
[1] Abramson, N., Teora de la Informacin y Codicacin - 6/E,
Paraninfo, Espaa, 1986. ISBN 84-283-0232-4.
[2] Bourdette, J., Aplicaciones de Negocio en Java, PC Fornum S.A.,
ISBN 987-9131-79-1, 1998.
[3] Carracedo Gallardo, J., Seguridad en Redes Telemticas. Mc Graw
Hill, Espaa, 2004. ISBN 84-481-4157-1.
[4] Castillo, E.; Cobo, A.; Gmez, P.; Solares, C., Java - Un Lenguaje
de Programacin Multiplataforma para Internet, Paraninfo, ISBN
84-283-2368-2, 1997.
[5] Castillo, E.; Gutirrez, J. M.; Haidi, A. S., Sistemas Expertos y
Modelos de Redes Probabilsticas, Academia de Ingeniera, ISBN 84600-9395-6, 1996.
[6] Castro Marcel (2002). Sistemas Expertos. Consultado en http://
strix.ciens.ucv.ve/ ~iartic/ Material/ PP_Sistemas_Expertos.pdf.
[7] Cathan Cook, Microsoft Corporation, Arquitectura de Bases de
Datos: El Motor de Almacenamiento, artculo publicado en el portal
de Microsoft el 13 de Enero del 2003.
[8] Comer, D. E., Computer Networks and Internets, with Internet Applications - 3/E, Prentice Hall, USA, 2001. ISBN 0-13-091449-5.
[9] Comer, D. E., Hands-On Networking with Internet Technologies 1/E, Prentice Hall, USA, 2002. ISBN 0-13-048003-7.
183
BIBLIOGRAFA
184
[10] Comer, D. E., Internet Book, The: Everything You Need to Know
About Computer Networking and How the Internet Works - 3/E,
Prentice Hall, USA, 2000. ISBN 0-13-030852-8.
[11] Coulouris G.; Dollimire J.; Kindberg, E. Distributed Systems: Concepts and Design, Addison - Wesley, 3sd Edition, 2001.
[12] A. M. Davis; Remontando: Una Necesidad Simple. IEEE Software,
12(5), Septiembre 1995.
[13] Huidobro, J. M., Tecnologas Avanzadas de Telecomunicaciones,
Thomson Paraninfo, Espaa, 2003. ISBN 84-283-2853-6.
[14] Jaworski, J., Java 1.2 al Descubierto, Prentice - Hall, ISBN 84-8322061-X, 1999.
[15] Kennedy, D., Microsoft Corporation, Agrupacin de Conexiones con
Analisys Services de SQL Server 2000, publicado originalmente en
mayo de 2001, actualizado en noviembre de 2002.
[16] Leer, M. McKusick, M. Karels, The Design and Implementation
of the 4.3BSD UNIX Operating System, S.J, Quaterman AddisonWelsey, 1989
[17] Microsoft, Windows NT Workstation Kit de Recursos, McGraw-Hill
/ Interamericana de Espaa, ISBN 84-481-1095-5, 1996.
[18] Poratti, G. G., Redes: La Gua de Referencia Actual y Denitiva,
Mp. Ediciones S.A., ISBN 987-526-208-0, 2004.
[19] Recio, M. J., Redes Locales, ISBN 84-89245-17-7, 1997.
[20] Sheldon, T., Encyclopedia of Networking and Telecommunications 3/E. Mc Graw Hill, USA, 2001. ISBN 0-072-12005-3.
[21] Sheldon, T., LAN Times - Enciclopedia de Redes - Networking 2/E. Mc Graw Hill, Espaa, 1997.
[22] Randall B. Smith, David Ungar. Programming as an Experience:
The Inspiration for Self. Sun Microsystems Laboratories. 1995.
BIBLIOGRAFA
185
ndice Alfabtico
actividades, 179
ADSL, 3, 113
anexo, 172
API, 33, 87
aplicacin distribuida
seguridad de la, 51
aplicaciones distribuidas
construccin de, 37
diseo, 30
en Internet, 31
applet, 86
ARP, 23
ARPANET, 14
Arpanet, 23
arquitecturas, 10
aspectos
conceptuales, 2
ATM, 12
autenticacin, 52
autenticacin, 35
seguridad, 133
B-ISDN, 10
base
de conocimiento, 69
modelado, 69
bases de datos, 2
broadcasting, 21
cdigo, 88
CDS, 37
clases, 79
cliente, 97, 99, 102, 177
coherencia
control de, 67
COM, 38, 40
computacin
distribuida, 88
entorno de, 37
conclusiones, 168
condencialidad
seguridad, 132
conguracin, 178
conocimiento
abstracto, 59
cadena del, 60
concreto, 59
de control, 58
declarativo, 57
denicin, 60
fuentes, 60
tipos de, 59
control
de acceso, 52
control de acceso
seguridad, 133
CORBA, 42, 88
CPA, 113
CPB, 113
186
NDICE ALFABTICO
dgito
vericador, 135
DARPA, 16
datagrama, 17, 23
estructura, 18
DCE, 37, 39
DCOM, 38, 40
funcionamiento, 41
desencriptar
datos, 136
DFS, 37
direccionamiento, 21
dominio, 25
DTS, 37
encapsulamiento, 81
encriptar
datos, 136
Ethernet, 12, 23
excepciones, 87
FTP, 26
futuros
trabajos, 168
gateways, 20
GDS, 37
grafos, 73, 127
herencia, 83
hiptesis, 4
HTTP, 26
IDL, 42
IIS, 26
impacto
de la investigacin, 5
implementacin
prueba, 157
187
InputStream, 98
integridad
seguridad, 132
Internet, 2, 14, 26
intranet, 26
introduccin
a la seguridad, 132
a los protocolos de comunicacin de datos, 8
a los sistemas distribuidos, 29
al producto desarrollado, 105
IP, 16, 17
IPX, 12
ISO, 10
Java, 4, 27, 80, 85, 176
caractersticas, 86
invocacin remota de mtodos, 44
modelo de objeto distribuido
de, 45
runtime, 176
JDBC, 2, 88
JDK, 47, 49
justicacin
del estudio, 5
JVM, 45, 50
kerberos, 42
LAN, 9
lenguaje
orientado a objetos
propiedades, 80
lista
de adyacencia, 75
mtodos
NDICE ALFABTICO
de comunicacin, 27
marco
conceptual, 6
matriz
de adyacencia, 74
MIT, 42
modelos
de diseo de programas, 6
modus ponens, 64
modus tollens, 64
motor
de inferencia, 69
motor de inferencia, 62
multihilo, 87
MySQL, 106
navegador, 26
no repudio
seguridad, 133
objetivo
general, 3
objetivos
especcos, 4
objeto, 78, 79
componente distribuido
modelo de, 38
remoto, 91
objetos
invocacin remota de mtodos, 50
OCE, 37, 38
ODBC, 2
OLE, 38
OO, 82, 86
ORB, 42
ORPC, 41
OSI
188
funcin, 11
funciones de los niveles, 11
modelo de referencia, 10
niveles, 10
OutputStream, 98
panel
de control, 178
pasar
argumentos y valores
de retorno, 49
plataforma
independencia de la, 86
polimorsmo, 85
POO, 77
POP3, 27
procesos, 180
producto
desarrollo, 105
programacin
orientada a objetos, 77
protocolos
de comunicacin de datos, 8
prototipo
diferentes versiones, 106
objetivos, 106
prueba
aplicacin externa
venta de boletos, 162
de transmisin
de paquetes, 160
PYMES, 5
read.dat, 141
reglas
compilacin, 67
encadenamiento, 66, 67
NDICE ALFABTICO
189
denicin, 57
sistemas
cliente / servidor, 30
distribuidos, 29
expertos, 57
basados en reglas, 62
clasicacin, 61
SMTP, 26
socket, 96, 102
servidor, 97
sockets, 32
SPX, 12
SQL, 4, 106, 107, 141, 145
SSL, 48, 52
stub
del cliente, 36
del servidor, 36
stubs, 92
subredes, 21
TCP, 16, 27, 31, 34, 48
TCP/IP, 10, 12, 15, 32, 107
protocolo, 14
protocolos que trabajan junto
con, 26
tecnologa
cliente / servidor, 2
Telnet, 26
Token Ring, 12
transporte
seguridad en el, 52
TRP, 117, 119, 124
UDP, 27, 34, 48
UNIX, 33
VNC, 109
VPN, 109
NDICE ALFABTICO
WAN, 9
Weiss y Kulikowski
metodologa de, 68
YOSUKO, 105, 107, 113, 115, 127,
138, 140, 141
manual de usuario, 176
objetos, 172
190