Aspectos de diseño de Cliente - Servidor
CLIENTE-SERVIDOR
DIRECCIONAMIENTO
Para que un cliente pueda enviar un mensaje a un servidor, debe conocer la dirección de éste.
Hay varios métodos para el direccionamiento de los procesos:
1. Machine.process: machine indica el número de máquina dentro de la red y process, el número de proceso dentro de esa máquina. Pero este método no posee la transparencia que se busca ya que se está identificando que existen varias máquinas trabajando. A parte si se descompone esa máquina (server) se pierde el servicio pues los programas compilados tienen integrado ese número de máquina para ese servicio. Una variación de este esquema, utiliza machine.local_id.
Inconvenientes:
La transparencia es uno de los …ver más…
Entonces las primitivas almacenadas en buffer implican que el núcleo del receptor mantenga pendiente los mensajes por un instante usando un buffer lo que conlleva a un almacenamiento y manejo de mensajes que van llegando en forma prematura.
3. Almacenadas en buzones: Un proceso interesado en recibir mensajes le indica al núcleo que cree un buzón para él y especifica una dirección en la cual buscar los paquetes de la red. Así, todos los mensajes que lleguen a esa dirección se colocan en el buzón. El RECEIVE elimina ahora un mensaje del buzón o se bloquea si no hay un mensaje presente.
En ciertos sistemas, no se deja que un proceso envíe un mensaje si no existe espacio para su almacenamiento en el destino. Para que este esquema funcione, el emisor debe bloquearse hasta que obtenga de regreso un reconocimiento, que indica que el mensaje ha sido recibido.
CONFIABILIDAD
1. Confiable: Cuando se garantiza de alguna manera que el mensaje llega a destino.
2. No Confiable: Cuando no existe garantía alguna de que el mensaje haya sido entregado, podría haberse perdido. Existen tres distintos enfoques de este problema:
Volver a definir la semántica SEND para hacerlo no confiable (el sistema no da garantía alguna acerca de la entrega de los mensajes).
Req - Ack - Rep - Ack: Se envían reconocimientos de núcleo a núcleo (Server/Cliente) sin que estos se enteren. Así una solicitud de respuesta