You are on page 1of 14

COMUNICACION EN SD

OSI: Open Systems Interconnection, es la arquitectura general requerida para


establecer comunicacin entre computadoras. OSI puede verse de dos formas:
como un estndar & como un modelo de referencia. (Aplicacin, presentacin,
sesin, transporte, red, enlace, fsica)
Cada capa implementa un servicio a travs de las acciones internas a la capa y
solicitando el servicio proporcionado por una capa inferior.
El modelo OSI distingue entre dos tipos generales de protocolos:
Orientados hacia las conexiones:
Antes de intercambiar los datos, el emisor y el receptor:
Establecen en forma explcita una conexin.
Probablemente negocien el protocolo a utilizar.
Al finalizar, deben terminar la conexin.
El telfono es un sistema de comunicacin orientado hacia
la conexin.
Sin conexin:
No es necesaria una configuracin de antemano.
El emisor transmite el primer mensaje cuando est listo.
El depsito de una carta en un buzn es una comunicacin
sin conexin.
Las 7 capas de funciones del modelo OSI estn normalmente construidas como
una combinacin de:
1. Sistema Operativo (Windows XP, Win2003, Mac/OS
Unix)
2. Aplicaciones (navegador, cliente de correo, servidor web)
3. Protocolos de transporte y de red (TCP/IP, IPX/SPX, SNA)
4. Hardware y software que colocan la seal en el cable conectado al
computador (tarjeta de red y driver).
Las dos primeras capas (fsica y enlace) se construyen con hardware y software
(El cable, el conector, la tarjeta de red y el driver de la tarjeta pertenecen a los
niveles 1 y 2). Los otros cinco niveles se construyen generalmente con
software.
Cada capa ofrece un conjunto de funciones para la capa superior y utiliza
funciones de la capa inferior. Cada capa, en un nodo, se comunica con su igual
en el otro nodo.
El modelo OSI distingue entre: Servicios (funciones): Qu hace la capa //
Interfaces: Cmo las capas vecinas pueden solicitar/dar servicios // Protocolos:
Reglas para que capas pares se comuniquen.
Excepto en la capa fsica, la comunicacin entre pares es indirecta.
Cada protocolo se comunica con su par pasando los mensajes a otro
protocolo de una capa inferior.

Funcin que ofrece

Aplicacin : Es la capa mas cercana al usuario del sistema. Esta capa


interacta con las aplicaciones de software que requieran comunicaciones con
otros sistemas. Identificacin de los otros sistemas que recibirn la
informacin, Sincronizacin general de la transmisin.
Define el formato de los datos que se intercambiarn
Asegura que la informacin enviada por la capa de aplicacin de un nodo sea
entendida por la capa de aplicacin del otro nodo
Presentacin: La capa de presentacin se ocupa de la representacin y
conversin de datos. En la capa de presentacin es posible definir registros que
contengan campos predefinidos y que el emisor notifique al receptor que un
mensaje contiene un registro particular en cierto formato.
Sesion: Define cmo iniciar, coordinar y terminar las conversaciones entre
aplicaciones (llamadas sesiones). Ofrece las herramientas para que la capa de
aplicacin, la de presentacin y la de sesin reporten sus problemas y los
recursos disponibles para la comunicacin (control del dilogo sesin- entre
aplicaciones)
Transporte: Asegura la entrega de los datos entre procesos que han establecido
una sesin y que se ejecutan en diferentes nodos.Segmenta bloques grandes
de datos antes de transmitirlos (y los reensambla en el nodo destino).Hace
control de flujo y control de congestin.
Red: Entrega los paquetes de datos a la red correcta, al nodo correcto,
buscando el mejor camino
Esta capa es la encargada de hacer el enrutamiento y el direccionamiento.
Enlace: Inicia, mantiene y libera los enlaces de datos entre dos nodos. Se
encarga de detectar y corregir errores en el envo de los bits.
Fsica: La capa fsica tiene que ver con la transmisin de bits por un canal de
comunicacin. Se encarga de aspectos tales como el nmero de voltios a
utilizar, el nmero de bits por segundo, y si la transmisin se realiza en ambas
direcciones o no.

TCP IP: El nombre TCP/IP se refiere a un conjunto de protocolos de datos que


permite que los computadores se comuniquen. Transmission Control Protocol
(TCP)- Internet Protocol (IP).
Los estndares de los protocolos son abiertos: interconecta equipos de
diferentes fabricantes sin problema. Independiente del medio de transmisin
fsico. Un esquema de direccionamiento amplio y comn. Protocolos de alto
nivel estandarizados.

Rutinas para acceder el medio fsico


PILA DE PROTOCOLOS DE INTERNET
aplicacin: soporta las aplicaciones de la red
FTP, SMTP, HTTP
transporte: transferencia de datos host to host
TCP, UDP
red: enrutamiento de datagramas desde la fuente al destino
IP, protocolos de enrutamiento
enlace: transferencia de datos entre elementos de red vecinos
PPP, Ethernet
fsica: bits en el cable
COMUNICACIN ENTRE SOD
En un sistema de un solo procesador la comunicacin supone implcitamente la
existencia de la memoria compartida.
En un sistema distribuido no existe la memoria compartida y por ello toda la
naturaleza de la comunicacin entre procesos debe replantearse. Los procesos,
para comunicarse, deben apegarse a reglas conocidas como protocolos. Para
los sistemas distribuidos en un rea amplia, estos protocolos toman
frecuentemente la forma de varias capas y cada capa tiene sus propias metas
y reglas.
Permite la interaccin entre aplicaciones y servicios del sistema.
Modelos de comunicacin entre procesos:
Memoria compartida (Slo uni/multiprocesador no distribuido).
Paso de mensajes.
El nivel de abstraccin en la comunicacin:

Paso de mensajes puro (Cliente-Servidor).


Llamadas a procedimientos remotos.
Modelos de objetos distribuidos.
Cada una de las funciones de comunicacin de una tecnologa determinada.
Las primitivas bsicas son:
Envo: send(destino,mensaje).
Recepcin: receive(fuente,mensaje).
Otras primitivas:
Conexin: connect(destino).
Desconexin: close().
Cada una de las primitivas tiene las siguientes caractersticas:
Bloqueantes vs No-bloqueantes.
*Las caractersticas de bloqueo son:
Primitivas bloqueantes: La operacin bloquea al elemento que la solicita
hasta que sta sea completada.
Primitivas no-bloqueantes: La operacin no detiene la ejecucin del
elemento que la solicita.
Sncronas vs Asncronas.
*Esta caracterstica afecta no tanto a la primitiva como a la transmisin en s.
Comunicacin sncrona: Envo y recepcin se realizan de forma simultanea.
Comunicacin asncrona: El envo no requiere que el receptor este
esperando.
La comunicacin asncrona usa un buffer de almacenamiento.
Fiables vs No-fiables.
*El envo fiable de datos garantiza que un mensaje enviado ha sido recibido por
el receptor.
Implica la retransmisin de mensajes de validacin (ACKs).
La fiabilidad la puede garantizar:
El protocolo de comunicacin (TCP si y UDP no).
Los elementos emisor y receptor.
DIRECCIONAMIENTO
Informacin vlida para la identificacin de elementos del sistema. Posibles
receptores de un mensaje.
Mecanismos:
Direccin dependiente de la localizacin:
Por ejemplo: direccin mquina + direccin puerto local.
No proporciona transparencia.
Direccin independiente de la localizacin (dir. lgica):

Facilita transparencia.
Necesidad de proceso de localizacin:
Mediante broadcast.
Uso de un servidor de localizacin que mantiene
relaciones entre direcciones lgicas y fsicas.
Uso de cache en clientes para evitar localizacin.
MODELO CLIENTE - SERVIDOR
Con enlaces del orden de decenas (o centenas) de miles de bits /
segundo y cpu poderosas:
La carga de procesamiento de los protocolos no es significativa.
El factor limitante es la capacidad de las lneas.
Ej.: redes de rea extendida (WAN).
Con enlaces del orden de millones de bits / segundo y
computadoras personales:
La carga de procesamiento de los protocolos s es frecuentemente
significativa.
El factor limitante no es la capacidad de las lneas.
Ej.: redes de rea local (LAN).
La mayora de los sistemas distribuidos basados en LAN no utilizan los
protocolos de capas completos, s utilizan un subconjunto de toda una
pila de protocolos. El modelo OSI no dice nada acerca de la forma de
estructurar al sistema distribuido.
El modelo cliente - servidor tiene como idea fundamental la
estructuracin del S. O. como:
Un grupo de procesos en cooperacin, llamados servidores, que
ofrecen servicios a los usuarios.
Un grupo de procesos usuarios llamados clientes.
El modelo cliente - servidor se basa en un protocolo solicitud /
respuesta:
El servidor:
Ejecuta el requerimiento.
Regresa los datos solicitados o un cdigo de error si no pudo
ejecutarlo correctamente.
No se tiene que establecer una conexin sino hasta que sta se
utilice.
La pila del protocolo es ms corta y por lo tanto ms eficiente.
Si todas las mquinas fuesen idnticas solo se necesitaran tres
niveles de protocolos
Las principales opciones de diseo son:
Direccionamiento:
Bloqueo:

Almacenamiento en buffers:
Confiabilidad:
En el caso de mensajes compuestos por varios paquetes, el
reconocimiento puede ser:
Por paquete individual:
Ante la prdida de un paquete, solo retransmite se
paquete.
Requiere ms paquetes en la red.
Por mensaje completo:
La recuperacin es compleja ante la prdida de un
paquete.
Requiere menos paquetes en la red.

Los principales tipos de paquetes son los siguientes:


Req:
Solicitud.
De cliente a servidor.
El cliente desea servicio.
Rep:
Respuesta.
De servidor a cliente.
Respuesta del servidor al cliente.
Ack:
Reconocimiento.
De cualquiera de ellos a algn otro.
El paquete anterior que ha llegado.
Aya:
Ests vivo?.
De cliente a servidor.
Verifica si el servidor se ha descompuesto.
Iaa:
Estoy vivo.
De servidor a cliente.
El servidor no se ha descompuesto.
Ta:
Intenta de nuevo.
De servidor a clientes.
El servidor no tiene espacio.
Au:
Direccin desconocida.
De servidor a cliente.

Ningn proceso utiliza esta direccin.


Cada pareja send-receive transmite un mensaje entre cliente y servidor. Por lo
general de forma asncrona.
Habitualmente:
Send no bloqueante.
Receive bloqueante (pude hacerse no bloqueante).
Los mensajes intercambiados pueden ser:
Mensajes de texto (por ejemplo: HTTP).
Mensajes con formato (binarios).
Las aplicaciones definen el protocolo de comunicacin: Peticin-respuesta,
recepcin explcita, sin/con confirmacin

BERKELEY SOCKETS
Aparecieron en 1981 en UNIX BSD 4.2
Intento de incluir TCP/IP en UNIX.
Diseo independiente del protocolo de comunicacin.
Un socket es punto final de comunicacin (direccin IP y puerto).
Abstraccin que:
Ofrece interfaz de acceso a los servicios de red en el nivel de
transporte.
Representa un extremo de una comunicacin bidireccional con
una direccin asociada.
Actualmente:
Disponibles en casi todos los sistemas UNIX.
En prcticamente todos los sistemas operativos:
WinSock: API de sockets de Windows.
En Java como clase nativa.
DOMINIOS DE COMUNICACIN
Un dominio representa una familia de protocolos.
Un socket est asociado a un dominio desde su creacin.
Slo se pueden comunicar sockets del mismo dominio.
Los servicios de sockets son independientes del dominio.
Algunos ejemplos:
PF_UNIX (o PF_LOCAL): comunicacin dentro de una mquina.
PF_INET: comunicacin usando protocolos TCP/IP.
TIPOS DE SOCKETS
Stream (SOCK_STREAM):
Orientado a conexin.

Fiable, se asegura el orden de entrega de mensajes.


No mantiene separacin entre mensajes.
Si PF_INET se corresponde con el protocolo TCP.
Datagrama (SOCK_DGRAM):
Sin conexin.
No fiable, no se asegura el orden en la entrega.
Mantiene la separacin entre mensajes.
Si PF_INET se corresponde con el protocolo UDP.
Raw (SOCK_RAW):
Permite el acceso a los protocolos internos como IP.
DIRECCIONES DE SOCKETS
Cada socket debe tener asignada una direccin nica.
Dependientes del dominio.
Las direcciones se usan para:
Asignar una direccin local a un socket (bind).
Especificar una direccin remota (connect o sendto).
Se utiliza la estructura genrica de direccin:
struct sockaddr mi_dir;
Cada dominio usa una estructura especfica.
Uso de cast en las llamadas.
Direcciones en PF_INET (struct sockaddr_in).
Direcciones en PF_UNIX (struct sockaddr_un).
CREACION DE SOCKETS
La funcin socket crea uno nuevo:
int socket(int dom,int tipo,int proto)
Devuelve un descriptor de archivo (igual que un open de archivo).
Dominio (dom): PF_XXX
Tipo de socket (tipo): SOCK_XXX
Protocolo (proto): Dependiente del dominio y del tipo:
0 elige el ms adecuado.
Especificados en /etc/protocols.
El socket creado no tiene direccin asignada.
ASIGNACION DE DIRECCIONES
La asignacin de una direccin a un socket ya creado:
int bind(int s,struct sockaddr* dir,int tam)
Socket (s): Ya debe estar creado.
Direccin a asignar (dir): Estructura dependiendo del dominio.
Tamao de la direccin (tam): sizeof().

Si no se asigna direccin (tpico en clientes) se le asigna automticamente


(puerto efmero) en la su primera utilizacin (connect o sendto).
SOLICITUD DE CONEXIN
Realizada en el cliente por medio de la funcin:
int connect(int s,struct sockaddr* d,int tam)
Socket creado (s).
Direccin del servidor (d).
Tamao de la direccin (tam).
Si el cliente no ha asignado direccin al socket, se le asigna una
automticamente.
Normalmente se usa con streams.
SOCKETS EN JAVA
Engloba en objetos cada una de las estructuras de la comunicacin. Las
funciones se tratan como mtodos de dichos objetos:
InetAddress
Socket DatagramSocket ServerSocket
Connection
DatagramPacket
Define un nivel de abstraccin mayor, proporcionando constructores que
realizan parte del proceso de inicializacin de los elementos.
LLAMADA A UN PROCEDIMIENTO REMOTO
La informacin se puede transportar de un lado al otro mediante los
parmetros y puede regresar en el resultado del procedimiento.
El programador no se preocupa de una transferencia de mensajes o de la
e / s.
A este mtodo se lo denomina llamada a procedimiento remoto o
RPC.
El procedimiento que hace la llamada y el que la recibe se ejecutan en
mquinas diferentes, es decir que utilizan espacios de direcciones
distintos.
ELEMENTOS NECESARIOS
Cdigo cliente.
Cdigo del servidor.
Formato de representacin.
Definicin del interfaz.
Localizacin del servidor.
Semnticas de fallo.
RESGUARDOS (STUBS)

Se generan automticamente por el software de RPC en base a la interfaz


del servicio.
Son independientes de la implementacin que se haga del cliente
y del servidor. Slo dependen de la interfaz.
Tareas que realizan:
Localizan al servidor.
Empaquetan los parmetros y construyen los mensajes.
Envan el mensaje al servidor.
Espera la recepcin del mensaje y devuelven los resultados.
Se basan en una librera de funciones RPC para las tareas ms habituales.
ENLACE DINAMICO
Enlace dinmico: permite localizar objetos con nombre en un sistema
distribuido, en concreto, servidores que ejecutan las RPC.
Tipos de enlace:
Enlace no persistente: la conexin entre el cliente y el servidor se
establece en cada llamada RPC.
Enlace persistente: la conexin se mantiene despus de la
primera RPC:
til en aplicaciones con muchas RPC repetidas.
Problemas si lo servidores cambian de lugar o fallan.
Protocolos RPC
Orientados a conexin
Fiabilidad se resuelve a bajo nivel, peor rendimiento
No orientados a conexin
Uso de un protocolo estndar o un especfico
Algunos utilizan TCP o UDP como protocolos bsicos
Costo de copiar informacin aspecto dominante en
rendimiento:
buffer del cliente buffer del SO local red buffer del SO
remoto + buffer del servidor
Puede haber ms copias en cliente para aadir cabeceras
scatter-gather: puede mejorar rendimiento
ENTORNOS DE OBJEROS DISTRIBUIDOS
La extensin de los mecanismos de RPC a una programacin orientada a
objetos dio lugar a los modelos de objetos distribuidos.
Ventajas:
Los mtodos remotos estn asociados a objetos remotos.
Ms natural para desarrollo orientado a objetos.
Admite modelos de programacin orientada a eventos.
Problemas:

El concepto de referencia a objeto es fundamental.


Objetos voltiles y objetos persistentes
Caractersticas:
Uso de un Middleware: Nivel de abstraccin para la comunicacin
de los objetos distribuidos. Oculta:
Localizacin de objetos.
Protocolos de comunicacin.
Hardware de computadora.
Sistemas Operativos.
Modelo de objetos distribuidos: Describe los aspectos del
paradigma de objetos que es aceptado por la tecnologa:
Herencia, Interfaces, Excepciones, Polimorfismo, ...
Recogida de basura (Garbage Collection): Determina los objetos
que no estn siendo usados para a liberar recursos.
OMG
(Object Management Group)
Conjunto de organizaciones que cooperan en la definicin de estndares para
la interoperabilidad en entornos heteregneos.
Fundado en 1989, en la actualidad lo componen ms de 700 empresas y otros
organismos.

OMA
(Object Management Architecture)
Arquitectura de referencia sobre cual se pueden definir aplicaciones
distribuidas sobre un entorno heteregneo. CORBA es la tecnologa asociada a
esta arquitectura genrica.
Formalmente esta dividida en una serie de modelos:
Modelo de Objetos
Modelo de Interaccin
...
ORB
(Object Request Broker)
Es el elemento central de la arquitectura. Proporciona las funcionalidades de
interconexin entre los objetos distribuidos (servicios, facilidades y objetos de
aplicacin) que forman una aplicacin.
Representa un bus de comunicacin entre objetos.
ILD DE COBRA
(Interface Definition Language)
Es el lenguaje mediante el cual se describen los mtodos que un determinado
objeto del entorno proporciona al resto de elementos del mismo.

COMPONENTES DE UN ORB
Stub:
Cdigo cliente asociado al objeto remoto con el que se desea
interactuar. Simula para el cliente los mtodos del objeto remoto,
asociando a cada uno de los mtodos una serie de funciones que
realizan la comunicacin con el objeto servidor.
Skeleton:
Cdigo servidor asociado al objeto. Representa el elemento
anlogo al stub del cliente. Se encarga de simular la peticin
remota del cliente como una peticin local a la implementacin
real del objeto.
DII:
(Dynamic Invocation Interface)
Alternativa al uso de stubs estticos que permite que un cliente
solicite peticiones a servidores cuyos interfaces se desconocan en
fase de compilacin.
DSI:
(Dynamic Skeleton Interface)
Alternativa dinmica al uso de skeletons estticos definidos en
tiempo de compilacin del objeto. Es usado por servidores que
durante su ejecucin pueden arrancar diferentes objetos que
pueden ser desconocidos cuando se compil el servidor.
Las dos principales responsabilidades del ORB son:
Localizacin de objetos: El cliente desconoce la computadora
donde se encuentra el objeto remoto.
Comunicacin entre cliente y servidor: De forma independiente de
protocolos de comunicacin o caractersticas de implementacin
(lenguaje, sistema operativo)
TAREAS TIPICAS DE UN SERVIDOR
El servidor debe realizar las siguientes tareas:
Inicializar el ORB (obtiene el interfaz con el ORB).
CORBA::ORB_init
Obtener la referencia del Adaptador de objetos.
orb->BOA_init
Crear un un objeto (de la clase Cuenta_impl).
new Cuenta_impl()
Activar el objeto.
boa->impl_is_ready(...)
Iniciar el bucle de servicio.

orb->run()
TAREAS TIPICAS DE UN CLIENTE
El cliente debe realizar las siguientes tareas:
Inicializar el ORB (obtiene el interfaz con el ORB).
CORBA::ORB_init
Obtener la referencia del Adaptador de objetos.
orb->BOA_init
Obtener la referencia al objeto (desde un string).
orb->string_to_object(...)
Cambiar la clase del objeto obtenido (down-casting).
Cuenta::_narrow(obj)
Realizar las llamadas al objeto.
cc->...
USO DE SERVICIO D ENOMBRE
Permite asociar un nombre a una referencia de objeto. De esta forma los
objetos al activarse pueden darse de alta en el servidor, permitiendo que otros
objetos los obtengan su referencia en base a dicho nombre.
Los nombres de los objetos se encuentran organizados en una jerarqua de
contextos de nombre.
SERVICIO DE NEGOCIACION
Este servicio tambin permite obtener referencias a objetos usando otra
informacin:
Los objetos se exportan en el servidor con una serie de
caractersticas del servicio que proporcionan.
Los clientes consultan con el servidor cules son los objetos
ofertados con una serie de caractersticas.
Un cliente que buscase un servicio de impresin podra construir una consulta
del tipo:
Service=Printer AND
PrinterType=HP AND
OS!=WinNT
A lo cual el servidor le indicar los objetos que existen con dichas
caractersticas.
COMUNICACIN EN GRUPO
Se habilita por medio de:
Variantes de protocolos de red: IP-multicast.

Emulandola por medio de protocolos de alto nivel o por las


aplicaciones.
El direccionamiento se realiza por medio de una direccin de grupo (grupo al
que pertenecen todos los receptores).
Modelos de grupos:
Grupo abierto.
Grupo abierto controlado.
Grupo cerrado.
Utilidad para los sistemas distribuidos:
Ofrecer tolerancia a fallos basado en servicios replicados.
Localizar objetos en sistemas distribuidos.
Mejor rendimiento mediante datos replicados.
Actualizaciones mltiples.
Operaciones colectivas en clculo paralelo.
Problemtica:
Comunicacin fiable es difcil.
Escalabilidad de las tecnologas (Internet con MBone).
Gestin de grupos.
Encaminamiento (Flooding, Spanning Tree, RPB, TRPB, RPM).
ORDENACION DE COMUNICACIN DE GRUPO
De acuerdo a las garantas de ofrecidas en la recepcin de mensajes de grupo
se tienen:
Ordenacin FIFO: Los mensajes de una fuente llegan a cada
receptor en el orden que son enviados.
Ordenacin Causal: Los mensajes enviados por dos emisores
distintos so recibidos en el orden relativo en el que se han
enviado.
Ordenacin Total: Todos los mensajes (de varias fuentes)
enviados a un grupo son recibidos en el mismo orden por todos
los elementos.

You might also like