inf 1400: redes de computadores

Post on 14-Jan-2016

33 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

DESCRIPTION

INF 1400: Redes de Computadores. Modelo Cliente Servidor Sockets y RPC. Jorge Baier Alvaro Soto Departamento de Ciencias de la Computación P. Universidad Católica de Chile. Conceptos Básicos. Modelo Cliente servidor Grupo de procesos que cooperan - PowerPoint PPT Presentation

TRANSCRIPT

1

INF 1400 Redes de Computadores

INF 1400: Redes de Computadores

Jorge BaierAlvaro Soto

Departamento de Ciencias de la ComputaciónP. Universidad Católica de Chile

Modelo Cliente ServidorSockets y RPC

2

INF 1400 Redes de Computadores

Conceptos Básicos

Modelo Cliente servidor• Grupo de procesos que cooperan• Existen procesos que proveen servicios: servidores• Existen procesos que requieren servicios: clientes• Clientes y Servidores son procesos de usuario• Los clientes efectúan requerimientos al servidor y

reciben una respuesta de éste• Ejemplos de servicios típicos: impresión, email, www

3

INF 1400 Redes de Computadores

Conceptos Básicos

Procesos• Servidores manejan recursos y proveen servicios a

clientes que desean utilizar este recurso. Ej.- ftp, web server, email...

• Clientes usan servicios para lograr objetivos• Clientes son activos, piden servicios• Servidores son pasivos, esperan solicitudes

Procesadores• Sólo un proceso• Múltiples servidores• Múltiples clientes• Mezcla de clientes y servidores

4

INF 1400 Redes de Computadores

ProtocoloLa operación fundamental es la Transacción

• Cliente necesita un servicio y envía mensaje de solicitud• Servidor recibe solicitud, lo interpreta, y manipula su recurso en

la forma apropiada • Servidor envía resultado o código de error• Cliente procesa respuesta

Cliente Servidor

1. Cliente envia requerimiento

3. Servidor envia respuesta

Recurso

2. Servidor procesarequerimiento

4. Cliente procesa respuesta

Ej. Web browser y web serverProtocolo es simple y eficiente

• Respuesta sirve como confirmación (ACK) para la solicitud• Basta con dos rutinas de comunicación:

• send(destino, mensaje)• receive(dirección, mensaje)• muchas variaciones posibles

5

INF 1400 Redes de Computadores

Equivalencia con Modelo OSI

Sólo tres niveles son necesario

Niveles 1 y 2 transmiten los mensajes

Nivel 5 es el protocolo de solicitud-respuesta• Define solicitudes válidas• Define respuestas válidas

6

INF 1400 Redes de Computadores

Sockets

Que es un socket ?• Un socket es una connección virtual que permite

comunicar dos procesos• Sockets proveen una transmisión bi-direccional (full

duplex)• Como conecciones virtuales, los sockets pueden ser

creados en forma dinámica• La interface de sockets fue desarrollada a principios

de los 80´ en la universidad de Berkeley• Sockets son la herramienta de comunicación más

utilizada en aplicaciones de internet. TCP/IP usa sockets

7

INF 1400 Redes de Computadores

Red(connección física)

Host B

Proceso 2

Host A

Proceso 1

Tarjetas de red

Información

Socket

(connección virtual)

Connección Virtual Entre 2 Procesos

8

INF 1400 Redes de Computadores

Servidor

Host A

El servidor debe estar siempre esperando requerimientos. El cliente hace el requerimiento y el servidor responde.

Cliente 2

Cliente 3

Host C

socket

socket

Cliente 1

Host BRequerimientoRespuesta

Socket

Sockets Como Modelo Cliente Servidor

9

INF 1400 Redes de Computadores

Servidor

bind()

listen()

accept()

read()

write()

close()

Cliente

socket()

connect()

write()

close()

socket()

1: Requerimiento de Connección

2. Envia comando

3. Recibe resultadoread()

“*” indica llamada a función bloqueadora

*

*

*

*Ack del requerimiento

Interface Usada Por Sockets

10

INF 1400 Redes de Computadores

Direcciones, Puertas y Sockets

• Ej.- • Uno es la aplicación y vive en un edificio de

departamentos

• La dirección esta dada por la ubicación del edificio

• El servicio de correo es la red

• El socket es la llave que permite dejar correo en la casilla correspondiente del edificio

• Además uno puede enviar cartas dejándolas en la casilla

• Como elegir la puerta a la que se conecta un socket ?

11

INF 1400 Redes de Computadores

(1) create socket: int socket(int domain, int type, int protocol); socket_id = socket (AF_INET, SOCK_STREM, DEFAULT_PROTOCOL);(2) bind socket: bind (socket_id, server_addr, server_len);(3) listen to socket: listen (socket_id, number_of_connection);(4) accept a connection: accept (socket_id, &client_addr, &client_len);(5) read (receive) data: read (socket_id, buffer, buffer_len); (6) write (send) data: write (socket_id, buffer, buffer_len);(7) close socket: close(socket_id);

Funciones y Parámetros en Servidor

12

INF 1400 Redes de Computadores

Servidor

socket

socket 1 socket 2

Cliente 1

socket

Cliente 2

socket

Listen/Connect

13

INF 1400 Redes de Computadores

(1) create socket: igual que servidor socket_id = socket (AF_INET, SOCK_STREM, DEFAULT_PROTOCOL);

(2) connect socket: connect (socket_id, serverINETaddress, server_len);

(3) write (send) data: write (socket_id, buffer, buffer_len);

(4) read (receive) data: read (socket_id, buffer, buffer_len);

(5) close socket: igual que servidor close(socket_id);

Funciones y Parámetros en Cliente

14

INF 1400 Redes de Computadores

“*” indica llamada a función bloqueadoraSERVIDOR

bind()

listen()

accept()

read()

CLIENTE

socket()

connect()

write()

close()

socket()

*

*

*

1: Requerimiento de connección

2. Envía comando

3. Recibe resultadoread()write()

*

4. FIN

Sockets Terminando la Sesión

15

INF 1400 Redes de Computadores

Server

Paso 1 socket(_): crea el identificador del socket• Prepara la estructura de datos para manejar el socket

• OS es el responsable

Socket: Creación

16

INF 1400 Redes de Computadores

Paso 2 bind(_) : connecta un proceso a una puerta específica

6500

ServidorNúmeros de puerta:

0~1023: Reservados Port 21: FTP Port 23: telnet Port 80: HTTP

1024- 65535: disponibles a usuario

Puerta

Puerta =

punto de connección para dosprocesos usando sockets

Sockets: Binding

17

INF 1400 Redes de Computadores

Paso 3: listen(_)

6500

Buffer

Especifíca máximo número de connecciones antes de rechazarrequerimientos de connección

listen (socket_id, number_of_connection);

listen( ): prepara buffers de memoriapara connecciones con clientes

Servidor

Sockets: Listen

18

INF 1400 Redes de Computadores

Step 4 - Part 1 accept(_): el servidor acepta el requerimiento del cliente

Servidor

Cliente6500

accept ( ) es una función bloqueadora

Sockets: Accept

19

INF 1400 Redes de Computadores

Paso 4 - Parte 1 accept(_) : acepta connección desde el clientecreando un nuevo socket y elegiendo una nueva puerta

Cliente

Servidor 7100

6500

Una nueva puerta es elegida por el OS

OS duplica la connección

Sockets: Accept

20

INF 1400 Redes de Computadores

Paso 5- Parte 1: read(_) y write()

Cliente

Servidor

7100

El servidor y el cliente se comunican usando el segundo socket

6500

Transmissión de datos

Sockets: Read/Write

21

INF 1400 Redes de Computadores

Paso 5-Parte 2: el socket original vuelve al paso 4, i.e., la función accept()

Client

Server

6500

Sockets: Nuevas Connecciones

22

INF 1400 Redes de Computadores

Paso 6: close (_)

Client

Server 7100

El segundo socket es cerrado por el cliente

6500

Sockets: Close

23

INF 1400 Redes de Computadores

Llamadas Remotas a Procedimientos:RPC

RPC: Birrel y Nelson, 1984• RPC permite la ejecución de procedimientos en

máquinas remotas• Procedimientos ?, lenguaje de programación procedural• Aún cuando es independiente del lenguaje de

programación la mayoría de las implementaciones usan C

Proceso en A llama a un procedimiento en B• Proceso A es suspendido mientras espera respuesta de

B• Ejecución del procedimiento ocurre en B• B envia resultado del procedimiento• Proceso en A continúa

24

INF 1400 Redes de Computadores

RPCProgramas no distinguen llamadas remotas de locales

• Información se comunica en argumentos y resultados• Paso de mensajes en invisible, RPC se encarga de los

detalles

Algunos inconvenientes• Dos espacios de direccionamiento• Máquinas con distintas representaciones de datos• Falla de máquinas

25

INF 1400 Redes de Computadores

RPC: Stubs

Stubs: procesos adicionales que son agregados para implementar la interface RPC

– Client Stub : reemplaza la llamada al procedimiento– Server Stub : reemplaza la llamada al procedimiento

Proceso A

Stub del cliente

Stub del servidor

ProcedimientoB

Host 1 Host 2

26

INF 1400 Redes de Computadores

Llamada a Procedimientos

27

INF 1400 Redes de Computadores

RPC: Stubs

Llamada remota a procedimiento debe parecer llamada normal

• Tanto a quien llama como a quien es llamado

Esquema similar a rutinas que llaman al sistema (ej.- read)• Uso de stub: procedimiento es sólo una interfaz• Cliente hace llamada de la manera usual• Servidor recibe llamada de la manera usual• Stubs esconden detalles• Stubs se generan en forma automática

28

INF 1400 Redes de Computadores

RPC: Stubs

29

INF 1400 Redes de Computadores

RPC: Paso a Paso

• Cliente llama al stub del cliente de la manera usual• Stub del cliente construye un mensaje y se lo pasa al

núcleo• Núcleo envía el mensaje al núcle remoto• Núcleo remoto pasa el mensaje al stub del servidor• Stub del servidor saca los argumentos y llama al servidor de

la manera usual• Servidor realiza el trabajo y retorna al stub del servidor• Stub del servidor empaqueta el resultado en un mensaje y

se lo pasa al núcleo• Núcleo remoto envía el mensaje al núcleo del cliente• Núcleo del cliente pasa el mensaje al stub del cliente• Stub del cliente saca el resultado y lo retorna al cliente

30

INF 1400 Redes de Computadores

RPC: Paso de Parámetros• En máquinas identicas los tipos escalares no tienen

problemas

• Sistemas heterogéneos:• Representación de enteros• Representación de punto flotante• Little vs. Big endian

• Tipos de datos conocidos por el cliente y el servidor

• Forma canónica para representar información• hton y ntoh• Maquinas idénticas: conversiones inútiles

• Paso de punteros y parámetros por referencia

31

INF 1400 Redes de Computadores

RPC: Ejemplo

/* rational.x */

#include "defs.h"

program RATIONALSPROG {

version RATIONALSVERS {

st_rational suma(st_pair) = 1;

float rational2float(st_rational) = 2;

} = 1;

} = 0x20000001;

struct st_rational {

int num;

int den;

};

struct st_pair {

st_rational A;

st_rational B;

};

• Archivo de especificación

32

INF 1400 Redes de Computadores

RPC: Ejemplo• Programa Cliente

/* rational_client.c */

#include "rational.h"

void rationalsprog_1(char *host) {

CLIENT *clnt;

st_rational *result_1;

st_pair suma_1_arg;

float *result_2;

st_rational rational2float_1_arg;

clnt = clnt_create (host, RATIONALSPROG, RATIONALSVERS, "udp");

if (clnt == NULL) {

clnt_pcreateerror (host);

exit (1);

}

suma_1_arg.A.num = 1;

suma_1_arg.A.den = 4;

suma_1_arg.B.num = 3;

suma_1_arg.B.den = 4;

33

INF 1400 Redes de Computadores

result_1 = suma_1(&suma_1_arg, clnt);

if (result_1 == (st_rational *) NULL) {

clnt_perror (clnt, "call failed");

}

rational2float_1_arg.num = 3;

rational2float_1_arg.den = 4;

result_2 = rational2float_1(&rational2float_1_arg, clnt);

if (result_2 == (float *) NULL) {

clnt_perror (clnt, "call failed");

}

clnt_destroy (clnt);

printf("1/4 + 3/4 = %d/%d\n", result_1->num, result_1->den);

printf("3/4 = %f\n", *result_2);

}

RPC: Ejemplo• Programa Cliente

34

INF 1400 Redes de Computadores

int main (int argc, char *argv[]) {

char *host;

if (argc < 2) {

printf ("usage: %s server_host\n", argv[0]);

exit (1);

}

host = argv[1];

rationalsprog_1 (host);

exit (0);

}

RPC: Ejemplo• Programa Cliente

35

INF 1400 Redes de Computadores

RPC: Ejemplo• Programa Servidor

/* rational_server.c */

#include "rational.h"

st_rational *suma_1_svc(st_pair *argp, struct svc_req *rqstp) {

static st_rational result;

result.num = argp->A.num*argp->B.den + argp->A.den*argp->B.num;

result.den = argp->A.den * argp->B.den;

return &result;

}

float * rational2float_1_svc(st_rational *argp, struct svc_req *rqstp) {

static float result;

result = (float)argp->num / (float)argp->den;

return &result;

}

top related