19
Sistemas Distribuidos Prof. María Feldgen - Curso 2006 1 Sistemas Distribuidos 4. Ambientes de Programación Cliente-Servidor Prof. María Feldgen Curso 2006 FIUBA-EGRIET 2006 Sistemas Distribuidos (Prof. María Feldgen) 2 Índice Aplicaciones Cliente-Servidor – Modelo Cliente-Servidor – Capa de Transporte TCP/IP – Tipos de Servidores – Ambiente de Programación con Sockets – Ambiente de Programación con RPC

Sistemas Distribuidos 4. Ambientes de Programación Cliente-Servidor …materias.fi.uba.ar/sweb/1c-2006/sisdis06_4.pdf · 2006-04-05 · aplicación y sus datos almacenados (servidor)

  • Upload
    others

  • View
    3

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Sistemas Distribuidos 4. Ambientes de Programación Cliente-Servidor …materias.fi.uba.ar/sweb/1c-2006/sisdis06_4.pdf · 2006-04-05 · aplicación y sus datos almacenados (servidor)

Sistemas Distribuidos

Prof. María Feldgen - Curso 2006 1

Sistemas Distribuidos4. Ambientes de Programación

Cliente-Servidor

Prof. María FeldgenCurso 2006

FIUBA-EGRIET 2006 Sistemas Distribuidos (Prof. María Feldgen) 2

Índice

• Aplicaciones Cliente-Servidor– Modelo Cliente-Servidor– Capa de Transporte TCP/IP– Tipos de Servidores– Ambiente de Programación con Sockets– Ambiente de Programación con RPC

Page 2: Sistemas Distribuidos 4. Ambientes de Programación Cliente-Servidor …materias.fi.uba.ar/sweb/1c-2006/sisdis06_4.pdf · 2006-04-05 · aplicación y sus datos almacenados (servidor)

Sistemas Distribuidos

Prof. María Feldgen - Curso 2006 2

FIUBA-EGRIET 2006 Sistemas Distribuidos (Prof. María Feldgen) 3

Aplicaciones Cliente-Servidor• Las primeras arquitecturas de aplicaciones

distribuidas estaban dominadas por lo que se conocecomo las aplicaciones comerciales de dos capas:– La primera (superior) capa del modelo trata con la

presentación y la lógica del negocio de la aplicación delusuario (cliente) y

– la segunda (inferior) capa trata con la organización de laaplicación y sus datos almacenados (servidor).

• El cliente inicia la acción y el servidor pasivamenteespera por los clientes y realiza las acciones queeste requiere.

• Este ambiente en general se lo conoce como unaarquitectura de aplicación Cliente/Servidor.

FIUBA-EGRIET 2006 Sistemas Distribuidos (Prof. María Feldgen) 4

Cliente: inicia lainteracción

ACTIVO

Servidor: Espera por elcliente

PASIVO

REQUEST

REPLY

Modelo Cliente-Servidor

Page 3: Sistemas Distribuidos 4. Ambientes de Programación Cliente-Servidor …materias.fi.uba.ar/sweb/1c-2006/sisdis06_4.pdf · 2006-04-05 · aplicación y sus datos almacenados (servidor)

Sistemas Distribuidos

Prof. María Feldgen - Curso 2006 3

FIUBA-EGRIET 2006 Sistemas Distribuidos (Prof. María Feldgen) 5

Cliente-servidor• El servidor puede ser, por ejemplo un servidor de base de

datos, responsable de la organización y recuperación delos datos.

• En cambio, la aplicación cliente trata con la mayor partedel procesamiento del negocio y provee una interfasegrafica de la aplicación al usuario.

• Es un diseño popular en aplicaciones comerciales, dondela interfase del usuario y la lógica del negocio estánaltamente acopladas al servidor de base de datos y a laactualización y recuperación de datos.

• Ejemplos: se usa en planificación de recursos, sistemasde pago, inventario y otras donde las aplicaciones clienteresiden en múltiples computadoras de escritoriointeractuando con un servidor de base de datos central.

FIUBA-EGRIET 2006 Sistemas Distribuidos (Prof. María Feldgen) 6

Aplicación Cliente-Servidor

Page 4: Sistemas Distribuidos 4. Ambientes de Programación Cliente-Servidor …materias.fi.uba.ar/sweb/1c-2006/sisdis06_4.pdf · 2006-04-05 · aplicación y sus datos almacenados (servidor)

Sistemas Distribuidos

Prof. María Feldgen - Curso 2006 4

FIUBA-EGRIET 2006 Sistemas Distribuidos (Prof. María Feldgen) 7

Limitaciones• Procesamiento comercial complejo del lado del cliente

demanda sistemas robustos.• La seguridad es mas compleja de implementar, ya que

los algoritmos y la lógica residen en las máquinas delcliente, que son mas vulnerables a los hackers.

• Se requiere alto ancho de banda para acomodar lasnecesidades de múltiples llamadas al servidor, y estopuede imponer restricciones de escalabilidad.

• El mantenimiento y actualización de las aplicacionesclientes es difícil, ya que cada cliente se mantiene porseparado.

• Esta arquitectura es muy útil para aplicacionesorientadas a base datos centralizadas ya que nogenera componentes reusables robustos.

FIUBA-EGRIET 2006 Sistemas Distribuidos (Prof. María Feldgen) 8

Modelo Cliente-Servidor en TCP/IP Es un grupo de procesos cooperantes, llamados servers

(servidores) que brindan servicios a los usuarios,llamandos clients (clientes)

En general se basan en un protocolo sin conexión depregunta/respuesta (request/reply)

Request

Reply

Red

Cliente Servidor54321

Request/Reply

Capas 1 a 4 Capas 1 a 4

Modelo de Capas

Page 5: Sistemas Distribuidos 4. Ambientes de Programación Cliente-Servidor …materias.fi.uba.ar/sweb/1c-2006/sisdis06_4.pdf · 2006-04-05 · aplicación y sus datos almacenados (servidor)

Sistemas Distribuidos

Prof. María Feldgen - Curso 2006 5

FIUBA-EGRIET 2006 Sistemas Distribuidos (Prof. María Feldgen) 9

Capas de Transporte en TCP/IP

PORT

Request enviado al port y dirección de IPdel servidor

Reply enviado al port y dirección de IP del origen

PORT(TCP/UDP) + IP

Cliente Servidor

CON CONEXIÓN: TCP (Transport Control Protocol) SIN CONEXIÓN: UDP (User Datagram Protocolo)

Modelo Cliente Servidor

FIUBA-EGRIET 2006 Sistemas Distribuidos (Prof. María Feldgen) 10

HostMAFALDA

Socket o half association activoSocket o half association pasivo

Port bien conocido Port asignado

conexión

HostSUSANITA

(tcp, SUSANITA,1500)

Cliente

(tcp, * ; 21)

Servidor

Association (conexión): (tcp, MAFALDA,21, SUSANITA,1500)Dir local

IPL+portLIPL+portL*.portL

Dir remota

IPR+portR*.**.*

Comportamiento del server:

acepta a un solo cliente (*)acepta datagramas para IPLacepta todos los datagramas para portL

Page 6: Sistemas Distribuidos 4. Ambientes de Programación Cliente-Servidor …materias.fi.uba.ar/sweb/1c-2006/sisdis06_4.pdf · 2006-04-05 · aplicación y sus datos almacenados (servidor)

Sistemas Distribuidos

Prof. María Feldgen - Curso 2006 6

FIUBA-EGRIET 2006 Sistemas Distribuidos (Prof. María Feldgen) 11

Tipos de servidores

IterativoSIN Conexión

IterativoCON Conexión

ConcurrenteSIN Conexión

ConcurrenteCON Conexión

FIUBA-EGRIET 2006 Sistemas Distribuidos (Prof. María Feldgen) 12

Server Concurrente

Server

Server hijo

fork Cliente

Host MAFALDA

Host Susanita

(tcp, * ,21)

(tcp, Susanita, 1500)

(tcp, Mafalda, 21)

RequestConexión

Conexión

Page 7: Sistemas Distribuidos 4. Ambientes de Programación Cliente-Servidor …materias.fi.uba.ar/sweb/1c-2006/sisdis06_4.pdf · 2006-04-05 · aplicación y sus datos almacenados (servidor)

Sistemas Distribuidos

Prof. María Feldgen - Curso 2006 7

FIUBA-EGRIET 2006 Sistemas Distribuidos (Prof. María Feldgen) 13

Server Concurrente

Cliente

Host Susanita

(tcp, Susanita, 1500)

server

fork

Host Mafalda

(tcp, * ,21)

serverhijo

(tcp, Mafalda, 21)

Conexión

Cliente

Host Manolito

(tcp, Manolito, 1500)

serverhijo

(tcp, Mafalda, 21)Conexión

RequestConexión

RequestConexión

FIUBA-EGRIET 2006 Sistemas Distribuidos (Prof. María Feldgen) 14

Ambientes de ProgramaciónCliente-Servidor

• Sockets (Berkeley):– Paradigma básico sobre el cual se construyen todas las

comunicaciones es Entrada/Salida (I/O).– Primitivas de transporte para TCP y UDP.

• RPC (Remote Procedure Call):– Paradigma básico: Llamar a procedimientos en otras

máquinas.– La información se intercambia por parámetros.– El pasaje de mensajes o I/O no es visible.

Page 8: Sistemas Distribuidos 4. Ambientes de Programación Cliente-Servidor …materias.fi.uba.ar/sweb/1c-2006/sisdis06_4.pdf · 2006-04-05 · aplicación y sus datos almacenados (servidor)

Sistemas Distribuidos

Prof. María Feldgen - Curso 2006 8

FIUBA-EGRIET 2006 Sistemas Distribuidos (Prof. María Feldgen) 15

Ambiente de Programación SOCKETS• API (Aplication Programming Interface): Interface entre el

programa de aplicación y el software del protocolo.• IPC (Interprocess Communication): provee comunicación entre

procesos de un sistema o de sistemas diferentes.• API’s existentes desarrolladas para lenguaje “C”, Java y otros:

– Sockets (4.3BSD) Desarrollado por la Universidad de Berkeley, esla mas frecuente en Unix, Microsoft (Winsock), OS/2 y otros.

– TLI (Transport Layer Interface): de Unix System V 3.0,desarrollado por AT&T.

• TCP/IP no provee ningún mecanismo para crear automáticamente unprograma cuando llega un mensaje, por lo tanto el programa querecibe el mensaje debe estar activo antes de que se efectue laprimera comunicación.

FIUBA-EGRIET 2006 Sistemas Distribuidos (Prof. María Feldgen) 16

Funcionalidad de la Interface• Operaciones conceptuales que soporta:

– Alocar recursos locales para la comunicación– Especificar las “puntas” local y remota de la comunicación– Iniciar una conexión (el cliente)– Esperar por una conexión entrante (el server)– Enviar o recibir datos– Terminar un conexión en forma graciosa– Tratar condiciones anormales de terminación– Desalocar recursos cuando la comunicación termina

• Interface conceptual:– no especifica representación de datos o detalles de programación.– es un conjunto de procedimiento y funciones. Sugiere los

parámetros que requieren y la semántica de las operaciones– es “débil”, solo ilustra como las aplicaciones interactúan con

TCP/IP, por lo cual las implementaciones difieren unas de otras.

Page 9: Sistemas Distribuidos 4. Ambientes de Programación Cliente-Servidor …materias.fi.uba.ar/sweb/1c-2006/sisdis06_4.pdf · 2006-04-05 · aplicación y sus datos almacenados (servidor)

Sistemas Distribuidos

Prof. María Feldgen - Curso 2006 9

FIUBA-EGRIET 2006 Sistemas Distribuidos (Prof. María Feldgen) 17

Funciones de sockets

• socket Crea un descriptor para usar en la comunicación• connect ** Conecta con un server remoto (Cliente)• read/readv Recibe datos sobre una conexión• write/writev Escribe datos sobre una conexión• close Termina la comunicación y cierra el descriptor socket• bind * ** Vincula una dirección IP y un port local con un socket• listen * Open pasivo y determina la cola de mensajes• accept * Acepta la próxima conexión entrante• recv/recvmsg Recibe el próximo datagrama entrante• recvfrom Recibe el próximo datagrama y recuerda su origen• send/sendmsg Envia un datagrama• shutdown Termina la conexión TCP en una o ambas direcciones• select Espera por condiciones de I/O

(*) Función del server (**) Función del cliente

FIUBA-EGRIET 2006 Sistemas Distribuidos (Prof. María Feldgen) 18

Escenario de transferencia con conexión

socket ( )

connect ( )

write ( )

read ( )

CLIENTE

socket ( )

bind ( )

listen ( )

accept ( )

read ( )

write ( )

SERVER

Bloqueado esperandoun cliente

Procesamiento

Establecimientoconexión

Data request

Data reply

Page 10: Sistemas Distribuidos 4. Ambientes de Programación Cliente-Servidor …materias.fi.uba.ar/sweb/1c-2006/sisdis06_4.pdf · 2006-04-05 · aplicación y sus datos almacenados (servidor)

Sistemas Distribuidos

Prof. María Feldgen - Curso 2006 10

FIUBA-EGRIET 2006 Sistemas Distribuidos (Prof. María Feldgen) 19

Escenario de transferencia sin conexión

sendto ( )

recvfrom( )

socket ( )

bind ( )

recvfrom ( )

sendto ( )

SERVER

Bloqueado esperandodatos de un cliente

Procesamiento

Data request

Data reply

socket ( )

bind ( )

CLIENTE

FIUBA-EGRIET 2006 Sistemas Distribuidos (Prof. María Feldgen) 20

Asociaciones

(protocolo, dirección local, proceso local, dirección remota, proceso remoto)

Tipo protocolo Dirección yproceso local

Dirección yproceso remoto

Con Conexión: Cliente socket ( ) bind ( ) listen( ), accept ( ) Server socket ( ) connect ( )Sin Conexión: Cliente socket ( ) bind ( ) recvfrom ( ) Server socket ( ) bind ( ) sendto ( )

Page 11: Sistemas Distribuidos 4. Ambientes de Programación Cliente-Servidor …materias.fi.uba.ar/sweb/1c-2006/sisdis06_4.pdf · 2006-04-05 · aplicación y sus datos almacenados (servidor)

Sistemas Distribuidos

Prof. María Feldgen - Curso 2006 11

FIUBA-EGRIET 2006 Sistemas Distribuidos (Prof. María Feldgen) 21

Ambientes de ProgramaciónRPC

• RPC (Remote Procedure Call):– Un proceso en una máquina local invoca a un

procedimiento en una máquina remota.– Distintas especificaciones e implementaciones:

• Open Network Computing (ONC) RPC• Distributed Computing Environment (DCE) RPC• International Organization for Standarization (ISO)RPC

FIUBA-EGRIET 2006 Sistemas Distribuidos (Prof. María Feldgen) 22

Requerimientos

• Pasaje de parámetros• Binding• Protocolo de transporte• Tratamiento de excepciones• Semántica del call• Representacion de datos• Performance• Seguridad

Page 12: Sistemas Distribuidos 4. Ambientes de Programación Cliente-Servidor …materias.fi.uba.ar/sweb/1c-2006/sisdis06_4.pdf · 2006-04-05 · aplicación y sus datos almacenados (servidor)

Sistemas Distribuidos

Prof. María Feldgen - Curso 2006 12

FIUBA-EGRIET 2006 Sistemas Distribuidos (Prof. María Feldgen) 23

Interacción

Cliente StubCliente

Server StubServer

ENTIDAD DE TRANSPORTE ENTIDAD DE TRANSPORTE

1

1092 3

8

745

6

Host del usuario (cliente) Host remoto (server)

FIUBA-EGRIET 2006 Sistemas Distribuidos (Prof. María Feldgen) 24

Operación Básica de RPC

Cliente

Call

Retorno

PackParametros

UnpackParametros

Kernel

Server

Call

RetornoPackParametros

UnpackParametros

Kernel

Stub Cliente Stub Server

Page 13: Sistemas Distribuidos 4. Ambientes de Programación Cliente-Servidor …materias.fi.uba.ar/sweb/1c-2006/sisdis06_4.pdf · 2006-04-05 · aplicación y sus datos almacenados (servidor)

Sistemas Distribuidos

Prof. María Feldgen - Curso 2006 13

FIUBA-EGRIET 2006 Sistemas Distribuidos (Prof. María Feldgen) 25

EjemploParameter Marshalling

n = suma (4, 7)

Kernel Kernel

suma

46

mensajesuma

46

mensaje suma (i, j)

int i, j ;{

return (i + j) ;

}

FIUBA-EGRIET 2006 Sistemas Distribuidos (Prof. María Feldgen) 26

Implementación del protocolo

• Esquema request - reply• Exclusión mutua en el server de

procedimientos de un mismo programa.• Sobre TCP o UDP manteniendo la semántica

de la capa de transporte• Estrategia simple de time out y

retransmisión.

Page 14: Sistemas Distribuidos 4. Ambientes de Programación Cliente-Servidor …materias.fi.uba.ar/sweb/1c-2006/sisdis06_4.pdf · 2006-04-05 · aplicación y sus datos almacenados (servidor)

Sistemas Distribuidos

Prof. María Feldgen - Curso 2006 14

FIUBA-EGRIET 2006 Sistemas Distribuidos (Prof. María Feldgen) 27

Semántica de RPC

• CAIDA DEL SERVER– La operación entre

cliente y server sepuede repetir o no

dependiendo del tipo deoperación:

• Idempotente (puederepetirse n veces)

• Exactamente una vez• A lo sumo una vez

• Por lo menos una vez

• Caida del Cliente:– Tratamiento de

huérfanos:• Exterminio• Expiración• Reencarnación• Reencarnación gentil

FIUBA-EGRIET 2006 Sistemas Distribuidos (Prof. María Feldgen) 28

Binding

• Binding dinámico:– El cliente localiza al server en forma dinámica,

no se usan ports fijos.• Especificación formal del servicio:

– Nombre del servicio– Número de versión– Lista de procedimientos provistos por ese servicio

con sus parámetros indicando tipo:• in, out , in-out

Page 15: Sistemas Distribuidos 4. Ambientes de Programación Cliente-Servidor …materias.fi.uba.ar/sweb/1c-2006/sisdis06_4.pdf · 2006-04-05 · aplicación y sus datos almacenados (servidor)

Sistemas Distribuidos

Prof. María Feldgen - Curso 2006 15

FIUBA-EGRIET 2006 Sistemas Distribuidos (Prof. María Feldgen) 29

RPC

Prog.Cliente Prog.Server

Portmapper

Porta

Port b

Port c

12

3

Host cliente

Host server

ProgramaCliente

StubCliente

StubServer

ProgramaServer

StubServer

Wait

Listening

Host cliente

Comunicación RPC

Transportey la red

Request

Reply

Host server

Call Input Output

Register Nombre,Versión, Handle, Id.único

Deregister Nombre,Versión, Id.

Lookup Nombre, Versión Handle,Id.

Interface del binder

Portmapper o Rpcbind

FIUBA-EGRIET 2006 Sistemas Distribuidos (Prof. María Feldgen) 30

Representación de datos en RPC

• XDR (eXternal Data Representation):– Libreria de rutinas para convertir :

• datos individuales del formato interno a unarepresentación general XDR.

• datos complejos (estructuras) usados para definirmensajes RPC.

Aplicación

XDR

RPC

TCP | UDP

Stack de protocolosen ambiente TCP/IP

Capa de presentación

Page 16: Sistemas Distribuidos 4. Ambientes de Programación Cliente-Servidor …materias.fi.uba.ar/sweb/1c-2006/sisdis06_4.pdf · 2006-04-05 · aplicación y sus datos almacenados (servidor)

Sistemas Distribuidos

Prof. María Feldgen - Curso 2006 16

FIUBA-EGRIET 2006 Sistemas Distribuidos (Prof. María Feldgen) 31

Mecanismos de programaciónusando ONC RPC

– Librerias XDR– Librerias Run Time: que permiten efectuar:

• llamadas (call) a procedimientos remotos• registrar servicios con el port mapper• despachar una llamada

– Un generador de programas (rpcgen):• que produce parte del codigo necesario en “C” para construir

un programa distribuido que utiliza RPC.– Ejecución de los procedimientos del server:

• Exclusión mutua o• Trabajar a nivel sockets con el inetd.

FIUBA-EGRIET 2006 Sistemas Distribuidos (Prof. María Feldgen) 32

Rutinas de Libreria de alto nivel delONC RPC

• En el server:– Registrar el servicio en el portmapper:

• #include <rpc/rpc.h>int registerrpc (prognum, versnum, procnum,

procname, inproc, outproc);u_long prognum, versnum, procnum;char * (*procname) ( );xdrproc_t inproc, outproc; /*filtros */

– Espera por un cliente sobre un socket con:• void svc_run( );

Page 17: Sistemas Distribuidos 4. Ambientes de Programación Cliente-Servidor …materias.fi.uba.ar/sweb/1c-2006/sisdis06_4.pdf · 2006-04-05 · aplicación y sus datos almacenados (servidor)

Sistemas Distribuidos

Prof. María Feldgen - Curso 2006 17

FIUBA-EGRIET 2006 Sistemas Distribuidos (Prof. María Feldgen) 33

Rutinas de Libreria de alto nivel delONC RPC

En el cliente:– Encontrar y ejecutar un servicio (UDP):

• #include <rpc/rpc.h>int callrpc (host, prognum, versnum, procnum,

inproc in, outproc out);char *host;u_long prognum, versnum, procnum;char * in, out;xdrproc_t inproc, outproc; /*filtros */

FIUBA-EGRIET 2006 Sistemas Distribuidos (Prof. María Feldgen) 34

ONC RPC

registerrpc( )portmapper Server

svc-run( )

invoca serviciocall servicio

Ejecuciónservicio

Devolución de resultadosPedido completo

ret = callrpc( )

Return (respuesta)

Programa continúa

Cliente

función callrpc(host, prog, progver, procnum, inproc, in, outproc, out)

Host Cliente Host Server

Page 18: Sistemas Distribuidos 4. Ambientes de Programación Cliente-Servidor …materias.fi.uba.ar/sweb/1c-2006/sisdis06_4.pdf · 2006-04-05 · aplicación y sus datos almacenados (servidor)

Sistemas Distribuidos

Prof. María Feldgen - Curso 2006 18

FIUBA-EGRIET 2006 Sistemas Distribuidos (Prof. María Feldgen) 35

Rutinas de Libreria de nivel menor delONC RPC

Desarrollo de aplicaciones con el rpcgenProgramaCliente

Proced. Server

Q.x rpcgen

Q_clnt. c

Q.h

Q_xdr.c

Q_svc.c CompiladorC

RPC RuntimeLibrary

CompiladorC

cliente

server

FIUBA-EGRIET 2006 Sistemas Distribuidos (Prof. María Feldgen) 36

Lenguaje

• Tipos de datos soportados con XDR:– escalares– compuestos– opaque (pasar datos sin traducción)

• Declaración de procedimientos:– Procedimientos con un parametro de in (input).

(Equivalente a “función” del Pascal).– Provee union: para una combinacion entre codigo de

retorno y resultados para la definición de tipo de lafunción.

Page 19: Sistemas Distribuidos 4. Ambientes de Programación Cliente-Servidor …materias.fi.uba.ar/sweb/1c-2006/sisdis06_4.pdf · 2006-04-05 · aplicación y sus datos almacenados (servidor)

Sistemas Distribuidos

Prof. María Feldgen - Curso 2006 19

FIUBA-EGRIET 2006 Sistemas Distribuidos (Prof. María Feldgen) 37

Ejemplo ONC RPCTradicional con parámetros in

printmsg

printmessage

msg códigoretorno

En una máquina sin RPC

rprintmsg

msg_clnt

msg códigoretorno

msg_svc

printmessage

msg códigoretorno

Esquema Cliente - servidor con RPC

Printmessagestub

rprintmsgstub

msg códigoretorno

Host A Host B

FIUBA-EGRIET 2006 Sistemas Distribuidos (Prof. María Feldgen) 38

Ejemplo ONC RPC con parámetros in y out

printmsg

printmessage

msg cód.retorno +mensaje

En una máquina sin RPC

msg_svc +xdr_msg

printmessage

msgcód.retorno +

mensaje

Esquema Cliente - servidor con RPC

rprintmsg

msg_clnt +xdr_msg

msg cód.retorno +mensaje

Printmessagestub

rprintmsgstubxdr(msg)

xdr(códretorno +mensaje)

Host A Host B