Vous êtes sur la page 1sur 17

Mdulo ECI - 11: Fundamentos de Redes de Computadores

Desarrollo de Aplicaciones en Redes de Computadores


Nelson Baloian, DCC, U. de Chile
1
Universidad de Chile - Tupper 2007, Santiago - Fono/Fax: (56 2) 698 8427 - Email: hthiemer @ cec.uchile.cl

Mdulo ECI - 11: Fundamentos de Redes de Computadores

Objetivos del Curso


Conocer los paradigmas actuales de la programacin distribuida Conocer y usar algunos mecanismos para programar aplicaciones comunicantes Evaluar los distintos mecanismos para su uso en algn contexto dado Desarrollar peueos ejemplos de programas distribuidos
2
Universidad de Chile - Tupper 2007, Santiago - Fono/Fax: (56 2) 698 8427 - Email: hthiemer @ cec.uchile.cl

Mdulo ECI - 11: Fundamentos de Redes de Computadores

Contenidos del Curso (I)


Introduccin:
Arquitecturas cliente/servidor Protocolos de comunicacin (conexin y estado) Arquitecturas de aplicaciones distribuidas

Internetworking en JAVA
Por qu JAVA ? (Introduccin a JAVA: estructura, IO, paralelismo, OO) La clase InetAddress

Los Sockets
Definicin Sockets TCP Sockets UDP (el multicast UDP) clientes, servidores, concurrencia, mantencion de estado
Universidad de Chile - Tupper 2007, Santiago - Fono/Fax: (56 2) 698 8427 - Email: hthiemer @ cec.uchile.cl

Mdulo ECI - 11: Fundamentos de Redes de Computadores

Contenidos del Curso (II)


RMI
concetos bsicos Serializacin de objetos XDR

Otros Sistemas
Sockets en C Sockets en Perl CORBA

El Network File System (NFS) de UNIX


Servidores sin estado El sistema de archivos UNIX Modos de Archivos NFS Operaciones
Universidad de Chile - Tupper 2007, Santiago - Fono/Fax: (56 2) 698 8427 - Email: hthiemer @ cec.uchile.cl

Mdulo ECI - 11: Fundamentos de Redes de Computadores

Contenidos del Curso (III)


Programando la seguridad
Dnde es necesario aplicarla ? Generando claves y flujos de datos encriptados El SSL

Ejemplos tradicionales:
Cleinte Ping Servidor talk (o chat) Servidor WEB

Consideraciones de Diseo en Sistemas Multiusuarios


Awarness Data locking Versioning Distributed Software Development
Universidad de Chile - Tupper 2007, Santiago - Fono/Fax: (56 2) 698 8427 - Email: hthiemer @ cec.uchile.cl

Mdulo ECI - 11: Fundamentos de Redes de Computadores

1- Introduccin
Qu son las arquitecturas cliente/servidor ?
El modelo cliente/servidor (oidor/llamador)
Porque TCP/IP no provee ningun mecanismo que automticamente cree un programa que empeice a ejecutarse cuando llega un mensaje, un programa debe esperar a aceptar una comunicacin ANTES que el requerimiento llegue.

Existe otra forma de comunicarse ?


Multicasting (el servidor no tiene idea de los clientes)

Qu son los ports de protocolo de una mquina ?


Es una direccin dentro de la mquina en la cual hay un programa servidor escuchando si hay algun cliente que quiere solicitar algn servicio que l presta. En mquinas UNIX hay ports bien conocidos para ciertos servicios. Para acceder a los servicios se debe seguir un cierto protocolo. Tanto el port como el protocolo 6 deben ser publicados (conocidos). Universidad de Chile - Tupper 2007, Santiago - Fono/Fax: (56 2) 698 8427 - Email: hthiemer @ cec.uchile.cl

Mdulo ECI - 11: Fundamentos de Redes de Computadores

Protocolos para la comunicacin


Parametrizacin de los clientes
Se busca generalidad de los programas. Ej: telnet sirve para accesar tambin otros servicios (tratar de ejecutar telnet host 7, telnet host 13 y telnet host 80)
Cuando disee programas de aplicacin cliente, incluya parmetros que permitan al usuario especificar totalmente la mquina y el port al que quiera comunicarse con el protocolo que implementa el programa.

Servidores con/sin Conexin


Las modalidades connectionless style y connectio-oriented style dependen del tipo de protocolo que usemos para conectarnos con una mquina. En el mundo TCP/IP tenemos protocolos TCP (con conexion) y UDP (sin conexin)
7
Universidad de Chile - Tupper 2007, Santiago - Fono/Fax: (56 2) 698 8427 - Email: hthiemer @ cec.uchile.cl

Mdulo ECI - 11: Fundamentos de Redes de Computadores

Protocolos TCP y UDP (I)


Importancia para el programador:
Al elegir un protocolo con el cual conectarse con otra mquina determina el nivel de confiabilidad de la transmisin de datos, lo cual repercute en la forma de programar las aplicaciones.
TCP provee alta confiabilidad: los datos mandados sern recibidos si una conexin entre los 2 computadores se pudo establecer. Hay un protocolo subyacente que se preocupa de retransmitir, ordenar.... Con UDP el programador debe proveer el protocolo para el caso que se pierdan datos o lleguen en otro orden.

La forma de programar el envo recibo de datos con ditintos protocolos es tambin distinta:
En TCP la forma de transmitir datos es normalmente como un flujo de datos por la conexin establecida. Con UDP se deben armar paquetes de datos que son pasados a la internet para ser transmitidos con el mejor esfuerzo.
Universidad de Chile - Tupper 2007, Santiago - Fono/Fax: (56 2) 698 8427 - Email: hthiemer @ cec.uchile.cl

Mdulo ECI - 11: Fundamentos de Redes de Computadores

Cundo usar uno u otro ?

Protocolos TCP y UDP (II)

TCP impone una carga bastante mayor a la red que UDP, por lo cual se debe evitar si es razonablemente posible

Cundo es razonablemente posible ?


Podemos esperar prdidas cuando los datos tienen que viajar a traves de varias redes por la internet. Dentro de una LAN las comunicaciones UDP son relativamente confiables Algunas veces la informacin que no lleg a tiempo no tiene sentido retransmitirla porque ya est obsoleta (cundo?).

En general se recomienda, especialmente a principiantes, usar slo TCP en sus aplicaciones. El estilo de programacin es ms secillo. Los programadores slo usan UDP si el protocolo de la aplicacin misma maneja la confiabilidad, si la aplicacin requere usar broadcast o multicast de hardware o la aplicacin no puede tolerar el overhead de un circuito virtual. 9
Universidad de Chile - Tupper 2007, Santiago - Fono/Fax: (56 2) 698 8427 - Email: hthiemer @ cec.uchile.cl

Mdulo ECI - 11: Fundamentos de Redes de Computadores

Servidores Con o sin Estado


Qu es el Estado ?
El estado es la informacin que los servidores mantienen acerca de la interaccin que se lleva a cabo con los clientes.

Para qu ?
Generalmente se hace ms eficiente el comporatamiento de los servidores con informacin. Informacin muy breve mantenida en el servidor puede hacer ms chicos los mensajes o permite producir respuestas ms rpido.

Y entonces por qu se evita a veces ?


Es fuente de errores: mensajes del cliente pueden perderse, duplicarse llegar en desorden. El cliente puede caerse y rebootear, con lo cual la informacin que tiene el servidor de l es errnea y tambin sus respuestas
10
Universidad de Chile - Tupper 2007, Santiago - Fono/Fax: (56 2) 698 8427 - Email: hthiemer @ cec.uchile.cl

Mdulo ECI - 11: Fundamentos de Redes de Computadores

Un ejemplo del servidor de Archivos


El servidor espera que un cliente se conecte por la red. El cleinte puede mandar 2 tipos de requerimientos: leer o escribir datos en un archivo. El servidor realiza la operacin y retorna el resultado al cliente.

Situacin sin guardar informacin acerca del estado:


Para leer, el cliente debe siempre especificar: nombre de archivo, posicin en el archivo desde dnde debe extraer los datos y el nmero de bytes a leer. Para escribir debe especificar el nombre completo del archivo, el lugar donde quiere escribir y los datos que quiere escribir

11
Universidad de Chile - Tupper 2007, Santiago - Fono/Fax: (56 2) 698 8427 - Email: hthiemer @ cec.uchile.cl

Mdulo ECI - 11: Fundamentos de Redes de Computadores

Un ejemplo del servidor de Archivos (II)


Situacin guardardando informacin del estado:
Handle 1 2 3 4 Filename miArchivo.txt unDocumento.doc unJuego.exe Hola.java Posicin 0 456 38 128

Cuando el cliente abre un archivo se crea un entrada en la tabla. A la entrada se le asigna un handle para identificar el archivo y se le asigna la posicin actual (inicialmente 0). El cliente recibe el handler como respuesta. Cuando el cliente quiere extrer datos adicionales le envia el handle y la cantidad de bytes. Esto es usado por el servidor para saber gracias a la tabla de dnde exactamente debe extraer los datos (debe actualizar la posicin para que para la prxima vez se pueda hacer lo mismo). Cuando el cliente termina la lectura/escritura enva un mensaje para sea eliminada la entrada de la tabla
12
Universidad de Chile - Tupper 2007, Santiago - Fono/Fax: (56 2) 698 8427 - Email: hthiemer @ cec.uchile.cl

Mdulo ECI - 11: Fundamentos de Redes de Computadores

Un ejemplo del servidor de Archivos (III)


Posibilidades de errores
Handle 1 2 3 4 Filename miArchivo.txt unDocumento.doc unJuego.exe Hola.java Posicin 0 456 38 128

La red manda dos veces el datagrama con requerimiento de lectura Si el computador del cleinte se cae y rebootea el programa. Si el computador se cae antes de poder des-registrarse Si otro cliente se conecta en el mismo port que el que se cay sin avisar En una internet real, donde las mquinas pueden caerse y rebootear y los mensajespueden perderse, llegar atrasados, duplicados o en orden incorrecto un servidor con mantecin de estado puede resultar difcil de programar para hacerlo tolerante a los errores.
13
Universidad de Chile - Tupper 2007, Santiago - Fono/Fax: (56 2) 698 8427 - Email: hthiemer @ cec.uchile.cl

Mdulo ECI - 11: Fundamentos de Redes de Computadores

Arquitecturas para Aplicaciones Distribuidas


Servidores como Clientes
Los programas no siempre se comportan definitivamente como servidores puros o como clientes puros. Ej: un servidor de archivos que necesita un timestamp para registrar el ltimo cambio. Cuando todas las aplicaciones deben comportarse simultneamente como servidores y clientes: cmo organizar las comunicaciones ?
Cada aplicacin abre un canal con otra aplicacin (configuracin red) Hay un servidor de comunicaciones y todoas las aplicaciones se comunican con l (configuracin estrella).

14
Universidad de Chile - Tupper 2007, Santiago - Fono/Fax: (56 2) 698 8427 - Email: hthiemer @ cec.uchile.cl

Mdulo ECI - 11: Fundamentos de Redes de Computadores

Arquitecturas para Aplicaciones Distribuidas


Cada par de aplicaciones que necesitan comunicarse abren un canal exclusivo Se abren a lo ms n*(n-1)/2 canales para n aplicaciones Ventajas:
un canal exclusivo, no hay cuellos de botella

Desventajas:
todas las aplicaciones deben saber cmo comunicarse con las dems. La dinmica se vuelve ms complicada (entrada/salida de aplicaciones)

15
Universidad de Chile - Tupper 2007, Santiago - Fono/Fax: (56 2) 698 8427 - Email: hthiemer @ cec.uchile.cl

Mdulo ECI - 11: Fundamentos de Redes de Computadores

Arquitecturas para Aplicaciones Distribuidas


Las aplicaciones envan sus requerimientos de comunicacin a un servidor y ste se encarga de mandarlas a su punto de destino final. Se abren a lo ms n*(n-1)/2 canales para n aplicaciones Ventajas:
Es ms fcil manejar los parmetros de la comunicacin

Desventajas:
se puede saturar el servidor o las lneas.

16
Universidad de Chile - Tupper 2007, Santiago - Fono/Fax: (56 2) 698 8427 - Email: hthiemer @ cec.uchile.cl

Mdulo ECI - 11: Fundamentos de Redes de Computadores

2- InterNetworking con Java


Por qu JAVA ?
En este curso: Los programas son ms simples => se peude usar ms tiempo en explicar la lgica de los programas que para explicar las instrucciones del lenguaje. En general: Java nace cuando la internet ya est madura (1993-4) => nace sabiendo que existe TCP/IP y que la programacin distribuida es importante, lo que se nota en el diseo. Adems de las tpicas funcionalidades bsicas de comunicacin (comunicacin por canales TCP y UDP) incorpora otras de alto nivel de abstraccin: RMI, Applets, JDBL, URL

Siempre es mejor JAVA ?


No, Java es multiplataforma por lo tanto slo puede hacer cosas que sean comnes a todas las plataformas. Con la estandarizacin de TCP/IP como red virtual para todos los equipos esto es cada vez menos importante. An as hay cosas: Nombres y ports slo se pueden asociar en C ya que es exclusivo de UNIX. 17
Universidad de Chile - Tupper 2007, Santiago - Fono/Fax: (56 2) 698 8427 - Email: hthiemer @ cec.uchile.cl

Vous aimerez peut-être aussi