Documente Academic
Documente Profesional
Documente Cultură
Comunicacin
La comunicacin de procesos es una parte fundamental y bsica en cualquier sistema distribuido. Existen dos enfoques de comunicacin, ambos basados en el paso de mensajes:
En este tipo de enfoques se ofrecen abstracciones que facilitan la programacin y en las que el programador no debe preocuparse de los aspectos de bajo nivel relacionados con el paso de mensajes. En este tipo de esquemas se incluyen las llamadas a procedimientos remotos y la invocacin de mtodos remotos, como la que ofrece CORBA o RMI de java, C++
A parte de los mecanismos de comunicacin que se empleen, existen dos patrones bsicos de comunicacin en sistemas distribuidos:
Comunicacin cliente-servidor: cliente-servidor: El protocolo tpico utilizado es el de peticin-respuesta. El cliente realiza la peticin de un servicio y el servidor responde con el resultado al cliente. Este es el esquema ms utilizado.
Comunicacin en grupos: En la comunicacin en grupos existe un grupos: conjunto de procesos que constituyen un grupo y que cooperan en algn trabajo comn. Este modelo puede ser til en caso de que se desee actualizar de forma simultnea la copia de un archivo que reside en varios servidores.
Introduccin
Sobre la capa de red y de SO, frecuentemente, los sistemas distribuidos estn desarrollados sobre un middleware. Nos interesa saber y comprender la capa inferior del middleware
Programas finales
Aplicaciones de Servicios RMI - RPC Protocolos de peticin / Respuesta empaquetado y representacin externa de datos UDP - TCP Midleware
Introduccin
Visin simplificada de programacin con TCP/IP
Aplicacin TCP IP Aplicacin UDP
Introduccin
RPC : Remote Procedure Call RMI : Remote Method Invocation) TCP : Transmission Control Protocol : Establece un canal desde que inicia y termina la comunicacin. UDP : User Datagram Protocol: Lo mensajes se enva por un canal sin esperar respuesta. TCP/IP: Conjunto de Protocolos de la Internet En este segundo capitulo analizaremos las posibilidades que ofrece el protocolo UDP y TCP. Se llevar a un plano ms prctico con la API de Java.
Protocolos de Internet
Comunicacin entre dos procesos:
El proceso emisor enva mensajes a la cola de mensajes del proceso receptor (buffer de entrada)
Recibe m
Protocolos de Internet
Caracterstica de la Comunicacin entre dos procesos:
Sincronizada: El proceso que enva se bloquea hasta que el mensaje se haya enviado, mientras que en el proceso receptor, activa un recibe y tambin se bloquea hasta que el mensaje se haya recibido. ej: pginas web Asncrona: El proceso emisor no se bloquea al enviar, mientras que el proceso receptor puede tener las dos variantes: bloqueado o no bloqueado. En este ltimo caso, se utiliza un buffer de mensajes recibidos. Ej: aplicaciones hechas en ajax, gmail (correo y chat)
Sockets
Los sockets aparecieron en 1981. Un socket es una abstraccin que representa un extremo en la comunicacin bidireccional entre dos procesos. Ofrece una interfaz para acceder a los servicios de red en el nivel de transporte de los protocolos TCP/IP. Actualmente la interfaz de sockets est siendo estandarizada dentro de todos los sistemas UNIX.
enviar
Sockets NUCLEO
RED
Sockets
Socket = conector Permiten comunicar:
Procesos del mismo computador Procesos conectados a travs de una red
Tipos de direcciones:
Direcciones locales: dominio UNIX Direcciones de red (TCP/IP)
Direccin de red (direccin IP) Puerto
17
Sockets (II)
patan 138.100.240.36
ftp 21
zipi 138.100.240.2
Red de interconexin
telnet 23
batman 138.100.240.32
merlin 138.100.240.50
conan 138.100.240.20
18
Protocolos de Internet
SOCKET
Los socket son conectores de comunicacin entre procesos remotos. Este mecanismo est en la mayora de los sistemas operativos y fue introducido por Unix BSD Cada conector est asociado a una IP y un puerto (216). Cada conector utiliza un protocolo de comunicacin que puede ser UDP o TCP. Socket
Socket
Puertos
Protocolos de Internet
Comunicacin con datagramas UDP
Un mensaje enviado va UDP, no posee reintentos y acuso de recibo por parte del proceso receptor. Si algo falla el mensaje podra no llegar a su destino El receptor posee un puerto especfico para recibir mensajes El cliente podr utilizar cualquier puerto para enviarlos. El receptor averiguar por el mensaje entrante, la IP y el puerto del proceso emisor, lo que le permite enviar una respuesta. Ejm: streaming (radios online), video conferencia
Protocolos de Internet
Protocolos de Internet
Protocolos de Internet
Comunicacin con datagramas UDP
Bloqueo: UDP usa las operaciones
recibe bloqueante, o sea el mensaje enviado se almacena en una cola de mensajes en el puerto del proceso receptor. Este proceso activar su operacin recibe y se bloquear hasta recibir todo el mensaje. Para esto utiliza un hilo de proceso receptor.
Tiempo lmite (timeout): la operacin recibe puede tener asociado un timeout por seguridad (por falla emisor o red). Si el mensaje tiene un destino inexistente, se descarta
Protocolos de Internet
Protocolos de Internet
Protocolos de Internet
Protocolos de Internet
Protocolos de Internet
Protocolos de Internet
Comunicacin stream TCP Etapas de la comunicacin
El proceso cliente enva una solicitud connect a la direccin ip y puerto del servidor. EL servidor posee una cola para recibir las solicitudes connect y a al momento de realizar un accept, dispone un nuevo puerto para el stream de comunicacin con el cliente. Cuando se establece la comunicacin, cada proceso dispone de dos stream uno para escribir y otro para leer. Para finalizar la comunicacin uno de los procesos cierra su conector de envi, el receptor detecta esto y cierra sus conectores.
Protocolos de Internet
Protocolos de Internet
Comunicacin stream TCP Modelo de Fallo
Integridad de los datos: se obtiene a travs de detectar paquetes IP corruptos. Adems, utiliza un nmero de serie para ordenar y evitar la duplicidad de los paquetes. Validez: se consigue reenviando el paquete, cada vez que timeout. Lo que garantiza la entrega. Conexin rota: cuando los timeout ocurren con demasiada frecuencia, TCP declara la comunicacin rota. Esto significa que TCP no proporciona una comunicacin fiable.
Protocolos de Internet
Protocolos de Internet
Protocolos de Internet
Protocolos de Internet
Protocolos de Internet
Protocolos de Internet
IO para la Red
Mecanismos en Java para la I/O en Internet
Sistema de I/O
Stream : Secuencia de byte de largo indeterminado, movindose desde una fuente a un destino: Ejemplo: I/O del sistema
System.in : para lectura de stream System.out : para escritura de stream System.err : para escritura de stream cuando un error es atrapado por try/catch
Sistema de I/O
Ejemplo
import java.io.*; public class Ejemplo1 { public static void main(String[] args) { try { byte[] hola = {72,101,108,111,32,87,111,114,108,100,33,10,13}; System.out.write(hola);} catch (Exception e) {System.err.println(e);} } } Salida : Hello world!
File Streams
Se pretende adoptar un mtodo conveniente para leer y escribir archivos. Revisaremos:
Lectura de Archvios Escritura de Archivos Visualizacin de Archivos
Network Stream
Revisaremos:
La Clase URLs Connexiones con URL Sockets Server Sockets
URLs
Paso 1: Cronstruir las URLs Ejemplos URL u = null; try { u = new URL( http://www.unap.cl/index.php ); } catch (MalformedURLException e){} URL u1 = null; URL u2 = null; try { u1 = new URL( http , www.unap.cl , /index.php ); u2 = new URL( http , www.inf.unap.cl/ccastro ,80, /index.php ); } catch (MalformedURLException e){}
URLs
Paso 2: recuperar datos va URL Existen dos mtodo para conseguirlo:
openStream() : retorna raw stream de bytes desde la fuente.
Se conecta al socket del servidor, con la puerta correspondiente a la URL.
URLs
Paso 2: recuperar datos va URL Ejemplo:
URL u = null; try { u = new URL( http , www.unap.cl , /index.php ); InputStream in = u.openStream(); int b; while((b=in.read()) != -1) {System.out.write(b);} } catch (MalformedURLException e){System.err.println(e);} catch (IOException e){System.err.println(e); }
URLConnection
java.net.URLConnection / openConnetion() Las conexiones URL proveen mayor control de la comunicacin cliente /servidor. Coordina rapidez de la lectura/escritura desde ambos lados del a comunicacin. java.net.URLConnection / openConnetion() es una clase abstracta que maneja la comunicacin entre diferentes tipos de servidores (FTP , Webs,..) por lo que se debe especificar el protocolo.
URLConnection
Pasos para leer desde una URL Conections
Construir un Objeto URL openConnection de URL, crea la URLConnection Inicializar los parmetros de conexin y request que el cliente enviar al servidor El mtodo connect() conecta al servidor usando un socket, o se conecta localmente a un archivo. Espera una respuesta desde el servidor getInputStream lee los datos y getOutputStream enva los datos al servidor.
URLConection
Ejemplo:
try { URL u = new URL(args[i]); URLConnection uc = u.openConnection(); uc.connect(); InputStream in = uc.getInputStream(); CopiaStream.copy(in, System.out); in.close(); }
URLConnection
Pasos para Escribir en una URL Connections
Construir un Objeto URL openConnection de URL, crea la URLConnection Hacer true a setDoOutput() para indicar que se va a escribir en el stream. Y hacer true a setDoInput() si tambin se va a leer. Preparar los datos en formato byte Llamar al mtodo getOuputStream para obtener un stream y escribir en l. Cerrar el stream de salida Llamar al mtodo getInputStream para obtener un stream para leer desde l.
URLConnection
Ejemplo:
::: try { URL u = new URL("mailto:" + args[0]); URLConnection uc = u.openConnection(); uc.setDoOutput(true); uc.connect(); OutputStream out = uc.getOutputStream(); CopiaStream.copy(System.in, out); out.close(); } catch (IOException e) {System.err.println(e);}