jueves, 17 de febrero de 2011

unidad 1 panorama general de las aplicaciones distribuidas

1.1.- Evolución aplicaciones informáticas
1.1.1.- Aplicaciones monolíticas
Migración de Aplicaciones al Modelo Cliente Servidor
Muchas de las aplicaciones de oficina utilizadas actualmente poseen buenos modelos de datos e interfaces realmente claras que permitieron en su momento un significativo aumento de la productividad. El problema es que ven afectada su posibilidad de crecimiento por características tecnológicas de base que dificultan el acceso a alta velocidad dentro de la Red Local e impiden el acceso desde fuentes remotas como Internet y otras redes no locales.
Tal es el caso de la mayoría de las aplicaciones desarrolladas en los últimos años en que el acceso a datos se efectuaba a partir de aplicaciones monolíticas que concentran en una sola capa tanto la interfaz visual como lo métodos de acceso a datos, lo que comúnmente se conoce como modelos Cliente - Cliente.
Estas aplicaciones Cliente- Cliente concentran toda la actividad en los equipos de los usuarios, dejando al los servidores la labor de meros reservorios de datos compartidos.
Así ante cada petición de datos, el servidor devuelve archivos completos que luego son procesados por el equipo cliente, para obtener el resultado.
Por ejemplo, suponiendo que una base de cliente tuviera un tamaño medio de 5Mb y se efectúa una búsqueda muy simple de un cliente en particular, el servidor no efectuará la búsqueda por sí sino que devuelve la tabla de 5Mb completa, luego el equipo del usuario procesa la búsqueda en su equipo para seleccionar 1 registro de digamos unos 1Kb y descarta el resto de la información.

1.1.2.- Aplicaciones cliente servidor
Esta arquitectura consiste básicamente en un cliente que realiza peticiones a otro programa (el servidor) que le da respuesta. Aunque esta idea se puede aplicar a programas que se ejecutan sobre una sola computadora es más ventajosa en un sistema operativo multiusuario distribuido a través de una red de computadoras.
En esta arquitectura la capacidad de proceso está repartida entre los clientes y los servidores, aunque son más importantes las ventajas de tipo organizativo debidas a la centralización de la gestión de la información y la separación de responsabilidades, lo que facilita y clarifica el diseño del sistema.

La separación entre cliente y servidor es una separación de tipo lógico, donde el servidor no se ejecuta necesariamente sobre una sola máquina ni es necesariamente un sólo programa. Los tipos específicos de servidores incluyen los servidores web, los servidores de archivo, los servidores del correo, etc. Mientras que sus propósitos varían de unos servicios a otros, la arquitectura básica seguirá siendo la misma.
Una disposición muy común son los sistemas multicapa en los que el servidor se descompone en diferentes programas que pueden ser ejecutados por diferentes computadoras aumentando así el grado de distribución del sistema.
La arquitectura cliente-servidor sustituye a la arquitectura monolítica en la que no hay distribución, tanto a nivel físico como a nivel lógico.

1.1.3.- Aplicaciones 23 y nc capas
Arquitectura de Desarrollo de Aplicaciones en dos, tres y N Capas
En la actualidad existen tres tipos de arquitecturas de capas, y que muchas veces estas capas reciben el nombre de niveles.
Las arquitecturas son las siguientes.
1. Arquitectura de dos capas;
2. Arquitectura de tres capas;
3. Arquitectura de cuatro capas.
Arquitectura de Dos Capas
La arquitectura de dos capas en la actualidad es muy utilizada, aunque con muchas fallas, todavía no se ha podido dejar de usar.
Estas arquitecturas fueron las primeras en aprovecharse de la estructura cliente-servidor.
Las capas que esta arquitectura presenta son las siguientes: Nivel de aplicación; Nivel de la base de datos.
El nivel de Aplicación
Este nivel es en el que se encuentra toda la interfaz del sistema y es la que el usuario puede disponer para realizar su actividad con el sistema.
Nivel de la Base de Datos
Este nivel de la Base de Datos también llamado el Repositorio de Datos, es la capa en donde se almacena toda la información ingresada en el sistema y que se deposita en forma permanente.
Herramientas para el Desarrollo de Aplicaciones en Dos Capas
Existen herramientas para el desarrollo en dos capas por ejemplo mencionaremos a Visual Basic, Access y SQL
Visual Basic 6.0
Visual Basic es la herramienta más conocida para el desarrollo de aplicaciones en dos capas, ya que por su facilidad para la elaboración de la interfaz visual, y por su facilidad de aprendizaje la han convertido en una herramienta básica para el desarrollo de sistemas. Además posee librerías muy poderosas y de mucha ayuda para los desarrolladores, como los controles Active X, los módulos de clase que ayudan para la creación de funciones para nuestra aplicación y los módulos de los Active X en donde se pueden añadir nuestras propias librerías.
Se puede mencionar también otra herramienta muy importante y que en los últimos años ha sido la base para la creación de nuevas tecnologías, es JAVA.
Java
Java es considerado como una herramienta muy poderosa, además de su alcance, también es fácil de aprender ya que la mayoría de sentencias son hechas en C++.
Además Java es hoy en día la base para la construcción de tecnologías nuevas, este es el caso de todo lo que es orientado hacia el Internet. Por ejemplo, Microsoft ya la está utilizando para crear la plataforma .NET que es la tecnología de punta de Microsoft.
SQL Server
Esta herramienta es el motor de base de datos en donde se sitúa la capa del repositorio de datos.
Este motor es muy conocido y de mucha utilidad para el diseño de aplicaciones de dos capas ya que es muy potente y no tan difícil de aprender, además posee un analizador de consultas en donde se las puede crear de una forma muy segura. También tiene un administrador corporativo en donde se encuentra toda la información del motor, y aquí también se pueden crear las sentencias para nuestra base de datos. Por último, SQL Server contiene funciones para la elaboración de disparadores y procedimientos, y que son de mucha utilidad al momento de realizar nuestra base de datos.




1.1.4.- Aplicaciones distribuidas
Aplicación distribuida
Es una aplicación con distintos componentes que se ejecutan en entornos separados, normalmente en diferentes plataformas conectadas a través de una red. Las típicas aplicaciones distribuidas son de dos niveles (cliente-servidor), tres niveles (cliente-middleware-servidor) y multinivel.
Middleware: Sistema Distribuido organizado con un sistema
Componentes de una aplicación distribuida.
Una aplicación distribuida que sigue el modelo cliente-servidor tiene los siguientes componentes:
Lado servidor: Programa que se ejecuta en un computador que está conectado a una red. Esta a la escucha en un puerto, esperando las peticiones de los clientes; por ejemplo, un servidor Web escucha en el puerto 80. Un computador que ejecuta un servidor de aplicación necesita estar conectado a la red para responder a las peticiones de los clientes. Lado cliente: Programa que ejecuta el usuario de la aplicación. El cliente hace sus peticiones al servidor a través de la red. Por ejemplo, un navegador Web.
Protocolo de aplicación para la comunicación entre el cliente y el servidor. El protocolo define el tipo de mensajes intercambiados; por ejemplo, el protocolo de la capa de aplicación de la Web, HTTP, define el formato y la secuencia de los mensajes transmitidos entre el navegador y el servidor Web.
Formato de los mensajes que se intercambian, algunas veces forma parte del servicio; por ejemplo, en el correo electrónico se define el formato de los mensajes electrónicos.
Estos componentes son independientes de la arquitectura de red que se utiliza.
Ejemplos de aplicaciones distribuidas.
Algunas de las aplicaciones distribuidas más conocidas son remote login, correo electrónico, navegación Web, streaming, telefonía IP y compartición de ficheros (P2P).

1.2.- Evolución tecnologías para el desarrollo de aplicaciones distribuidas

1.2.1 De Interfaz de Usuario
En el contexto del proceso de interacción persona-ordenador, la interfaz gráfica de usuario, es el artefacto tecnológico de un sistema interactivo que posibilita, a través del uso y la representación del lenguaje visual, una interacción amigable con un sistema informático.
La interfaz gráfica de usuario (en inglés Graphical User Interface, GUI) es un tipo de interfaz de usuario que utiliza un conjunto de imágenes y objetos gráficos para representar la información y acciones disponibles en la interfaz. Habitualmente las acciones se realizan mediante manipulación directa para facilitar la interacción del usuario con la computadora.
Surge como evolución de la línea de comandos de los primeros sistemas operativos y es pieza fundamental en un entorno gráfico.
Como ejemplo de interfaz gráfica de usuario podemos citar el escritorio o desktop del sistema operativo Windows y el entorno X-Windows de Linux.
Interfaces gráficas (GUIs)
GPA
Intenta ser la interfaz de usuario gráfica estándar de Gnu Gp. GPA se hospeda en este sitio.
Gp Gee?
GP Gee (GNU Privacy Guard Explorer Extension) is a shell extension that adds Windows explorer right-click menu support for Gnu gp ls? a MS-Windows program to integrate Gnu PG into the Desktop.
K Gpg?
Es una interfaz de usuario de KDE para Gnu PG.
Seahorse
Es una interfaz de usuario de GNOME para Gnu PG.
wija
wija is a free and cross-platform Jabber/XMPP client written in Java, with built-in Gnu PG key rings management GUI. Its extended protocols allow users to encrypt chat and multi-user chat as well as encrypting/signing messages and signing presence of the user. It is multilingual and runs on GNU/Linux, Mac OS X and Windows.
XAP
Es el panel de aplicaciones X y gestor de ficheros.
Interfaz De Usuario: Una Mirada Al Futuro
El futuro de la interfaz de usuario para la tecnología de las computadoras es fascinante y lleno de sorpresas increíbles. Después de haber mostrado la magia misteriosa de imágenes proyectadas en el aire, el investigador de interfaz de usuario Jeff Han lo invita a que vea lo asombroso que será trabajar con computadoras, una vez que nos hayamos sacado de encima los ratones y comencemos a dibujar y manipular objetos en pantalla directamente con nuestros dedos.
Jeff Han es un investigador científico del NYU’s Courant Institute of Mathematical Sciences y el inventor de una pantalla de computadora sensible al tacto “libre de interfaz”.

1.2.1.- De interfaz de usuario
La interfaz de usuario es el medio con que el usuario puede comunicarse con una máquina, un equipo o una computadora, y comprende todos los puntos de contacto entre el usuario y el equipo, normalmente suelen ser fáciles de entender y fáciles de accionar.
Las interfaces básicas de usuario son aquellas que incluyen elementos como menús, ventanas, teclado, ratón, los beeps y algunos otros sonidos que la computadora hace, y en general, todos aquellos canales por los cuales se permite la comunicación entre el ser humano y la computadora. La mejor interacción humano-máquina a través de una adecuada interfaz (Interfaz de Usuario), que le brinde tanto comodidad, como eficiencia.
Tipos de interfaces de usuario
Dentro de las Interfaces de Usuario se puede distinguir básicamente tres tipos: A) Una interfaz de hardware, a nivel de los dispositivos utilizados para ingresar, procesar y entregar los datos: teclado, ratón y pantalla visualizadora. B) Una interfaz de software, destinada a entregar información acerca de los procesos y herramientas de control, a través de lo que el usuario observa habitualmente en la pantalla. C) Una interfaz de Software-Hardware, que establece un puente entre la máquina y las personas, permite a la máquina entender la instrucción y a el hombre entender el código binario traducido a información legible.
Funciones principales
Sus principales funciones son los siguientes:
• Puesta en marcha y apagado.
• Control de las funciones manipulables del equipo.
• Manipulación de archivos y directorios.
• Herramientas de desarrollo de aplicaciones.
• Comunicación con otros sistemas.
• Información de estado.
• Configuración de la propia interfaz y entorno.
• Intercambio de datos entre aplicaciones.
• Control de acceso.
• Sistema de ayuda interactivo.
Tipos de interfaces de usuario
Según la forma de interactuar del usuario
Atendiendo a como el usuario puede interactuar con una interfaz, nos encontramos con varios tipos de interfaces de usuario:
• Interfaces alfanuméricas (intérpretes de mandatos) que solo presentan texto.
• Interfaces gráficas de usuario (GUI, graphics user interfaces), las que permiten comunicarse con el ordenador de una forma muy rápida e intuitiva representando gráficamente los elementos de control y medida.
• Interfaces táctiles, que representan gráficamente un "panel de control" en una pantalla sensible que permite interaccionar con el dedo de forma similar a si se accionara un control físico.
Según su construcción
Pueden ser de hardware o de software:
• Interfaces de hardware: Se trata de un conjunto de controles o dispositivos que permiten la interacción hombre-máquina, de modo que permiten introducir o leer datos del equipo, mediante pulsadores, reguladores e instrumentos.
• Interfaces de software: Son programas o parte de ellos, que permiten expresar nuestros deseos al ordenador o visualizar su respuesta.
1.2.2.- De aplicación
En informática, se denomina servidor de aplicaciones a un servidor en una red de computadores que ejecuta ciertas aplicaciones.
Usualmente se trata de un dispositivo de software que proporciona servicios de aplicación a las computadoras cliente. Un servidor de aplicaciones generalmente gestiona la mayor parte (o la totalidad) de las funciones de lógica de negocio y de acceso a los datos de la aplicación. Los principales beneficios de la aplicación de la tecnología de servidores de aplicación son la centralización y la disminución de la complejidad en el desarrollo de aplicaciones.
Servidores de aplicación Java EE
Como consecuencia del éxito del lenguaje de programación Java, el término servidor de aplicaciones usualmente hace referencia a un servidor de aplicaciones Java EE. WebSphere (IBM) y WebLogic (Oracle, antes BEA Systems) están entre los servidores de aplicación Java EE privativos más conocidos. EAServer (Sybase Inc.) es también conocido por ofrecer soporte a otros lenguajes diferentes a Java, como PowerBuilder. El servidor de aplicaciones JOnAS, desarrollado por el consorcio ObjectWeb, fue el primer servidor de aplicaciones libre en lograr certificación oficial de compatibilidad con J2EE. JBoss es otro servidor de aplicaciones libre y muy popular en la actualidad, así como GlassFish de SUN.

Mucha gente confunde Tomcat como un servidor de aplicaciones; sin embargo, es solamente un contenedor de servlets [1].
Java EE provee estándares que permiten a un servidor de aplicaciones servir como "contenedor" de los componentes que conforman dichas aplicaciones. Estos componentes, escritos en lenguaje Java, usualmente se conocen como Servlets, Java Server Pages (JSPs) y Enterprise JavaBeans (EJBs) y permiten implementar diferentes capas de la aplicación, como la interfaz de usuario, la lógica de negocio, la gestión de sesiones de usuario o el acceso a bases de datos remotas.
La portabilidad de Java también ha permitido que los servidores de aplicación Java EE se encuentren disponibles sobre una gran variedad de plataformas, como Unix, Microsoft Windows y GNU/Linux.
Otros servidores de aplicación
El término servidor de aplicaciones también ha sido aplicado a otros productos no-J2EE. Por ejemplo, con el aumento de la popularidad de .NET, Microsoft califica a su producto Internet Information Server como un servidor de aplicaciones. Adicionalmente, se pueden encontrar servidores de aplicación de código abierto y comerciales de otros provedores; algunos ejemplos son Base4 Server y Zope.
Características comunes
Los servidores de aplicación típicamente incluyen también middleware (o software de conectividad) que les permite intercomunicarse con variados servicios, para efectos de confiabilidad, seguridad, no-repudio, etc. Los servidores de aplicación también brindan a los desarrolladores una Interfaz para Programación de Aplicaciones (API), de tal manera que no tengan que preocuparse por el sistema operativo o por la gran cantidad de interfaces requeridas en una aplicación web moderna.
Los servidores de aplicación también brindan soporte a una gran variedad de estándares, tales como HTML, XML, IIOP, JDBC, SSL, etc., que les permiten su funcionamiento en ambientes web (como Internet) y la conexión a una gran variedad de fuentes de datos, sistemas y dispositivos.

1.2.3.- De bases de datos
Una base de datos o banco de datos (en ocasiones abreviada con la sigla BD o con la abreviatura b. d.) es un conjunto de datos pertenecientes a un mismo contexto y almacenados sistemáticamente para su posterior uso. En este sentido, una biblioteca puede considerarse una base de datos compuesta en su mayoría por documentos y textos impresos en papel e indexados para su consulta. En la actualidad, y debido al desarrollo tecnológico de campos como la informática y la electrónica, la mayoría de las bases de datos están en formato digital (electrónico), que ofrece un amplio rango de soluciones al problema de almacenar datos.
Existen programas denominados sistemas gestores de bases de datos, abreviado SGBD, que permiten almacenar y posteriormente acceder a los datos de forma rápida y estructurada. Las propiedades de estos SGBD, así como su utilización y administración, se estudian dentro del ámbito de la informática.
Las aplicaciones más usuales son para la gestión de empresas e instituciones públicas. También son ampliamente utilizadas en entornos científicos con el objeto de almacenar la información experimental.
Aunque las bases de datos pueden contener muchos tipos de datos, algunos de ellos se encuentran protegidos por las leyes de varios países. Por ejemplo, en España los datos personales se encuentran protegidos por la Ley Orgánica de Protección de Datos de Carácter Personal (LOPD).
Tipos de Base de Datos
Las bases de datos pueden clasificarse de varias maneras, de acuerdo al contexto que se este manejando, o la utilidad de la misma:
Según la variabilidad de los datos almacenados
Éstas son bases de datos de sólo lectura, utilizadas primordialmente para almacenar datos históricos que posteriormente se pueden utilizar para estudiar el comportamiento de un conjunto de datos a través del tiempo, realizar proyecciones y tomar decisiones.

1.2.4.- De comunicación de datos
Comunicación de Datos. Es el proceso de comunicar información en forma binaria entre dos o más puntos. Requiere cuatro elementos básicos que son:
Emisor:Dispositivo que transmite los datos
Mensaje: lo conforman los datos a ser transmitidos
Medio :consiste en el recorrido de los datos desde el origen hasta su destino
Receptor :dispositivo de destino de los datos
BIT:es la unidad más pequeña de información y la unidad base en comunicaciones.
BYTE: conjunto de bits continuos mínimos que hacen posible, un direccionamiento de información en un sistema computarizado. Está formado por 8 bits.
Trama :tira de bits con un formato predefinido usado en protocolos orientados a bit.
Paquete :fracciones de un mensaje de tamaño predefinido, donde cada fracción o paquete contiene información de procedencia y de destino, así como información requerida para el reensamblado del mensaje.
Interfaces: conexión que permite la comunicación entre dos o más dispositivos.
Códigos:acuerdo previo sobre un conjunto de significados que definen una serie de símbolos y caracteres. Toda combinación de bits representa un carácter dentro de la tabla de códigos. las tablas de códigos más reconocidas son las del código ASCII y la del código EBCDIC.
Paridad:técnica que consiste en la adición de un bit a un carácter o a un bloque de caracteres para forzar al conjunto de unos (1) a ser par o impar. Se utiliza para el chequeo de errores en la validación de los datos. El bit de paridad será cero (0=SPACE) o uno (1=MARK).
Modulación: proceso de manipular de manera controlada las propiedades de una señal portadora para que contenga la información que se va a transmitir
DTE (Data Terminal Equipment) :equipos que son la fuente y destino de los datos. comprenden equipos de computación (Host, Microcomputadores y Terminales).
DCE (Data Communications Equipment): equipos de conversión entre el DTE y el canal de transmisión, es decir, los equipos a través de los cuales conectamos los DTE a las líneas de comunicación.
MEDIOS , FORMAS Y TIPOS DE TRANSMISION
Medios
Aéreos: basados en señales radio-eléctricas (utilizan la atm ósfera como medio de transmisión), en señales de rayos láser o rayos infrarrojos.
Sólidos: principalmente el cobre en par trenzado o cable coaxial y la fibra óptica.
Formas
Transmisión en Serie:los bits se transmiten de uno a uno sobre una línea única. Se utiliza para transmitir a larga distancia.
Transmisión en Paralelo: los bits se transmiten en grupo sobre varias líneas al mismo tiempo. Es utilizada dentro del computador.
La transmisión en paralela es más rápida que la transmisión en serie pero en la medida que la distancia entre equipos se incrementa (no debe sobrepasarse la distancia de 100 pies), no solo se encarecen los cables sino que además aumenta la complejidad de los transmisores y los receptores de la línea a causa de la dificultad de transmitir y recibir señales de pulsos a través de cables largos.
Tipos
Transmisión Simplex: la transmisión de datos se produce en un solo sentido. siempre existen un nodo emisor y un nodo receptor que no cambian sus funciones.
Transmisión Half-Duplex: la transmisión de los datos se produce en ambos sentidos pero alternativamente, en un solo sentido a la vez. Si se está recibiendo datos no se puede transmitir.
Transmisión Full-Duplex:la transmisión de los datos se produce en ambos sentidos al mismo tiempo. un extremo que esta recibiendo datos puede, al mismo tiempo, estar transmitiendo otros datos.
Transmisión Asincrona:cada byte de datos incluye señales de arranque y parada al principio y al final. La misión de estas señales consiste en:
• Avisar al receptor de que está llegando un dato.
• Darle suficiente tiempo al receptor de realizar funciones de sincronismo antes de que llegue el siguiente byte.
Transmisión Sincrona:se utilizan canales separados de reloj que administran la recepción y transmisión de los datos. Al inicio de cada transmisión se emplean unas señales preliminares llamadas:
• Bytes de sincronización en los protocolos orientados a byte.
• Flags en los protocolos orientados a bit.
Su misión principal es alertar al receptor de la llegada de los datos.
Nota: Las señales de reloj determinan la velocidad a la cual se transmite o recibe.
PROTOCOLOS
ProtocoloConjunto de reglas que posibilitan la transferencia de datos entre dos o más computadores.
Arquitectura de Niveles : el propósito de la arquitectura de niveles es reducir la complejidad de la comunicación de datos agrupando lógicamente ciertas funciones en áreas de responsabilidad (niveles).
Características
• Cada nivel provee servicios al nivel superior y recibe servicios del nivel inferior.
• Un mensaje proveniente de un nivel superior contiene una cabecera con información a ser usada en el nodo receptor.
• El conjunto de servicios que provee un nivel es llamado Entidady cada entidad consiste en un manejador (manager) y un elemento (worker).

1.2.5.- De conexión entre capas
Descripción
SSL proporciona autenticación y privacidad de la información entre extremos sobre Internet mediante el uso de criptografía. Habitualmente, sólo el servidor es autenticado (es decir, se garantiza su identidad) mientras que el cliente se mantiene sin autenticar; la autenticación mutua requiere un despliegue de z
SSL implica una serie de fases básicas:
• Negociar entre las partes el algoritmo que se usará en la comunicación
• Intercambio de claves públicas y autenticación basada en certificados digitales
• Cifrado del tráfico basado en cifrado simétrico
Durante la primera fase, el cliente y el servidor negocian qué algoritmos criptográficos se van a usar. Las implementaciones actuales proporcionan las siguientes opciones:
• Para criptografía de clave pública: RSA, Diffie-Hellman, DSA (Digital Signature Algorithm) o Fortezza;
• Para cifrado simétrico: RC2, RC4, IDEA (International Data Encryption Algorithm), DES (Data Encryption Standard), Triple DES o AES (Advanced Encryption Standard);
• Con funciones hash: MD5 o de la familia SHA
Cómo funciona
El protocolo SSL intercambia registros; opcionalmente, cada registro puede ser comprimido, cifrado y empaquetado con un código de autenticación del mensaje (MAC). Cada registro tiene un campo de content_type que especifica el protocolo de nivel superior que se está usando.
Cuando se inicia la conexión, el nivel de registro encapsula otro protocolo, el protocolo handshake, que tiene el content_type 22.
El cliente envía y recibe varias estructuras handshake:
• Envía un mensaje ClientHello especificando una lista de conjunto de cifrados, métodos de compresión y la versión del protocolo SSL más alta permitida. Éste también envía bytes aleatorios que serán usados más tarde (llamados Challenge de Cliente o Reto). Además puede incluir el identificador de la sesión.
• Después, recibe un registro ServerHello, en el que el servidor elige los parámetros de conexión a partir de las opciones ofertadas con anterioridad por el cliente.
• Cuando los parámetros de la conexión son conocidos, cliente y servidor intercambian certificados (dependiendo de las claves públicas de cifrado seleccionadas). Estos certificados son actualmente X.509, pero hay también un borrador especificando el uso de certificados basados en OpenPGP.
• El servidor puede requerir un certificado al cliente, para que la conexión sea mutuamente autenticicada.
• Cliente y servidor negocian una clave secreta (simétrica) común llamada master secret, posiblemente usando el resultado de un intercambio Diffie-Hellman, o simplemente cifrando una clave secreta con una clave pública que es descifrada con la clave privada de cada uno. Todos los datos de claves restantes son derivados a partir de este master secret (y los valores aleatorios generados en el cliente y el servidor), que son pasados a través una función pseudoaleatoria cuidadosamente elegida.
TLS/SSL poseen una variedad de medidas de seguridad:
• Numerando todos los registros y usando el número de secuencia en el MAC.
• Usando un resumen de mensaje mejorado con una clave (de forma que solo con dicha clave se pueda comprobar el MAC). Esto se especifica en el RFC 2104).
• Protección contra varios ataques conocidos (incluyendo ataques man-in-the-middle), como los que implican un degradado del protocolo a versiones previas (por tanto, menos seguras), o conjuntos de cifrados más débiles.
• El mensaje que finaliza el protocolo handshake (Finished) envía un hash de todos los datos intercambiados y vistos por ambas partes.
• La función pseudo aleatoria divide los datos de entrada en 2 mitades y las procesa con algoritmos hash diferentes (MD5 y SHA), después realiza sobre ellos una operación XOR. De esta forma se protege a sí mismo de la eventualidad de que alguno de estos algoritmos se revelen vulnerables en el futuro.
1.3.- Escenarios de utilización aplicaciones distribuidas
Algunas de las aplicaciones distribuidas más conocidas son remote login, correo electrónico, navegación Web, streaming, telefonía IP y compartición de ficheros (P2P).
Algunos escenarios que utilizan aplicaciones distribuidas son:
• PHP
Eduacaión a distancia - moddle.
Creación de blogs - Wordpress.
Creador de wikis - MediaWiki.
Administrar BD en web - PHPMyAdmin.

• ASP
E-commerce - eCAM.
E-commerce - ProdMentor.
1.4.- Problemas comunes en desarrollo y uso aplicaciones distribuidas
El desarrollo de aplicaciones distribuidas requirió de nuevas técnicas de diseño y de generación de modelos. También trajo nuevos problemas. Existen 2 tipos distintos de arquitecturas que se utilizaron antes de .NET para hacer aplicaciones distribuidas: Llamadas a Procedimiento Remoto (RPC) Arquitecturas basadas en mensajes
Se verán los problemas técnicos que este tipo de arquitecturas tiene y finalmente como los Estándares Web son utilizados para hacer la nueva generación de aplicaciones distribuidas
Hay una serie de problemas comunes en el diseño de las aplicaciones distribuidas:
La compatibilidad de los Tipos de Datos: Distintos sistemas operativos tienen diferentes tipos de datos que no son siempre compatibles entre sí.
Fallas del Servidor: Debido a que los componentes pueden ser remotos, una falla de cualquiera de ellos puede hacer que toda la aplicación falle .
Fallas del Cliente: El servidor debe saber como responder a las fallas del cliente.
Reintento de llamadas: Si por ejemplo, se hace una llamada a un método en un servidor para generar una orden de compra muy grande, y el servidor responde pero se pierde la respuesta por fallas de red, no es muy eficiente volver a enviar la orden de compra.
Seguridad: En aplicaciones distribuidas los problemas de seguridad se multiplican. Por ejemplo, se debe considerar como: Autenticar a los usuarios Autorizarlos a acceder a los recursos Encriptar la información que viaja por la red Evitar ataques de denegación de servicio
Sincronización de la hora: Hay operaciones que dependen de la fecha y la hora. Por ejemplo, no es lógico en una aplicación procesar un envío de mercadería antes de haber recibido la orden de compra. Si el cliente y el servidor tienen fechas distintas, se debe generar un mecanismo de sincronización de hora para evitar este problema.
La arquitectura basada en RPC Qué es RPC: RPC son llamadas a procedimientos o funciones en sistemas remotos, es decir en máquinas distintas a la máquina local. Transparencia de localización: El desarrollador utiliza los componentes sin necesidad de saber su ubicación física. Con RPC tanto en el cliente como en la máquina donde reside el componente hay subsistemas que se ocupan de la comunicación y el intercambio de datos.
Llamadas Sincrónicas: En RPC las llamadas a los procedimientos son sincrónicas. Esto quiere decir que cuando una aplicación hace una llamada a un procedimiento RPC debe esperar que el servidor le responda para poder continuar con el procesamiento. Esto presenta problemas en un entorno distribuido, mucho más si pensamos en distribuir los componentes en Internet.
Las llamadas sincrónicas con RPC tienen desventajas: Uso de múltiples componentes: Si su aplicación distribuida depende de muchos componentes que se llaman entre sí, esto hace que la aplicación sea más susceptible a fallas. Balanceo de Carga y Tolerancia a fallos: Es el problema de como las aplicaciones descubren la información necesaria para poder conectarse otros servidores en el caso de que el que esta utilizando falle. O de como balancean el procesamiento entre varios servidores Esto no es posible con RPC.
Priorización: Con RPC es muy difícil detectar que servidores están con mucha carga de trabajo y derivar la llamada RPC a otro servidor menos ocupado.
Picos de carga de Trabajo: RPC no puede manejar los picos de carga de trabajo que puede tener un servidor si tiene llamadas RPC de muchos clientes.
La arquitectura basada en Mensajes Otra arquitectura para desarrollar aplicaciones distribuidas es la basada en mensajes.
Esta tecnología es asincrónica. Lo que significa que el cliente puede seguir con el procesamiento mientras espera la respuesta del servidor. Utiliza mensajes en vez de llamadas a funciones.
Tiene desventajas: Procesamiento del Mensaje: El programador debe manejar en el código el empaquetamiento y des empaquetamiento de los mensajes. Además debe controlar su validez Interoperabilidad: Los sistemas de mensajería utilizan tecnología propietaria. Se necesita software para permitir el envío de mensajes y la comunicación los distintos sistemas. Flujo de Carga y secuenciamiento de los mensajes: Se necesita de algún mecanismo para coordinar el flujo y la secuencia de los mensajes. Por ejemplo, no se puede procesar una orden de envío de un producto antes de que se procesa la orden de pedido del producto.
Los estándares Web Tanto RPC como la arquitectura basada en mensajes han sido implementados en forma exitosa por muchas organizaciones. Sin embargo su uso tiene dificultades que se resuelven con la utilización de los protocolos Web estándares.
Problemas con los Protocolos Binarios: Existen varias tecnologías RPC, ninguna estándar, por ejemplo. COM de Microsoft, CORBA y RMI. Todas estas tecnologías utilizan protocolos binarios. Los protocolos binarios tienen desventajas: Firewall: Para permitir la comunicación entre un cliente y un servidor que se encuentra detrás de un firewall los administradores deben dejar un rango variable de puertos abiertos. Esto es un riesgo de seguridad muy alto.
Interoperatividad: Las distintas tecnologías RPC implican protocolos binarios de comunicación distintos. Para que interoperen entre sí se deben traducir los paquetes de red lo que puede significar pérdida de información. Para evitar este problema las organizaciones utilizan un solo modelo RPC.
Formato de los Datos: Cada protocolo RPC utiliza un formato de datos distintos. La traducción de un formato a otro presenta dificultades.
La nueva arquitectura: Los protocolos que utiliza Internet resuelven muchos de los problemas anteriormente mencionados. Internet y la Web: Los protocolos TCP e IP fueron desarrollados originalmente para conectar redes distintas y crear una red de redes. Esta red de redes terminó convirtiéndose en el Internet que conocemos hoy. A finales de 1990, Tim Berners-Lee inventó WWW (World Wide Web).

No hay comentarios:

Publicar un comentario