Protocolo Solicitud-Respuesta
El protocolo solicitud-respuesta está diseñada para apoyar los roles e intercambios de mensajes en interacciones cliente-servidor. El protocolo solicitud-respuesta [1] [2], que se describe en la Figura 1, se basa en un trío de primitivas de comunicación:
![]() |
| Figure 1: Protocolo Solicitud Respuesta. |
doOperation,getRequest y sendReply:
- doOperation: los clientes invocan operaciones remotas. Sus argumentos especifican el servidor remoto y la operación a invocar, junto con información adicional (argumentos) requerida por la operación.
- getRequest es utilizado por un proceso de servidor para adquirir solicitudes de servicio. Envía un mensaje de solicitud al servidor remoto y devuelve la respuesta.
- sendReply Cuando el servidor ha invocado la operación especificada, usa sendReply para enviar el mensaje de respuesta al cliente. Cuando el cliente recibe el mensaje de respuesta doOperation original se desbloquea y la ejecución del programa cliente continúa.
Ejemplo del protocolo solicitud-respuesta es HTTP y TCP stream ([1], [2]).
Estructura del Mensaje
La información a transmitir en un mensaje del protocolo solicitud-respuesta, se muestra en la Figura 2
- El primer campo indica si el mensaje es una Solicitud o un mensaje de Respuesta
- El camporequestId, contiene un identificador de mensaje generado por una operación en el cliente por cada mensaje de solicitud; el servidor copia estos ID en los mensajes de respuesta correspondientes. Esto permite que doOperation verifique que la respuesta es el resultado de la solicitud actual.
- El tercer campo es una referencia remota, es el identificador del objeto remoto.
- El cuarto campo es el conjunto de argumentos que definen las operaciones que se van a invocar.
![]() |
| Figure 2: Estructura del mensaje protocolo Solicitud-Respuesta. |
Fallas
Si el protocolo solicitud-respuesta se implementan sobre datagramasUDP, entonces sufren de los mismos fallos de comunicación que UDP. Es decir:
- Fallas por omisión del mensaje.
- No se garantiza que los mensajes se entreguen en el orden del remitente.
Características del Protocolo solicitud-respuesta
- Tiempos de Espera. Para las ocasiones en que un servidor falla o que se descarta una solicitud o un mensaje de respuesta, la doOperation usa un timeout mientras está esperando obtener mensaje de respuesta del servidor. Para compensar la posibilidad de pérdida de mensajes, doOperation puede reenvíar el mensaje de solicitud repetidamente hasta que recibe una respuesta.
- Mensajes Duplicados. En los casos en que el mensaje de solicitud sea retransmitido, el servidor puede recibirlo más de una vez. Esto puede llevar a que el servidor ejecute una operación más de una vez para la misma solicitud. Para evitar esto, el protocolo está diseñado para reconocer mensajes sucesivos (del mismo cliente) con el mismo identificador de solicitud, para filtrar los duplicados.
- Mensajes Perdidos. Si el servidor ya ha enviado la respuesta cuando recibe una solicitud duplicada, deberá ejecutar la operación nuevamente para obtener el resultado , a menos que haya almacenado el resultado de la ejecución original.
- Historial. Para los servidores que requieren una retransmisión de respuestas sin repetir la ejecución de las operaciones, se puede usar un historial de los mensajes transmitidos. Una entrada en un historial contiene un identificador de solicitud, un mensaje y un identificador del cliente al que se envió la respuesta. Su propósito es permitir que el servidor retransmita los mensajes de respuesta cuando los procesos del cliente los soliciten.
Estilos del protocolo
Se pueden describir tres estilos de protocolos relacionados al protocolo Solicitud-Respuesta,
que producen diferentes comportamientos:
- El protocolo Solicitud (R). El cliente envía un mensaje de solicitud único al servidor. El cliente puede procesar inmediato después de que se envíe el mensaje de solicitud, ya que no es necesario esperar un mensaje de respuesta. Este protocolo se implementa a través de los datagramas de UDP y, además, sufre de las mismas falles de comunicación.
- El protocolo de solicitud-respuesta (RR). El protocolo RR es útil para la mayoría de los intercambios de clientes-servidores. No se requieren mensajes de acuse de recibo especial, ya que el mensaje de respuesta de un servidor se considera un acuse de recibo del mensaje de solicitud del cliente.
- El protocolo Solicitud-Respuesta (RRA). El protocolo RRA se basa en el intercambio de tres mensajes: Solicitud, respuesta y reconocimiento. El mensaje de reconocimiento contiene el requestId del mensaje de respuesta. Esto permitirá al servidor descartar las entradas de su historial.
Bibliografia:
[1] M van Steen and A.S. Tanenbaum. Distributed Systems. Edited by Pearson Prentice
Hall. Third. distributed-systems.net, 2017
[2] George Coulouris et al. Distributed Systems: Concepts and Design. 5th. USA:
Addison-Wesley Publishing Company, 2011. ISBN: 0132143011
96 Chapter 5. Comunicación entre Procesos Remotos


No hay comentarios.:
Publicar un comentario