INF 1400 Redes de Computadores INF 1400 Redes
- Slides: 35
INF 1400 Redes de Computadores 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
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 2
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 3
INF 1400 Redes de Computadores 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 1. Cliente envia requerimiento Cliente 4. Cliente procesa respuesta Servidor 3. Servidor envia respuesta Recurso 2. Servidor procesa requerimiento 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 4
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 5
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 6
INF 1400 Redes de Computadores Connección Virtual Entre 2 Procesos Host A Proceso 1 Host B Socket (connección virtual) Proceso 2 Información Tarjetas de red Red (connección física) 7
INF 1400 Redes de Computadores Sockets Como Modelo Cliente Servidor El servidor debe estar siempre esperando requerimientos. El cliente hace el requerimiento y el servidor responde. Host C Cliente 2 socket Host A Servidor Cliente 3 Host B Requerimiento Respuesta Socket Cliente 1 8
INF 1400 Redes de Computadores Interface Usada Por Sockets Servidor socket() “*” indica llamada a función bloqueadora Cliente socket() bind() listen() 1: Requerimiento de Connección connect() to * accept() * read() write() close() del k c A * ien m i r e qu re write() 2. Envia comando 3. Recibe resultado read() * close() 9
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 ? 10
INF 1400 Redes de Computadores Funciones y Parámetros en Servidor (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_len); (6) write (send) data: write (socket_id, buffer_len); (7) close socket: close(socket_id); 11
INF 1400 Redes de Computadores Listen/Connect Servidor socket 1 socket 2 socket Cliente 1 Cliente 2 12
INF 1400 Redes de Computadores Funciones y Parámetros en Cliente (1) create socket: igual que servidor socket_id = socket (AF_INET, SOCK_STREM, DEFAULT_PROTOCOL); (2) connect socket: connect (socket_id, server. INETaddress, server_len); (3) write (send) data: write (socket_id, buffer_len); (4) read (receive) data: read (socket_id, buffer_len); (5) close socket: igual que servidor close(socket_id); 13
INF 1400 Redes de Computadores Sockets Terminando la Sesión SERVIDOR socket() “*” indica llamada a función bloqueadora CLIENTE socket() bind() listen() * accept() * read() 1: Requerimiento de connección connect() * write() 2. Envía comando 3. Recibe resultado 4. FIN read() * close() 14
INF 1400 Redes de Computadores Socket: Creación Paso 1 socket(_): crea el identificador del socket • Prepara la estructura de datos para manejar el socket • OS es el responsable Server 15
INF 1400 Redes de Computadores Sockets: Binding Paso 2 bind(_) : connecta un proceso a una puerta específica Puerta = 6500 Servidor punto de connección para dos procesos usando sockets Números de puerta: 0~1023: Reservados Port 21: FTP Port 23: telnet Port 80: HTTP 1024 - 65535: disponibles a usuario 16
INF 1400 Redes de Computadores Sockets: Listen Paso 3: listen(_) listen( ): prepara buffers de memoria para connecciones con clientes Buffer 6500 listen (socket_id, number_of_connection); Servidor Especifíca máximo número de connecciones antes de rechazar requerimientos de connección 17
INF 1400 Redes de Computadores Sockets: Accept Step 4 - Part 1 accept(_): el servidor acepta el requerimiento del cliente 6500 Cliente Servidor accept ( ) es una función bloqueadora 18
INF 1400 Redes de Computadores Sockets: Accept Paso 4 - Parte 1 accept(_) : acepta connección desde el cliente creando un nuevo socket y elegiendo una nueva puerta 6500 Servidor Cliente 7100 OS duplica la connección Una nueva puerta es elegida por el OS 19
INF 1400 Redes de Computadores Sockets: Read/Write Paso 5 - Parte 1: read(_) y write() 6500 Servidor Cliente 7100 Transmissión de datos El servidor y el cliente se comunican usando el segundo socket 20
INF 1400 Redes de Computadores Sockets: Nuevas Connecciones Paso 5 -Parte 2: el socket original vuelve al paso 4, i. e. , la función accept() 6500 Client Server 21
INF 1400 Redes de Computadores Sockets: Close Paso 6: close (_) 6500 Server Client 7100 El segundo socket es cerrado por el cliente 22
INF 1400 Redes de Computadores Llamadas Remotas a Procedimientos: 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 23
INF 1400 Redes de Computadores 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 24
INF 1400 Redes de Computadores RPC: 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 – Host 1 Host 2 Proceso A Stub del servidor Stub del cliente Procedimiento B 25
INF 1400 Redes de Computadores Llamada a Procedimientos 26
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 27
INF 1400 Redes de Computadores RPC: Stubs 28
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 29
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 30
INF 1400 Redes de Computadores RPC: Ejemplo • Archivo de especificación /* rational. x */ #include "defs. h" program RATIONALSPROG { version RATIONALSVERS { st_rational suma(st_pair) = 1; float rational 2 float(st_rational) = 2; } = 1; } = 0 x 20000001; struct st_rational { int num; int den; }; struct st_pair { st_rational A; st_rational B; }; 31
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 2 float_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; 32
INF 1400 Redes de Computadores RPC: Ejemplo • Programa Cliente result_1 = suma_1(&suma_1_arg, clnt); if (result_1 == (st_rational *) NULL) { clnt_perror (clnt, "call failed"); } rational 2 float_1_arg. num = 3; rational 2 float_1_arg. den = 4; result_2 = rational 2 float_1(&rational 2 float_1_arg, clnt); if (result_2 == (float *) NULL) { clnt_perror (clnt, "call failed"); } clnt_destroy (clnt); printf("1/4 + 3/4 = %d/%dn", result_1 ->num, result_1 ->den); printf("3/4 = %fn", *result_2); } 33
INF 1400 Redes de Computadores RPC: Ejemplo • Programa Cliente int main (int argc, char *argv[]) { char *host; if (argc < 2) { printf ("usage: %s server_hostn", argv[0]); exit (1); } host = argv[1]; rationalsprog_1 (host); exit (0); } 34
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 * rational 2 float_1_svc(st_rational *argp, struct svc_req *rqstp) { static float result; result = (float)argp->num / (float)argp->den; return &result; } 35
- Redes de computadores
- Redes de computadores
- Fundamentos de redes de computadores
- Protocolo link state
- Stallings william comunicaciones y redes de computadores
- Rede de computadores
- Computadoras antiguas
- Classificação dos computadores
- Organização de computadores
- Rede de computadores
- Organização e arquitetura de computadores
- Ensamble y mantenimiento de computadores
- Organização de computadores
- Arquitetura de computadores
- Computadores
- Clasificación de mantenimiento
- Micrologic 1400
- Ct-1400
- Esplorazioni geografiche 1400
- A trader mixes 26 kg of rice
- 300/1400
- Lucofin 1400 mn
- Agean art
- 1400-375
- Cerenol
- Pbb dari 220 dan 1400
- Pbb dari 220 dan 1400
- Renaissance art vocabulary
- 1400*74
- Ottoman empire 1400
- 3800 bce
- Japan 1400
- Lexile range by grade
- What mountain range did the incas live in
- Landmarks in humanities
- Map of asia 1400