INF 1400: Redes de Computadores

Slides:



Advertisements
Presentaciones similares
el 1, el 4 y el 9 tres cuadrados perfectos autosuficientes
Advertisements

RPC Versión 2 Remote Procedure Call.
CAPA DE TRANSPORTE MODELO OSI
Arquitectura de una red MAN
DATSI, FI, UPM José M. Peña Programación en C DATSI, FI, UPM José M. Peña Programación en C.
Curso de Java Java – Redes Rogelio Ferreira Escutia.
Tabla de Contenido Concurrencia.
1 INFORME RESUMEN SOBRE EL NIVEL DE UTILIZACION DE LAS TIC EN LAS EMPRESAS GALLEGAS (MICROEMPRESAS, resultados provisionales) 29 de julio de 2004.
Nau Gran dHivern Intr. a la creación y gestión de páginas web Introducción a la web.
Storage Networking y el almacenamiento sobre internet: iSCSI
Page 1 Martínez Navarro, Germán Fco. Page 2 Índice Introducción Paquetes Cuerpo del mensaje Circuitos Sistema de mensajes Arquitectura del cliente Arquitectura.
Internet y tecnologías web
PROTOCOLOS DE PROYECTO CONTROL DE TRAFICO INTELIGENTE Alumno : Luis Carlos Illanes Quiroga.
© 2007 Cisco Systems, Inc. All rights reserved. Traducido en apoyo a la capacitación de Instructores de la Red Proydesa Comunicación por la red Fundamentos.
C ONFIGURACIÓN C UENTAS D E C ORREO ZTE N281. C ONFIGURACIÓN C UENTAS D E C ORREO ZTE N281 1-Ingrese a menú 2-Ingrese a Mensajes 3-Ingrese a Correo 4-Seleccione.
Funciones Excel. Parte 1. Introducción 2 Una función Excel es una fórmula o un procedimiento que se realiza en el ambiente de Visual Basic, fuera de.
Phone2Wave-Server Manual de Operación.
Resolución de Problemas
Aplicación informática. formando parte de una red. pone sus recursos a disposición de las demás computadoras(clientes) de la red. Maneja información.
Funciones de sockets en C
Profra. Hilda castillo zacatelco. Alumno: Francisco Sosa herrera
TEMA 2 Técnicas básicas de construcción de aplicaciones distribuidas
Common Object Request Broker Architecture
Telnet y SSH Integrantes: Carlos Parra José Isabel
PROTOCOLOS Y ESTANDARES DE RED
Trabajar en una pequeña o mediana empresa o ISP. Capítulo 7
SOCKETS INTRODUCCIÓN DEFINICIÓN TIPOS DE SOCKETS USO DE SOCKETS.
Protocolos de transporte y aplicación
Ingeniería en Automática Industrial Software para Aplicaciones Industriales I Ingeniería en Automática Industrial Software para Aplicaciones Industriales.
Proyecto para Centros que trabajan una vez por semana.
Introducción a los protocolos de enrutamiento dinámico
INFORMATICA I Arreglos 1 CLASE 17.
RMI Remote Method Invocation
Servidor.pl #!/usr/local/bin/perl use Socket; ($port) $port = 2345 unless $port; Empleamos el módulo Socket, equivalente a las definiciones que.
PROTOCOLOS Un protocolo es un conjunto de reglas que hacen que la comunicación en una red sea más eficiente.
Cliente.pl #!/usr/local/bin/perl use Socket; ($them, $port) $port = 2345 unless $port; $them = 'localhost' unless $them; El primer argumento es.
CULENDARIO 2007 Para los Patanes.
Reunión de los requerimientos de la red
Servidor de Batalla Naval.
DÍAZ OSCAR IVÁN HOYOS ANDRÉS FELIPE ORDOÑEZ JOSÉ LUIS INFORMÁTICA, SEMESTRE II.
Aspectos básicos de networking: Clase 5
© 2006 Cisco Systems, Inc. Todos los derechos reservados.Información pública de Cisco 1 Listas de control de acceso Acceso a la WAN: capítulo 5.
Programación I Teoría VI: Recursividad
CONCEPTES AVANÇATS DE SISTEMES OPERATIUS Departament d’Arquitectura de Computadors (Seminaris de CASO) Autors Christophe Fontano Julien Alagnou Socket.
Clases y objetos La unidad fundamental de programación OO son las clases. Conjunto de métodos y semántica Qué se va a hacer POO Clase: que define la implementación.
Manual de Procedimientos Procedimiento de ejecución del programa de
Sistemas Operativos Centralizados y Distribuidos Carlos David Zepeda.
DIAGNOSTICO DE FALLAS BASICO DEL ROUTER Semestre 2 Capítulo 9
Direccionamiento de la red: IPv4
 2003 Prentice Hall, Inc. All rights reserved. 1 Capítulo 6: Clases y Abstracción de Datos Índice del capítulo 6.1 Introducción 6.2 Estructuras 6.3 Clases.
INTEGRANTES: MARTINEZ MISHELL MEDINA ENID MENENDEZ EVELYN INTEGRANTES: MARTINEZ MISHELL MEDINA ENID MENENDEZ EVELYN.
Semana 5 Subprogramas..
Teoría de Sistemas Operativos
Aplicaciones / Interfaz con la Red
La Web y el HTTP. Antes del año 1990 Internet era usado por InvestigadoresAcadémicosEstudiantes Transferir archivos logearse remotamente Enviar/recibir.
1 Nivel aplicación Interacción Cliente Servidor Agustín J. González ELO309.
AXEL LATORRE GABRIEL VALENZUELA GIAN PAOLO ALMEIDA ROMMEL CHIFLA ISABEL VILLEGAS INTEGRANTES.
TCP/IP Introducción TCP/IP Introducción. TCP/IP vs OSI Aplicación Presentación Sesión Transporte Red Enlace Física Aplicación Acceso a la red Física TCP/IP.
1 Capítulo 21: Interacción Cliente Servidor ICD 327: Redes de Computadores Agustín J. González.
ELO3091 Interfaz de Socket Agustín J. González ELO309.
LABORATORIO DE ESTRUCTURA DE COMPUTADORES II Desarrollo de aplicación Cliente-Servidor.
UD 2: “Instalación y administración de servicios de configuración automática de red” Configuración automática de red (DHCP). Características Luis Alfonso.
Protocolos del modelo TCP/IP
PROTOCOLO TCP Y UDP.
APLICACIÓN: Provee el conjunto de aplicaciones de red, como por ejemplo: Transferencia de archivos, emulación de terminal, correo electrónico, discos virtuales,
Luis Villalta Márquez Servicios SFTP/SCP. SFTP SSH File Transfer Protocol (también conocido como SFTP o Secure File Transfer Protocol) es un protocolo.
Almacenamiento virtual de sitios web: «Hosts» virtuales
Nivel de Transporte en Internet
Modelo OSI Para redes………
Planificación Curso UNIDAD 1. INTRODUCCIÓN A LOS SERVICIOS EN RED UNIDAD 2. SERVICIOS DHCP UNIDAD 3. SERVICIOS DNS UNIDAD 4. SERVICIOS DE ACCESO REMOTO.
Transcripción de la presentación:

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 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

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

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 Servidor Recurso 2. Servidor procesa requerimiento 4. Cliente procesa respuesta 3. Servidor envia 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

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

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

Connección Virtual Entre 2 Procesos Host A Host B Socket (connección virtual) Proceso 1 Proceso 2 Información Tarjetas de red Red (connección física)

Sockets Como Modelo Cliente Servidor Host C socket El servidor debe estar siempre esperando requerimientos. El cliente hace el requerimiento y el servidor responde. Servidor Host A Cliente 1 Host B Requerimiento Socket Respuesta

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

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 ?

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, buffer_len); (6) write (send) data: write (socket_id, buffer, buffer_len); (7) close socket: close(socket_id);

Listen/Connect Servidor Cliente 1 Cliente 2 socket 1 socket socket 2

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, 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);

Sockets Terminando la Sesión SERVIDOR “*” indica llamada a función bloqueadora socket() CLIENTE socket() bind() 1: Requerimiento de connección listen() * connect() * accept() write() * read() 2. Envía comando * write() read() 3. Recibe resultado close() 4. FIN

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

Sockets: Binding Paso 2 bind(_) : connecta un proceso a una puerta específica Puerta Puerta = punto de connección para dos procesos usando sockets 6500 Servidor Números de puerta: 0~1023: Reservados Port 21: FTP Port 23: telnet Port 80: HTTP 1024- 65535: disponibles a usuario

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

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

Sockets: Accept Paso 4 - Parte 1 accept(_) : acepta connección desde el cliente creando un nuevo socket y elegiendo una nueva puerta 6500 Cliente Servidor 7100  OS duplica la connección  Una nueva puerta es elegida por el OS

Sockets: Read/Write Paso 5- Parte 1: read(_) y write() 6500 7100 Transmissión de datos 6500 Cliente 7100 Servidor El servidor y el cliente se comunican usando el segundo socket

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

Sockets: Close Paso 6: close (_) 6500 7100 Client Server 7100 El segundo socket es cerrado por el cliente

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

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

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 Host 1 Host 2 Proceso A Stub del servidor Stub del cliente ProcedimientoB

Llamada a Procedimientos

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

RPC: Stubs

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

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

RPC: Ejemplo Archivo de especificación /* 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;

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;

RPC: Ejemplo Programa Cliente 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_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 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 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;