La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

INF 1400Redes de Computadores 1 INF 1400: Redes de Computadores Jorge Baier Alvaro Soto Departamento de Ciencias de la Computación P. Universidad Católica.

Presentaciones similares


Presentación del tema: "INF 1400Redes de Computadores 1 INF 1400: Redes de Computadores Jorge Baier Alvaro Soto Departamento de Ciencias de la Computación P. Universidad Católica."— Transcripción de la presentación:

1 INF 1400Redes de Computadores 1 INF 1400: Redes de Computadores Jorge Baier Alvaro Soto Departamento de Ciencias de la Computación P. Universidad Católica de Chile Modelo Cliente Servidor Sockets y RPC

2 INF 1400Redes de Computadores 2 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, , www

3 INF 1400Redes de Computadores 3 Conceptos Básicos Procesos Servidores manejan recursos y proveen servicios a clientes que desean utilizar este recurso. Ej.- ftp, web server, ... 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 1400Redes de Computadores 4 Protocolo La 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 procesa requerimiento 4. Cliente procesa respuesta Ej. Web browser y web server Protocolo 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 1400Redes de Computadores 5 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 1400Redes de Computadores 6 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 1400Redes de Computadores 7 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 1400Redes de Computadores 8 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 Cliente 1 Host B Requerimiento Respuesta Socket Sockets Como Modelo Cliente Servidor

9 INF 1400Redes de Computadores 9 Servidor bind() listen() accept() read() write() close() Cliente socket() connect() write() close() socket() 1: Requerimiento de Connección 2. Envia comando 3. Recibe resultado read() * indica llamada a función bloqueadora * * * * Ack del requerimiento Interface Usada Por Sockets

10 INF 1400Redes de Computadores 10 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 1400Redes de Computadores 11 (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 1400Redes de Computadores 12 Servidor socketsocket 1socket 2 Cliente 1 socket Cliente 2 socket Listen/Connect

13 INF 1400Redes de Computadores 13 (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 1400Redes de Computadores 14 * indica llamada a función bloqueadora SERVIDOR bind() listen() accept() read() CLIENTE socket() connect() write() close() socket() * * * 1: Requerimiento de connección 2. Envía comando 3. Recibe resultado read() write() * 4. FIN Sockets Terminando la Sesión

15 INF 1400Redes de Computadores 15 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 1400Redes de Computadores 16 Paso 2 bind(_) : connecta un proceso a una puerta específica 6500 Servidor Números de puerta: 0~1023: Reservados Port 21: FTP Port 23: telnet Port 80: HTTP : disponibles a usuario Puerta Puerta = punto de connección para dos procesos usando sockets Sockets: Binding

17 INF 1400Redes de Computadores 17 Paso 3: listen(_) 6500 Buffer Especifíca máximo número de connecciones antes de rechazar requerimientos de connección listen (socket_id, number_of_connection); listen( ): prepara buffers de memoria para connecciones con clientes Servidor Sockets: Listen

18 INF 1400Redes de Computadores 18 Step 4 - Part 1 accept(_): el servidor acepta el requerimiento del cliente Servidor Cliente 6500 accept ( ) es una función bloqueadora Sockets: Accept

19 INF 1400Redes de Computadores 19 Paso 4 - Parte 1 accept(_) : acepta connección desde el cliente creando un nuevo socket y elegiendo una nueva puerta Cliente Servidor Una nueva puerta es elegida por el OS OS duplica la connección Sockets: Accept

20 INF 1400Redes de Computadores 20 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 1400Redes de Computadores 21 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 1400Redes de Computadores 22 Paso 6: close (_) Client Server 7100 El segundo socket es cerrado por el cliente 6500 Sockets: Close

23 INF 1400Redes de Computadores 23 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 1400Redes de Computadores 24 RPC Programas 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 1400Redes de Computadores 25 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 Procedimiento B Host 1 Host 2

26 INF 1400Redes de Computadores 26 Llamada a Procedimientos

27 INF 1400Redes de Computadores 27 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 1400Redes de Computadores 28 RPC: Stubs

29 INF 1400Redes de Computadores 29 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 1400Redes de Computadores 30 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 1400Redes de Computadores 31 RPC: Ejemplo /* rational.x */ #include "defs.h" program RATIONALSPROG { version RATIONALSVERS { st_rational suma(st_pair) = 1; float rational2float(st_rational) = 2; } = 1; } = 0x ; struct st_rational { int num; int den; }; struct st_pair { st_rational A; st_rational B; }; Archivo de especificación

32 INF 1400Redes de Computadores 32 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 1400Redes de Computadores 33 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 1400Redes de Computadores 34 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 1400Redes de Computadores 35 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; }


Descargar ppt "INF 1400Redes de Computadores 1 INF 1400: Redes de Computadores Jorge Baier Alvaro Soto Departamento de Ciencias de la Computación P. Universidad Católica."

Presentaciones similares


Anuncios Google