UTN FRC Caché de Disco y Seguridad Informática PDF
Document Details
Uploaded by DiversifiedEcstasy5942
UTN
Tags
Related
Summary
Este documento proporciona una introducción a la caché de disco en computadoras y conceptos relacionados con la seguridad informática, incluyendo las amenazas, los tipos de intrusos, la detección de intrusos y diferentes tipos de protección. Destaca la importancia del control de acceso tanto de usuarios como de datos.
Full Transcript
# UTN FRC ## Caché de disco - El término memoria caché se aplica normalmente a una memoria más pequeña y rápida que la memoria principal. - Se sitúa entre la memoria principal y el procesador. - El mismo concepto se puede aplicar a la meoria de disco. - Concretamente, una caché de disco es una...
# UTN FRC ## Caché de disco - El término memoria caché se aplica normalmente a una memoria más pequeña y rápida que la memoria principal. - Se sitúa entre la memoria principal y el procesador. - El mismo concepto se puede aplicar a la meoria de disco. - Concretamente, una caché de disco es una memoria intermedia situada en la memoria principal para sectores de disco. - La cache contiene una copia de algunos sectores del disco. - Cuando se hace una solicitud de E/S para un sector específico, se comprueba si el sector está en la caché de disco. - Si está, la solicitud toma los datos de la caché. - Si no, se lee el sector solicitado en el disco y se coloca en la caché. - Queda disponible para futuras solicitudes. ### Consideraciones sobre el diseño - **Solicitud de E/S:** la caché de disco debe entregarse al proceso que los solicitó: - Los bloques de datos se transfieren desde la caché a la memoria asignada al proceso de usuario. - Usando la capacidad de memoria compartida y pasando un puntero a la entrada apropiada de la cache del disco. - **Estrategia de reemplazo:** establece que bloque de la caché va a ser reemplazado. - LRU (usado menos recientemente): bloque sin referencias durante la mayor cantidad de tiempo. Más usado. - LFU (usado menos frecuentemente): bloque con menor cantidad de referencias. - **Política de escritura:** - Por demanda: los sectores se sustituyen sólo cuando se necesita una entrada en la tabla. - Previamente: los sectores se sustituyen cada vez que se libera un conjunto de entradas. - Cada vez que el bloque se actualice o Solo cuando se reemplaza el bloque ## Unidad Nº6 - Seguridad ### Amenazas a la seguridad - La seguridad de computadoras y redes aborda los siguientes cuatro requisitos: - **Secreto:** la información debe ser accedida solamente por partes autorizadas. - **Integridad:** los elementos pueden ser modificados solo por partes autorizadas. - **Disponibilidad:** los elementos deben estar disponibles para las partes autorizadas. - **Autenticidad:** verificar la identidad de un usuario. ### Tipos de amenazas - **Interrupción:** se destruye un elemento del sistema o se hace inaccesible o inútil. Es un ataque a la disponibilidad. - **Interceptación:** una parte no autorizada consigue acceder a un elemento. Este es un ataque al secreto. - **Modificación:** una parte no autorizada no solo consigue acceder, sino que falsifica un elemento. Este es un ataque a la integridad. - **Invención:** una parte no autorizada inserta objetos falsos en el sistema. Este es un ataque a la autenticidad. ### Componentes de un sistema informático - **Hardware:** - Amenaza a la disponibilidad: comprenden daños accidentales y deliberados a los equipos, así como el hurto. Hacen falta medidas de seguridad físicas y administrativas para hacer frente a estas amenazas. - **Software:** - Amenaza a la disponibilidad: el software es alterado o dañado para inutilizarlo. Se puede combatir con copias de seguridad (backups). - Amenaza al secreto: se realizan copias no autorizadas del software. Se combate con licencias, registros. - Amenaza a la integridad/autenticidad: un programa sigue funcionando, pero se comporta de forma diferente a lo normal (virus, ataques). Se pueden usar antivirus. - **Datos:** - Amenaza a la disponibilidad: destrucción de archivos (accidentalmente o mal intencionado). - Amenaza al secreto: lectura no autorizada de bases de datos y archivos. Un análisis de datos estadísticos puede revelar datos ocultos. - Amenaza a la integridad: modificación de archivos existentes o invención de nuevos. - **Redes y líneas de comunicaciones:** - **Amenazas pasivas:** - Revelación del contenido de mensajes - Análisis de tráfico - **Amenazas activas:** suponen alteraciones del flujo de datos o la creación de un flujo falso. Se pueden dividir en cuatro categorías: - **Suplantación:** una entidad se hace pasar por otra. Un usuario se hace pasar por otro. - **Repetición:** incluye la captura previa de un dato único y la subsiguiente retransmisión para producir un efecto no autorizado. - **Modificación de mensajes:** significa que se modifica una porción de un mensaje legítimo o que los mensajes se retrasan o se desordenan para conseguir un efecto no autorizado. - **Privación de servicio:** impide o inhibe el uso normal o la gestión de servicios de comunicaciones. Esta agresión puede tener como objetivo suprimir mensajes a un destinatario en particular o interrumpir toda una red. ### Protección - El objetivo frente a los ataques activos es detectarlos y recuperarse de cualquier interrupción o retardo. - La introducción a la multiprogramación originó la posibilidad de compartir recursos entre los usuarios. La necesidad de compartir recursos introdujo la necesidad de protección. Un sistema operativo puede ofrecer protección de las siguientes maneras: - Sin protección alguna: apropiada cuando se ejecutan procedimientos delicados en distintos instantes. - Aislamiento: cada proceso opera separadamente de los demás. - Compartición completa o sin compartición: el propietario de un objeto lo declara como público o privado. - Compartición vía limitaciones de acceso: el SO comprueba la licencia de cada acceso de un usuario específico a un objeto. Actúa como guardián o vigilante, entre los usuarios y los objetos, asegurando que sólo se producen los accesos autorizados. - Acceso vía capacidades dinámicas: creación dinámica de derechos de acceso a los objetos. - Uso limitado de un objeto: esta forma de protección limita no solo el acceso a un objeto, sino también el uso a que se puede dedicar dicho objeto. Por ejemplo, se puede dejar ver un documento delicado a un usuario, pero no imprimirlo. ### Protección de la memoria - La separación del espacio de memoria de los diversos procesos se lleva a cabo fácilmente con un esquema de memoria virtual. La segmentación, paginación o la combinación de ambas proporcionan un medio eficaz de gestión de la memoria principal. - **Aislamiento total:** el SO simplemente debe asegurar que cada segmento o página es accesible solo para el proceso al que está asignada. Esto se lleva a cabo fácilmente exigiendo que no haya entradas duplicadas en las tablas de páginas o segmentos. - **Compartimiento:** el mismo segmento o página puede ser referenciado en más de una tabla. Este tipo de compartimiento se consigue mejor en un sistema que soporta segmentación o combinación de segmentación o paginación. ## Control de acceso orientado al usuario (autenticación) - La técnica más habitual de control de acceso al usuario en un sistema de tiempo compartido o en un servidor es la conexión del usuario, que requiere un identificador de usuario (ID) y una contraseña. - Este esquema ID/contraseña es un método notablemente poco fiable de control de acceso al usuario. - Los usuarios pueden olvidar sus contraseñas y pueden revelarlas accidental o deliberadamente. - Es una técnica que está sujeta a los intentos de penetración. - El control de acceso a usuario en entornos distribuidos puede ser centralizado o descentralizado: - **Control de acceso centralizado:** la red proporciona un servicio de conexión para determinar a quien se le permite usar la red y a qué se le permite conectarse. - **Control de acceso descentralizado:** trata la red como un enlace de comunicación transparente, y el mecanismo de acceso habitual se realiza por parte del ordenador destino. ## Control de acceso orientado a los datos (autorización) - Después de una conexión con éxito, al usuario se le habrá concedido el acceso a uno o más servidores y aplicaciones. - Asociado con cada usuario, puede haber un perfil de usuario que especifique las operaciones y los accesos a archivos permisibles. - Un modelo general de control de acceso ejercido por un sistema gestor de archivos o bases de datos es el de una matriz de acceso. - Los elementos básicos del modelo son los siguientes: - **Sujeto:** entidad capaz de acceder a un objeto (proceso, usuario, etc.). - **Objeto:** cualquier cosa cuyo acceso deba controlarse (archivos, programas, segmentos de memoria, etc.). - **Derecho de acceso:** la manera en que un sujeto accede a un objeto (leer, escribir, ejecutar). - Una de las dimensiones de la matriz consiste en los sujetos identificados que pueden intentar acceder a los datos (usuarios o grupos de usuarios). - La otra dimensión enumera a los objetos a los que se puede acceder. - Cada entrada de la matriz indica los derechos de acceso de ese sujeto a ese objeto. - La matriz puede descomponerse en columnas para obtener listas de control de acceso. - De esta forma por cada objeto, hay una lista de control de acceso que muestra los usuarios y sus derechos de acceso. - Con la descomposición por filas se obtienen etiquetas de capacidad de acceso. - Ésta especifica los objetos y las operaciones autorizadas para un usuario. - Cada usuario tiene un número de etiquetas y puede estar autorizado o no para prestarlas o concederlas a otros usuarios. ### Intrusos - Una de las dos amenazas más conocidas a la seguridad (la otra es la de los virus) es el intruso, conocido en general como pirata informático, hacker o cracker. ### Tipos de intrusos - **Suplantador:** persona no autorizada a utilizar el sistema y se hace pasar por otro usuario legítimo. Es un usuario externo. - **Abusador:** un usuario legítimo que accede a datos, programas o recursos a los que no está autorizado, o estando autorizado para dicho acceso utilizar sus privilegios de forma maliciosa. Es un usuario interno. - **Usuario clandestino:** un individuo que está a cargo del control de la supervisión del sistema y utiliza ese control para evadir la auditoría y el control de acceso o para suprimir la recopilación de datos. Puede ser externo o interno. ### Técnicas de intrusión - El objetivo de los intrusos es obtener acceso a un sistema o aumentar el conjunto de privilegios accesibles en un sistema. - En general, esto requiere que el intruso obtenga información que debería estar protegida. - En la mayoría de los casos, esta información está en forma de contraseña de usuario. ## Detección de intrusos - La detección de intrusos es la segunda línea de defensa. - Se basa en el supuesto de que el comportamiento del intruso se diferencia del comportamiento de un usuario legítimo en formas que pueden cuantificarse. - El comportamiento de un usuario se puede establecer observando su historial, y se pueden detectar desviaciones significativas en su patrón. ### Las técnicas para la detección de intrusos son: - **Detección de anomalías estadísticas:** supone la recolección de datos del comportamiento de los usuarios legítimos durante un período de tiempo. Después se aplican pruebas estadísticas al comportamiento observado para determinar, con un alto grado de confianza, si los comportamientos no son de usuarios legítimos. Es eficaz contra atacantes exteriores. Pueden no ser capaces de hacer frente a usuarios legítimos que intenten obtener acceso a recursos que requieren mayores privilegios. - **Detección basada en reglas:** supone el intento de definir un conjunto de reglas que pueden emplearse para decidir si un comportamiento dado es el de un intruso. ### Una herramienta fundamental para la detección de intrusos es un registro de auditoría. - Este, consiste en un registro de actividades en curso por parte de los usuarios. - Se utilizan dos planes: - **Registros de auditoría nativos:** casi todos los SO multiusuario ya incorporan un software de contabilidad que reúne información sobre la actividad de los usuarios. No necesita ningún software adicional (lo trae el SO). Puede que no contengan la información que se necesite o no se disponga de ella en una forma conveniente. - **Registro de auditoría específicos para la detección:** registros de auditoría que contiene sólo aquella información necesaria para el sistema de detección de intrusiones. Puede ser independiente del fabricante, pero tiene un coste extra por tener dos paquetes de contabilidad ejecutando en una misma máquina. Cada registro de auditoría contiene los campos siguientes: - **Sujeto:** iniciadores de las acciones. - **Acción:** operación realizada por el sujeto con un objeto o sobre un objeto. - **Objeto:** receptores de las acciones. - **Condición de excepción:** indica las condiciones de excepción, si se produce alguna. - **Uso de recursos:** una lista de elementos cuantitativos en la que cada elemento dice la cantidad empleada de un recurso. - **Marca de tiempo:** fecha y hora que indica cuando tuvo lugar la acción. ## Software malicioso ### Programas malignos - Pueden dividirse en dos categorías: - **Necesitan un programa anfitrión:** fragmentos de programa que no tienen existencia independiente de otro programa. - **Independientes:** son programas que por sí mismos pueden ser planificados y ejecutados por el SO. - También se pueden distinguir las amenazas de software que se reproducen y las que no lo hacen. - **No reproducibles:** fragmentos de programa que se activan cuando se invoca al programa anfitrión. - **Reproducibles:** fragmentos de programa o un programa independiente, que cuando se ejecutan pueden hacer una copia o más copias de sí mismos que se activarán, más tarde, en el mismo sistema o en algún otro. Los distintos programas maliciosos son: - **Puerta secreta:** es un punto de entrada secreto a un programa que permite a alguien que la conoce conseguir acceso sin pasar por procedimientos de seguridad. Estas, han sido utilizadas por programadores para depurar y probar los programas, y se convierten en amenazas cuando se las utiliza para conseguir acceso no autorizado. Son difíciles de detectar para los SO. Las medidas de seguridad deben centrarse en el desarrollo de programas y en actualizaciones de software. - **Bomba lógica:** es un código incrustado en algún programa legítimo que "explota” cuando se cumplen ciertas condiciones (presencia o ausencia de archivos, un día concreto de la semana, fecha, usuario en particular que ejecute la aplicación, etc.). Pueden borrar o modificar datos, hasta hacer que se detenga la máquina. - **Caballos de Troya (troyanos):** es un programa aparentemente útil que contiene un código oculto que, cuando se invoca, lleva a cabo alguna función dañina o no deseada. Se pueden usar para efectuar funciones indirectamente que un usuario no autorizado no podría efectuar directamente, como cambiar los permisos de un archivo. - **Virus:** es un programa que puede infectar a otros programas, alterándolos, como incluir una copia del programa de virus, que puede entonces seguir infectando a otros programas. - **Gusanos:** una vez activo un gusano, puede comportarse como un virus, un troyano o realizar cualquier acción destructiva. Utilizan las conexiones de red para extenderse de un sistema a otro (correo electrónico, ejecución remota, conexión remota). Contiene las mismas fases que los virus. - **Zombie:** es un programa que secretamente toma posesión de otra computadora conectada a internet, y se usa para lanzar ataques que hacen difícil de rastrear. Se utilizan en ataques de denegación de servicio. ### Fases de un virus 1. **Fase latente:** el virus está inactivo. Se activará luego por algún suceso. No todos los virus pasan por esta fase. 2. **Fase de propagación:** el virus hace copias idénticas a él en otros programas o en ciertas áreas del disco. 3. **Fase de activación:** el virus se activa para llevar a cabo la función para la que está pensado. Puede producirse por múltiples sucesos el sistema. 4. **Fase de ejecución:** se lleva a cabo la función. La función puede ser no dañina, como dar un mensaje por pantalla, o dañina, como la destrucción de archivos. ### Tipos de virus - **Virus parásitos:** la forma más tradicional y más común. Se engancha a archivos ejecutables y se reproduce al ejecutar el programa infectado, buscando otros archivos ejecutables para infectar. - **Virus residente:** se alojan en la memoria principal infectando a todos los programas que se ejecutan. - **Virus en sector de arranque:** infecta al sector principal de arranque (MBR) y se propaga cuando el sistema arranca desde el disco que contiene el virus. - **Virus oculto:** una forma de virus diseñado explícitamente para esconderse de la detección mediante en software antivirus. - **Virus polimórfico:** un virus que muta con cada infección, haciendo imposible la detección por la "firma" del virus. ### Virus de macros - Son independientes de la plataforma. - Infectan documentos, no archivos ejecutables. - Se extiende fácilmente a través del correo electrónico. - Sacan provecho de características de Word y Excel llamadas Macro. Una macro consiste en un programa ejecutable incrustado en un documento de procesador de texto u otro archivo, utilizado para automatizar tareas repetitivas y ahorrar pulsaciones de teclas. ## Unidad Nº7 - Procesamiento distribuido ### Introducción - Con el incremento de la disponibilidad de computadoras personales y potentes servidores no muy caros, ha habido una mayor tendencia hacia el proceso de datos distribuido (DDP, Distributed Data Processing), en el que los procesadores, datos y otros elementos del sistema de proceso de datos pueden estar distribuidos en una organización. - Un sistema de procesamiento distribuido implica la partición de la función de computación y puede, también, conllevar una organización distribuida de la base de datos, el control de los dispositivos y el control de las interacciones (redes). - Se ha explorado un espectro de capacidades distribuidas de los sistemas operativos, como son: - **Arquitectura de comunicaciones:** es el software que da soporte a una red de computadoras independientes. Ofrece soporte para las aplicaciones distribuidas, tales como correo electrónico, transferencia de archivos y acceso a terminales remotos. Cada computadora tiene su propio SO, y es posible una mezcla heterogénea de computadoras y SO, siempre que todas las máquinas soporten la misma arquitectura de comunicaciones. Por ejemplo, protocolo TCP/IP. - **Sistemas operativos de red:** es una configuración de varias estaciones de trabajo y uno o más servidores. Los servidores proporcionan servicios o aplicaciones a toda la red (como almacenamiento de archivos y gestión de impresoras). Cada computador tiene su propio SO privado. El usuario es consciente de que existen múltiples computadoras independientes y debe tratar con ellas explícitamente. - **Sistemas operativos distribuidos:** un SO común compartido por una red de computadores. Para los usuarios es como un SO centralizado, aunque les proporciona un acceso transparente a los recursos de numerosas computadoras. Este SO puede depender de una arquitectura de comunicaciones para las funciones básicas de comunicación. ### Proceso cliente/servidor - El entorno cliente/servidor está poblado de clientes y servidores. - **Clientes:** son, en general, PC monousuario o puestos de trabajo que ofrecen una interfaz de fácil manejo al usuario final (poseen interfaz gráfica, uso de ventanas y mouse). - **Servidor:** proporciona un conjunto de servicios que puede compartir a los clientes (servidores de archivos, servidores de bases de datos, etc.). - **Red:** conjunto de elementos que permiten interconectar clientes y servidores. Ejemplos: LAN (Local Area Network), WAN (Wide Area Network) e internet. ### Aplicaciones cliente/servidor - La característica central de la arquitectura cliente/servidor es la distribución de las tareas de la aplicación entre el cliente y el servidor. Tanto en el cliente como en el servidor, el software básico es un SO que se ejecuta en sobre el hardware de la plataforma. La plataforma y el SO del cliente y del servidor pueden ser diferentes. De hecho, pueden existir diferentes plataformas de clientes y sistemas operativos y diferentes plataformas de servidor en un mismo entorno. Siempre que los clientes y los servidores compartan los mismos protocolos de comunicación y soporten las mismas aplicaciones, estas diferencias de bajo nivel no son relevantes. - El software de comunicaciones es el que permite que interactúen el cliente y el servidor (ejemplo, protocolo TCP/IP). Por supuesto, el objetivo de todo este software de soporte (comunicaciones y sistema operativo) es proporcionar las bases para las aplicaciones distribuidas. De forma ideal, las funciones que realiza una aplicación se pueden dividir entre el cliente y el servidor, de manera que se optimice el uso de los recursos. - Un factor esencial en el éxito de un entorno cliente/servidor es la forma en que el usuario interactúa con el sistema. De esta forma, es decisivo el diseño de la interfaz de usuario en la máquina cliente. En la mayor parte de los sistemas cliente/servidor, se hace mucho énfasis en proporcionar una interfaz gráfica de usuario (GUI) que sea fácil de usar, fácil de aprender, potente y flexible. ### Aplicaciones de bases de datos - La familia más común de aplicaciones cliente/servidor son aquellas que utilizan base de datos relacionales. - En este entorno, el servidor es, básicamente, un servidor de base de datos. - La interacción entre el cliente y el servidor se realiza a través de transacciones, donde el cliente realiza una petición a la base de datos y recibe una respuesta. - El servidor es responsable de mantener la base de datos, para lo que se requiere un complejo sistema gestor de base de datos. - En las máquinas cliente se puede situar diferentes aplicaciones diferentes que hagan uso de la base de datos. - El «pegamento» que une al cliente y al servidor es el software que permite que el cliente haga peticiones para acceder al servidor de la base de datos. Un ejemplo muy popular es el lenguaje estructurado de consultas (SQL) - Toda la lógica de aplicación -el software para el análisis de datos- está en la parte cliente, mientras que el servidor sólo se preocupa de la gestión de la base de datos. Que esta configuración sea la apropiada, depende del estilo y del propósito de la aplicación. ### Clases de aplicaciones cliente/servidor - Dentro del entorno general cliente/servidor, hay una serie de implementaciones que dividen el trabajo entre el cliente y el servidor de diferente manera. - Algunas de las opciones principales para las aplicaciones de base de datos son: - **Procesamiento basado en una máquina central (host):** no es una verdadera computación cliente/servidor. - **Procesamiento basado en el servidor (cliente ligero):** es el tipo más básico de configuración cliente/servidor. - **Procesamiento basado en el cliente (uso más común, cliente pesado):** en el otro extremo, prácticamente todo el procesamiento se puede realizar en el cliente, con la excepción de las rutinas de validación de datos y otras funciones lógicas de la base de datos que se pueden realizar mejor en el servidor. Es posiblemente el enfoque cliente/servidor más utilizado actualmente. Permite a los usuarios el uso de aplicaciones adaptadas a las necesidades locales. - **Procesamiento cooperativo (cliente pesado):** el procesamiento de la aplicación se realiza de forma óptima, beneficiándose de las máquinas cliente y servidora y de la distribución de los datos. Es más compleja de configurar y mantener, pero, a largo plazo, puede ofrecer una mayor productividad a los usuarios y una mayor eficiencia de la red. ### Arquitectura cliente/servidor de tres capas - La arquitectura tradicional cliente/servidor implica normalmente dos niveles o capas: la capa del cliente y la capa del servidor. - En los últimos años la arquitectura que más se ha pasado a utilizar es una de tres capas. - En esta arquitectura el software de aplicación está distribuido entre tres tipos de máquinas: una máquina de usuario, un servidor en la capa central y un servidor en segundo plano (backend). - La máquina de usuario en esta arquitectura, por lo general es un cliente ligero. - Las máquinas de la capa central son normalmente una pasarela entre los clientes ligeros y varios servidores de bases de datos en segundo plano. - Las máquinas de la capa central pueden convertir protocolos y cambiar de un tipo de consulta de base de datos a otra. - Además, las máquinas de la capa central pueden mezclar/integrar los resultados de diferentes fuentes de datos. - Finalmente, pueden servir como pasarela entre las aplicaciones de escritorio y las aplicaciones de los servidores en segundo plano, mediando entre los dos mundos. - La interacción entre el servidor de la capa central y el servidor en segundo plano, también sigue el modelo cliente/servidor. De esta forma, el sistema de la capa intermedia actúa de cliente y de servidor. ### Consistencia de la caché de archivos - Cuando se utiliza un servidor de ficheros, el rendimiento de la E/S de ficheros se puede degradar en comparación con el acceso local a ficheros, debido a los retrasos generados por la red. - Para reducir este problema de rendimiento, los sistemas individuales pueden utilizar cache de ficheros para almacenar los registros de los ficheros a los que se ha accedido recientemente. - El uso de una caché local debería reducir el número de accesos necesarios al servidor remoto. - Cuando las caches contienen siempre copias exactas de los datos remotos, decimos que las caches son consistentes. - Es posible que las caches se vuelvan inconsistentes cuando se cambian los datos remotos y no se descartan las correspondientes copias locales en la cache. - El problema de mantener actualizadas las copias locales de cache es conocido como el problema de la consistencia de cache. - El método más simple para la consistencia de caches consiste en emplear técnicas de bloqueo de archivos para evitar accesos simultáneos a un archivo por más de un cliente Esto garantiza la consistencia a costa de rendimiento y flexibilidad. - Un mecanismo más potente es que cualquier número de procesos remotos puedan abrir un archivo para la lectura y almacenarla en su propia cache. - Pero cuando una solicitud de apertura de fichero pide accesos de escritura y otros procesos tienen el fichero abierto con acceso de lectura, el servidor realiza dos acciones. - Primero, notifica al proceso que escribe que, aunque puede mantener una copia local, debe mandar al servidor todos los bloques que se cambien inmediatamente. - Puede haber como mucho uno de estos clientes. Segundo, el servidor notifica a todos los procesos lectores que tienen el fichero abierto que el fichero ya no se puede mantener en cache. ### Middleware - El desarrollo y utilización de los productos cliente/servidor ha sobrepasado con mucho los esfuerzos para estandarizar todos los aspectos de la computación distribuida, desde la capa física hasta la capa de aplicación. - Esta falta de estándares hace difícil implementar una configuración cliente/servidor integrada y multivendedor en toda la empresa. - Este problema de interoperabilidad debe ser resuelto, ya que gran parte del beneficio del enfoque cliente/servidor está unido a su modularidad y la capacidad de combinar plataformas y aplicaciones para proporcionar una solución de negocio. - Para lograr los verdaderos beneficios del mecanismo cliente/servidor, los desarrolladores deben tener un conjunto de herramientas que proporcionen una manera y estilo de acceso uniforme a los recursos del sistema a través de todas las plataformas. - Esto permitirá a los programadores construir aplicaciones que no sólo parezcan iguales en todos los PC y estaciones de trabajo, sino que utilicen el mismo método para acceder a los datos, independientemente de la localización de los mismos. - La forma más común de cumplir estos requisitos es a través del uso de interfaces de programación y protocolos estándares entre la aplicación y el software de comunicaciones y el sistema operativo. - Estos interfaces de programación y protocolos estándares se denominan middleware. - Con los interfaces de programación estándares resulta sencillo implementar la misma aplicación en varios tipos de servidores y estaciones de trabajo. - Esto lógicamente beneficia a los clientes, pero los vendedores también están motivados para proporcionar estos interfaces. - La razón es que los clientes compran aplicaciones, no servidores; los clientes sólo elegirán aquellos productos de servidor que ejecuten las aplicaciones que ellos quieren. - Los protocolos estandarizados son necesarios para unir a los servidores con los clientes que necesitan acceder a ellos. - Hay diversos paquetes de middleware, que varían desde los muy sencillos a los muy complejos. - Lo que tienen todos en común es la capacidad de esconder la complejidad y disparidad de los diferentes protocolos de red y sistemas operativos. - Los vendedores de clientes y servidores generalmente proporcionan los paquetes de middleware más populares. - De esta forma un usuario puede fijar una estrategia middleware particular y montar equipos de varios vendedores que soporten esa estrategia. - **Middleware:** conjunto de controladores, API y software adicional que mejoran la conectividad entre una aplicación cliente y un servidor, brindando acceso uniforme a los recursos del sistema a través de todas las plataformas. - **Middleware formado por:** - Interfaces de programacion - Protocolos estándares entre la aplicación y el SW de comunicaciones y el sistema operativo - **Ventajas:** - Permite construir aplicaciones que utilicen el mismo método para acceder a los datos, independientemente de su ubicación. - Facilita la implementación de la aplicación en diferentes tipos de servidores y estaciones de trabajo. - Se implementa a través de paso de mensajes y de llamadas a procedimiento remoto (RPC) ### Arquitectura middleware - El propósito básico del middleware es permitir a una aplicación o usuario en el cliente acceder a una variedad de servicios en el servidor sin preocuparse de las diferencias entre los servidores. - Aunque hay una amplia variedad de productos middleware, estos se basan normalmente en uno de dos mecanismos básicos: el paso de mensajes o las llamadas a procedimientos remotos. - Desde un punto de vista lógico, más que desde un punto de vista de implementación El middleware permite la realización de la promesa de la computación cliente/servidor. - El sistema distribuido entero puede verse como un conjunto de aplicaciones y recursos disponibles para los usuarios. - Todas las aplicaciones operan sobre una interfaz uniforme de programación de aplicaciones (API). - El middleware, que se sitúa entre todas las plataformas cliente y servidor, es el responsable de guiar las peticiones al servidor apropiado. ### Paso distribuido de mensajes - En los sistemas de proceso distribuido reales se suele dar el caso de que los computadores no compartan una memoria principal; cada una es un sistema aislado. - Por lo tanto, no es posible emplear técnicas de comunicación entre procesadores basadas en memoria compartida, como son los semáforos y el uso de un área de memoria común. - En su lugar, se usan técnicas basadas en el paso de mensajes. - Con este método, un proceso cliente solicita un servicio y envía, a un proceso servidor, un mensaje que contiene una petición de servicio. - El proceso servidor satisface la petición y envía un mensaje de respuesta. - En su forma más simple, solo se necesitan dos funciones: - **Send:** la utiliza el proceso que quiere enviar el mensaje. Especifica un destinatario y el contenido del mensaje. - **Receive:** la utiliza el proceso receptor para anunciar su intención de recibir el mensaje, especifica de quién se recibirá el mensaje y el buffer en donde almacenarlo. - La transferencia de mensajes (send) consiste en: 1. El módulo de paso de mensajes construye el mensaje (destinatario y datos). 2. Se entrega el mensaje al servicio de comunicación (TPC/IP) 3. Se envía el mensaje por el medio de transmisión 4. En el destino, el servicio de comunicación se lo entrega al módulo de paso de mensajes. 5. Se examina el ID del proceso y se almacena el mensaje en el buffer del proceso. - Los procesos hacen uso de los servicios de un módulo de pasos de mensajes, el cual sería un middleware. ### Servicio fiable vs. servicio no fiable - **Servicio fiable:** - Garantiza la entrega de los datos. - Utiliza un protocolo de transporte fiable. - Se realiza comprobación de errores y acuse de recibo. - Se retransmiten y se reordenan los mensajes (en caso de ser necesario). - **Servicio no fiable:** - Simplemente se envía el mensaje al destinatario por la red. - Utiliza un protocolo de transporte no fiable. - No se informa si se entregó con éxito. - Servicio muy simple y rápido (baja sobrecarga de procesamiento y comunicación del servicio de paso de mensajes). - Si se requiere fiabilidad, la aplicación deberá garantizarla. ### Bloqueante vs no bloqueante - **Primitivas no bloqueantes (asíncronas):** - Cuando se realiza un send o receive no se suspende el proceso. - Cuando un proceso emite un send, el SO le devolverá el control al proceso cuando ponga en cola el mensaje de salida. - Para un receive, se informa mediante una interrupción o este puede comprobar periódicamente su estado. - Ofrecen un empleo eficiente y flexible del servicio de paso de mensajes. - Los programas que usan estas primitivas son difíciles de probar y de depurar. - **Primitivas bloqueantes (síncronas):** - Cuando se realiza un send no se devuelve el control al proceso emisor hasta que el mensaje se haya trasmitido o hasta que el mensaje se haya enviado y obtenido un acuse de recibo. - Cuando se realiza un receive no devuelve el control al proceso hasta que el mensaje se haya ubicado en el buffer asignado. ### Llamadas a procedimiento remoto (RPC) - Las llamadas a procedimiento remoto son una variante del modelo básico de paso de mensajes. - Hoy en día este método es muy común y está ampliamente aceptado para encapsular la comunicación en un sistema distribuido. - Lo fundamental en esta técnica es permitir a los programas en diferentes maquinas interactuar a través del uso de llamadas a procedimiento, tal y como lo harían dos programas que están en la misma máquina. - Las ventajas de este método son: 1. Las llamadas a procedimiento son una abstracción ampliamente aceptada, utilizada y entendida. 2. El uso de llamadas a procedimiento remoto permite especificar las interfaces remotas como un conjunto de operaciones con nombre y tipos de datos dados. - De esta forma, la interfaz se puede documentar claramente y los programas distribuidos pueden comprobar estáticamente errores en los tipos de datos. 3. Ya que se especifica una interfaz estandarizada y precisa, el código de comunicación para una aplicación se puede generar automáticamente. 4. Ya que se especifica una interfaz estandarizada y precisa, los desarrolladores pueden escribir módulos cliente y servidor que se pueden mover entre computadoras y sistemas operativos con pocas modificaciones y recodificaciones - El mecanismo de las llamas a procedimientos remotos puede considerarse como una mejora del paso de mensajes fiables y bloqueante. - El programa llamador realiza una llamada normal a un procedimiento con los parámetros situados en su máquina. - Por ejemplo: CALL P (X, Y) donde Pes el nombre del procedimiento, X son los argumentos pasados e Y son los valores devueltos. - El espacio de direcciones del llamador debe incluir un procedimiento P de presentación o tonto, o bien debe enlazarse dinámicamente en el momento de la llamada. - Este procedimiento crea un mensaje que identifica al procedimiento llamado e incorpora los parámetros. - Envía el mensaje y queda esperando la respuesta. - Cuando se recibe la respuesta, el procedimiento de presentación retorna al programa llamador, proporcionándole los valores devueltos. ### Paso de parámetros - **Por valor:** los parámetros simplemente se copian en el mensaje y se envían al sistema remoto. - **Por referencia:** difícil de implementar. Para cada objeto se necesita un puntero único y válido para todo el sistema. No suele merecer la pena el esfuerzo por la sobrecarga que se genera. ### Tipos de conexiones o enlaces cliente/servidor - El enlace especifica cómo se establecerá la relación entre un procedimiento remoto y el programa llamante. Se forma un enlace cuando dos aplicaciones han realizado una conexión lógica y están preparados para intercambiar datos y mandatos. - **Conexión no persistente:** significa que la conexión lógica se establece entre los dos procesos en el momento de la llamada a procedimiento remoto y que, tan pronto como se devuelven los valores, se cierra la conexión. - Debido a que la conexión requiere que se mantenga información de estado en ambos extremos, consume recursos. - El estilo no persistente se utiliza para conservar estos recursos. - Por otra parte, la sobrecarga que implica establecer las conexiones, hace que los enlaces no permanentes sean inapropiados para procedimientos remotos que son llamados frecuentemente. - **Conexión persistente:** una conexión que se establece para una llamada a procedimiento remoto se mantiene después de la finalización de dicha llamada. - La conexión puede ser utilizada para futuras llamadas a procedimiento remoto. - Si pasa un periodo determinado de tiempo sin actividad en la conexión, se finaliza la conexión. - Para aplicaciones que hacen llamadas repetidas a procedimientos remotos, el enlace permanente mantiene la conexión lógica y permite que una secuencia de llamadas utilice la misma conexión. ### Sincronismo vs asincronismo - Conceptos análogos a los de mensajes bloqueantes y no bloqueantes. - **RPC síncronas:** el proceso llamante espera hasta que el proceso devuelva el valor (como una llamada a una subrutina). - **RPC asíncronas:** no bloquean al llamante y permiten lograr un mayor