Introducción a la Computación Distribuida y Modelos de Comunicación

Introducción a la Computación Distribuida

Conceptos Básicos

  • Muchos sistemas computacionales actuales siguen el modelo de computación distribuida.
  • Aplicaciones a través de Internet, móviles, etc.
  • La mayoría de superordenadores modernos son sistemas distribuidos.

Sistema Distribuido

  • Formado por más de un elemento computacional distinto e independiente que no comparte memoria con el resto.
  • Los elementos que forman el sistema distribuido no están sincronizados: No hay reloj común.
  • Los elementos que forman el sistema están conectados a una red de comunicaciones.

Comunicación entre Aplicaciones

Es la base del funcionamiento de todo sistema distribuido. En el proceso de comunicación se distingue:

  • Mensaje: Es la información que se intercambia entre las aplicaciones que se comunican.
  • Emisor: Aplicación que envía el mensaje.
  • Receptor: Aplicación que recibe el mensaje.
  • Paquete: Es el paquete de unidad básica de información que intercambian dos dispositivos de comunicación.
  • Canal de comunicación: Es el medio por el que se transmiten los paquetes, que conecta el emisor con el receptor.
  • Protocolo de comunicaciones: Conjunto de reglas que fijan cómo se deben intercambiar los paquetes entre los diferentes elementos que se comunican entre sí.

Protocolo de Comunicaciones

Para que las diferentes aplicaciones que forman un sistema distribuido puedan comunicarse, debe existir una serie de mecanismos que hagan posible esa comunicación:

  • Elementos hardware
  • Elementos software

Todos estos componentes se organizan en lo que se denomina jerarquía o pila de protocolos.

Pila de Protocolos IP

Nivel de Red

  • Lo componen los elementos hardware de comunicaciones y sus controladores básicos.
  • Se encarga de transmitir los paquetes de información.

Nivel de Internet

  • Lo componen los elementos software que se encargan de dirigir los paquetes por la red, asegurándose de que lleguen a su destino.
  • También llamado nivel IP.

Nivel de Transporte

  • Lo componen elementos software cuya función es crear el canal de comunicación, descomponer el mensaje en paquetes y gestionar su transmisión entre el emisor y el receptor.
  • Los protocolos fundamentales: TCP y UDP.

Nivel de Aplicación

  • Lo componen las aplicaciones que forman el sistema distribuido, que hacen uso de los niveles inferiores para poder transferir mensajes entre ellas.

Funcionamiento de la Pila de Protocolos

Protocolo de Transporte TCP

  • Garantiza que los datos no se pierdan.
  • Garantiza que los mensajes llegarán en orden.
  • Se trata de un protocolo orientado a conexión.

Protocolo Orientado a Conexión

Es aquel en que el canal de comunicaciones entre dos aplicaciones permanece abierto durante un tiempo, permitiendo enviar múltiples mensajes de manera fiable por el mismo. Ejemplo más habitual: TCP. Opera en tres fases:

  1. Establecimiento de la conexión.
  2. Envío de mensajes.
  3. Cierre de la conexión.

Sockets

  • Son el mecanismo de comunicación básico fundamental para realizar transferencias de información entre aplicaciones.
  • Proporcionan una abstracción de la pila de protocolos.
  • Un socket (en inglés = enchufe) representa el extremo de un canal de comunicación establecido entre un emisor y un receptor.

Direcciones IP y Puertos

  • Una dirección IP es un número que identifica de forma única a cada máquina de la red y sirve para comunicarse con ella.
  • Un puerto es un número que identifica el socket dentro de una máquina.

Sockets Stream

  • Son orientados a conexión.
  • Cuando operan sobre IP, emplean TCP.
  • Un socket stream se utiliza para comunicarse siempre con el mismo receptor, manteniendo el canal de comunicación abierto entre ambas partes hasta que se termina la conexión.
  • Una parte ejerce la función de proceso cliente y otra de proceso servidor.

Proceso Cliente

  • Creación de socket.
  • Conexión del socket (connect).
  • Envío y recepción de mensajes.
  • Cierre de conexión (close).

Proceso Servidor

  • Creación del socket.
  • Asignación de dirección y puerto (bind).
  • Escucha (listen).
  • Aceptación de conexiones (accept). Esta operación implica la creación de un nuevo socket, que se usa para comunicarse con el cliente que se ha conectado.
  • Envío y recepción de mensajes.
  • Cierre de conexión (close).

Protocolo de Transporte UDP

  • Protocolo NO orientado a conexión. Esto lo hace más rápido que TCP, ya que no es necesario establecer conexiones, etc.
  • No garantiza que los mensajes lleguen siempre.
  • No garantiza que los mensajes lleguen en el mismo orden que fueron enviados.
  • Permite enviar mensajes de 64Kb como máximo.
  • Aquí los mensajes se denominan datagramas.

Un datagrama está formado por:

  • Cadena de bytes: Contenido del mensaje.
  • Longitud del mensaje.
  • Dirección IP destino.
  • Número de puerto de destino.

Socket Datagram

  • No son orientados a conexión.
  • Cuando operan sobre IP, emplean UDP.
  • Cuando se usan sockets datagram no existe diferencia entre proceso servidor y cliente.

Pasos para enviar mensajes:

  • Creación del socket.
  • Asignación de dirección y puerto (solo necesariamente para poder recibir mensajes).
  • Envío y/o recepción de mensajes.
  • Cierre del socket.

Modelos de Comunicaciones

  • Los sockets son una herramienta básica para enviar y recibir mensajes.
  • A la hora de desarrollar aplicaciones distribuidas debemos tener en cuenta aspectos de más alto nivel.
  • Dependiendo de cuál sea el propósito de la aplicación y su funcionamiento, deberemos escoger un modelo de comunicaciones distinto.
  • Un modelo de comunicaciones es una arquitectura general que especifica cómo se comunican entre sí los diferentes elementos de una aplicación distribuida.
  • Un modelo de comunicación normalmente define aspectos como cuántos elementos tiene el sistema, qué función realiza cada uno, etc.

Los más usados son:

  • Cliente/Servidor:
    • El más sencillo.
    • Un proceso central llamado servidor ofrece una serie de servicios a uno o más procesos cliente.
    • El proceso servidor debe estar alojado en una máquina fácilmente accesible en la red y conocida por los clientes.
    • Cuando un cliente requiere sus servicios, se conecta al servidor, iniciando el proceso de comunicación.
  • Comunicación en Grupo:
    • Alternativa a la anterior.
    • No existen roles diferentes.
    • Existe un conjunto de dos o más elementos (procesos, aplicaciones, etc.) que cooperan en un trabajo común.
    • A este conjunto se le llama grupo, y los elementos que lo forman se consideran todos iguales, sin roles ni jerarquías.
    • Los mensajes se transmiten mediante radio.

Modelos Híbridos

  • Las aplicaciones distribuidas más avanzadas suelen tener requisitos de comunicaciones muy complejos, que requieren de modelos de comunicaciones sofisticados.
  • En muchos casos, los modelos de comunicaciones reales implementados en estas aplicaciones mezclan conceptos del modelo cliente/servidor y la comunicación en grupo, dando lugar a enfoques híbridos, como las redes peer-to-peer (P2P).

Redes Peer-to-Peer

  • Está formada por un grupo de elementos distribuidos que colaboran con un objetivo común.
  • Cualquier elemento puede desempeñar los roles de servidor o cliente, como si de un modelo cliente/servidor se tratase.
  • Pueden ofrecer servicios de forma similar al modelo cliente/servidor.
  • Cualquier aplicación puede conectarse a la red como un cliente, localizar un servidor y enviarle una petición.
  • Si permanece en la red P2P, con el tiempo ese mismo cliente puede hacer a su vez de servidor para otros elementos de la red.

Multicast: Comunicación en Grupo

  • El mensaje es replicado y entregado a cada uno de los destinatarios.
  • Permite la comunicación en grupo de forma muy eficiente.
  • Supone un riesgo para la seguridad de la red, ya que cualquiera puede enviar cientos de mensajes y saturar a todos los miembros de un grupo.
  • El tráfico multicast está restringido en Internet y se usa en redes de área local.
  • Se suelen usar bibliotecas para su implementación. Ej: JGroups de Java.

MulticastSocket

  • La clase MulticastSocket es útil para enviar paquetes a múltiples destinos simultáneamente.
  • Para poder recibir estos paquetes es necesario establecer un grupo multicast (grupo de direcciones IP que comparten el mismo puerto).
  • El emisor no conoce el número de miembros del grupo ni sus direcciones IP.
  • Grupo Multicast: Dirección IP de Clase D y un puerto UDP estándar.
    • Desde la 224.0.0.0 hasta la 239.255.255.255.
    • 224.0.0.0 está reservada y no debe ser usada.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.