inf 1400redes de computadores 1 inf 1400: redes de computadores jorge baier alvaro soto departamento...
TRANSCRIPT
![Page 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](https://reader033.vdocuments.mx/reader033/viewer/2022061304/54fd84f44a7959887e8b494a/html5/thumbnails/1.jpg)
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
![Page 2: 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](https://reader033.vdocuments.mx/reader033/viewer/2022061304/54fd84f44a7959887e8b494a/html5/thumbnails/2.jpg)
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
![Page 3: 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](https://reader033.vdocuments.mx/reader033/viewer/2022061304/54fd84f44a7959887e8b494a/html5/thumbnails/3.jpg)
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
![Page 4: 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](https://reader033.vdocuments.mx/reader033/viewer/2022061304/54fd84f44a7959887e8b494a/html5/thumbnails/4.jpg)
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
![Page 5: 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](https://reader033.vdocuments.mx/reader033/viewer/2022061304/54fd84f44a7959887e8b494a/html5/thumbnails/5.jpg)
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
![Page 6: 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](https://reader033.vdocuments.mx/reader033/viewer/2022061304/54fd84f44a7959887e8b494a/html5/thumbnails/6.jpg)
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
![Page 7: 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](https://reader033.vdocuments.mx/reader033/viewer/2022061304/54fd84f44a7959887e8b494a/html5/thumbnails/7.jpg)
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
![Page 8: 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](https://reader033.vdocuments.mx/reader033/viewer/2022061304/54fd84f44a7959887e8b494a/html5/thumbnails/8.jpg)
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
![Page 9: 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](https://reader033.vdocuments.mx/reader033/viewer/2022061304/54fd84f44a7959887e8b494a/html5/thumbnails/9.jpg)
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
![Page 10: 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](https://reader033.vdocuments.mx/reader033/viewer/2022061304/54fd84f44a7959887e8b494a/html5/thumbnails/10.jpg)
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 ?
![Page 11: 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](https://reader033.vdocuments.mx/reader033/viewer/2022061304/54fd84f44a7959887e8b494a/html5/thumbnails/11.jpg)
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
![Page 12: 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](https://reader033.vdocuments.mx/reader033/viewer/2022061304/54fd84f44a7959887e8b494a/html5/thumbnails/12.jpg)
12
INF 1400 Redes de Computadores
Servidor
socket
socket 1 socket 2
Cliente 1
socket
Cliente 2
socket
Listen/Connect
![Page 13: 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](https://reader033.vdocuments.mx/reader033/viewer/2022061304/54fd84f44a7959887e8b494a/html5/thumbnails/13.jpg)
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
![Page 14: 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](https://reader033.vdocuments.mx/reader033/viewer/2022061304/54fd84f44a7959887e8b494a/html5/thumbnails/14.jpg)
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
![Page 15: 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](https://reader033.vdocuments.mx/reader033/viewer/2022061304/54fd84f44a7959887e8b494a/html5/thumbnails/15.jpg)
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
![Page 16: 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](https://reader033.vdocuments.mx/reader033/viewer/2022061304/54fd84f44a7959887e8b494a/html5/thumbnails/16.jpg)
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
![Page 17: 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](https://reader033.vdocuments.mx/reader033/viewer/2022061304/54fd84f44a7959887e8b494a/html5/thumbnails/17.jpg)
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
![Page 18: 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](https://reader033.vdocuments.mx/reader033/viewer/2022061304/54fd84f44a7959887e8b494a/html5/thumbnails/18.jpg)
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
![Page 19: 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](https://reader033.vdocuments.mx/reader033/viewer/2022061304/54fd84f44a7959887e8b494a/html5/thumbnails/19.jpg)
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
![Page 20: 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](https://reader033.vdocuments.mx/reader033/viewer/2022061304/54fd84f44a7959887e8b494a/html5/thumbnails/20.jpg)
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
![Page 21: 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](https://reader033.vdocuments.mx/reader033/viewer/2022061304/54fd84f44a7959887e8b494a/html5/thumbnails/21.jpg)
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
![Page 22: 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](https://reader033.vdocuments.mx/reader033/viewer/2022061304/54fd84f44a7959887e8b494a/html5/thumbnails/22.jpg)
22
INF 1400 Redes de Computadores
Paso 6: close (_)
Client
Server 7100
El segundo socket es cerrado por el cliente
6500
Sockets: Close
![Page 23: 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](https://reader033.vdocuments.mx/reader033/viewer/2022061304/54fd84f44a7959887e8b494a/html5/thumbnails/23.jpg)
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
![Page 24: 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](https://reader033.vdocuments.mx/reader033/viewer/2022061304/54fd84f44a7959887e8b494a/html5/thumbnails/24.jpg)
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
![Page 25: 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](https://reader033.vdocuments.mx/reader033/viewer/2022061304/54fd84f44a7959887e8b494a/html5/thumbnails/25.jpg)
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
![Page 26: 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](https://reader033.vdocuments.mx/reader033/viewer/2022061304/54fd84f44a7959887e8b494a/html5/thumbnails/26.jpg)
26
INF 1400 Redes de Computadores
Llamada a Procedimientos
![Page 27: 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](https://reader033.vdocuments.mx/reader033/viewer/2022061304/54fd84f44a7959887e8b494a/html5/thumbnails/27.jpg)
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
![Page 28: 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](https://reader033.vdocuments.mx/reader033/viewer/2022061304/54fd84f44a7959887e8b494a/html5/thumbnails/28.jpg)
28
INF 1400 Redes de Computadores
RPC: Stubs
![Page 29: 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](https://reader033.vdocuments.mx/reader033/viewer/2022061304/54fd84f44a7959887e8b494a/html5/thumbnails/29.jpg)
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
![Page 30: 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](https://reader033.vdocuments.mx/reader033/viewer/2022061304/54fd84f44a7959887e8b494a/html5/thumbnails/30.jpg)
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
![Page 31: 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](https://reader033.vdocuments.mx/reader033/viewer/2022061304/54fd84f44a7959887e8b494a/html5/thumbnails/31.jpg)
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
![Page 32: 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](https://reader033.vdocuments.mx/reader033/viewer/2022061304/54fd84f44a7959887e8b494a/html5/thumbnails/32.jpg)
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;
![Page 33: 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](https://reader033.vdocuments.mx/reader033/viewer/2022061304/54fd84f44a7959887e8b494a/html5/thumbnails/33.jpg)
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
![Page 34: 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](https://reader033.vdocuments.mx/reader033/viewer/2022061304/54fd84f44a7959887e8b494a/html5/thumbnails/34.jpg)
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
![Page 35: 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](https://reader033.vdocuments.mx/reader033/viewer/2022061304/54fd84f44a7959887e8b494a/html5/thumbnails/35.jpg)
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;
}