lunes, 29 de mayo de 2017

Hilos JAVA

¿Qué son los Hilos en Java?

Los Hilos o los “Threads” en Java, son basicamente una forma de poder ejecutar varios procesos simultáneamente en nuestros programas en Java.
Usualmente para poder utilizarlos tenemos que crear clases que extienden a la clase Thread, y reescribir el metodo principal “run()”, el cual es el que se va a ejecutar principalmente al iniciar un hilo, thread o nuevo proceso en java.
Para comprender mejor el funcionamiento te proporciono el siguiente codigo fuente y un video donde explico como usar hilos de manera sencilla.

Se mostrará el código fuente para la realización de los hilos en java. 

A continuación se compartirá un programa de Funciones hecho en RMI e Hilos, donde se pone el ejemplo de un binario, factorial y primo: https://drive.google.com/drive/folders/0B9ixL_JgUUVJUk9TR0lTc0hqZXM?usp=sharing

Así como un chat en RMI Hilos: https://drive.google.com/drive/folders/0B9ixL_JgUUVJYXBaR183QU9KVDg?usp=sharing

RMI JAVA

¿Qué es el Remote Method Invocation ( RMI ) ?

Es un mecanismo ofrecido por Java para invocar un método de manera remota. Forma parte del entorno estándar de ejecución de Java y proporciona un mecanismo simple para la comunicación de servidores en aplicaciones distribuidas basadas exclusivamente en Java. Si se requiere comunicación entre otras tecnologías debe utilizarse CORBA o SOAP en lugar de RMI.
RMI se caracteriza por la facilidad de su uso en la programación por estar específicamente diseñado para Java; proporciona paso de objetos por referencia (no permitido por SOAP), recolección de basura distribuida (Garbage Collector distribuido) y paso de tipos arbitrarios (funcionalidad no provista por CORBA).
A través de RMI, un programa Java puede exportar un objeto, con lo que dicho objeto estará accesible a través de la red y el programa permanece a la espera de peticiones en un puerto TCP. A partir de ese momento, un cliente puede conectarse e invocar los métodos proporcionados por el objeto.
La invocación se compone de los siguientes pasos:
  • Encapsulado (marshalling) de los parámetros (utilizando la funcionalidad de serialización de Java).
  • Invocación del método (del cliente sobre el servidor). El invocador se queda esperando una respuesta.
  • Al terminar la ejecución, el servidor serializa el valor de retorno (si lo hay) y lo envía al cliente.
  • El código cliente recibe la respuesta y continúa como si la invocación hubiera sido local.

La arquitectura de RMI 

Primera capa

La primera capa es la de aplicación y se corresponde con la implementación real de las aplicaciones cliente y servidor. Aquí tienen lugar las llamadas a alto nivel para acceder y exportar objetos remotos. Cualquier aplicación que quiera que sus métodos estén disponibles para su acceso por clientes remotos debe declarar dichos métodos en una interfaz que extienda java.rmi.Remote. Dicha interfaz se usa básicamente para "marcar" un objeto como remotamente accesible. Una vez que los métodos han sido implementados, el objeto debe ser exportado. Esto puede hacerse de forma implícita si el objeto extiende la clase UnicastRemoteObject (paquete java.rmi.server), o puede hacerse de forma explícita con una llamada al método exportObject() del mismo paquete.

Segunda capa

La capa 2 es la capa proxy, o capa stub-skeleton. Esta capa es la que interactúa directamente con la capa de aplicación. Todas las llamadas a objetos remotos y acciones junto con sus parámetros y retorno de objetos tienen lugar en esta capa.

Tercera capa

La capa 3 es la de referencia remota, y es responsable del manejo de la parte semántica de las invocaciones remotas. También es responsable de la gestión de la replicación de objetos y realización de tareas específicas de la implementación con los objetos remotos, como el establecimiento de las persistencias semánticas y estrategias adecuadas para la recuperación de conexiones perdidas. En esta capa se espera una conexión de tipo stream (stream-oriented connection) desde la capa de transporte.

Cuarta Capa[

La capa 4 es la de transporte. Es la responsable de realizar las conexiones necesarias y manejo del transporte de los datos de una máquina a otra. El protocolo de transporte subyacente para RMI es JRMP (Java Remote Method Protocol), que solamente es "comprendido" por programas Java.

Elementos

Toda aplicación RMI normalmente se descompone en 2 partes:
  • Un servidor, que crea algunos objetos remotos, crea referencias para hacerlos accesibles, y espera a que el cliente los invoque.
  • Un cliente, que obtiene una referencia a objetos remotos en el servidor, y los invoca.


A continuación se adjuntarán archivos ejemplo de lo que es la interfaz, el cliente y servidor en RMI Java basado en el libro de Computación Distribuida: https://drive.google.com/drive/folders/0B9ixL_JgUUVJNlVaell5bjUwR1k?usp=sharing


Sockets

¿Qué es un socket?
Un socket es un método para la comunicación entre un programa del cliente y un programa del servidor en una red, se define, por tanto, como el punto final en una conexión.
Tipos de socket
En la actualidad existen varios tipos de socket y cada uno por lo regular se asocia a un tipo de protocolo, por ejemplo:
Su principal ventaja radica en que son muy eficientes a la hora de enviar un número elevado de mensajes y datos.
Las propiedades de un socket dependen de las características del protocolo en el que se implementan. Generalmente la comunicación con sockets se realiza mediante un protocolo de la familia TCP/IP (Protocolo de Control de Transmisión/Protocolo de Internet). Los dos más utilizados son: TCP (Protocolo de Control de Transmisión) y UDP (Protocolo de Datagrama de Usuario)
Cuando se implementan con el protocolo TCP, los sockets tienen las siguientes propiedades:
El protocolo UDP es un protocolo no orientado a la conexión. Sólo se garantiza que si un mensaje llega, llegue bien. En ningún caso se garantiza que llegue o que lleguen todos los mensajes en el mismo orden que se mandaron. Esto lo hace adecuado para el envío de mensajes frecuentes pero no demasiado importantes, como por ejemplo, mensajes para los refrescos (actualizaciones) de un gráfico..
  • SOCK_STREAM: está asociado al protocolo TCP, este brinda seguridad en la transmisión de datos, seguridad en la recepción, en la integridad y en la secuencia, entre otros.
  • SOCK_DGRAM: está asociado al protocolo UDP, e indica que los paquetes viajarán en tipo datagramas, el cual tiene una comunicación asíncrona.

Ventajas


Propiedades inherentes a los sockets
  • Orientado a conexión.
  • Se garantiza la transmisión de todos los octetos sin errores ni omisiones.
  • Se garantiza que todo octeto llegará a su destino en el mismo orden en que se ha transmitido. Estas propiedades son muy importantes para garantizar la corrección de los programas que tratan la información.


    A continuación se adjuntarán los archivos de ejemplo de Sockets basado en el libro de Computación Distribuida que son orientados a conexión, en socket Stream y socket Datagrama: https://drive.google.com/drive/folders/0B9ixL_JgUUVJWGFVM3FVSmpicnM?usp=sharing
Fuente
  • Lenguajes y Ciencias de la Computación. Disponible en http://www.lcc.uma.es/~eat/services/i_socket/i_socket.html#link2.
  • Comunicacion entre procesos distribuidos. Disponible en http://es.tldp.org/Universitarios/seminario-2-sockets.html.
  • Sun. Programación en castellano. Disponible en http://programacion.com/java/tutorial/red/11/.
  • Ciencia e Ingeniería de la Computación. Programación en redes. Disponible en http://www.mcc.unam.mx/~cursos/Algoritmos/javaDC99-1/resumen2.html#TCP.


lunes, 17 de abril de 2017

Modelo OSI

Modelo OSI

El modelo de referencia OSI -Open System Interconnection- es la forma en que la ISO -International Standards Organization- ve las etapas en que se desarrolla un proceso de comunicaciones en redes de datos. El modelo tiene una historia y a veces puede resultar complejo de comprender, pero como vamos a ver en esta entrada no lo es tanto como parece. Para comprender el contexto de los modelos de comunicación por capas, hay que partir de la base de que cuando aparece una nueva tecnología de red, los dispositivos que la soportan con frecuencia usan varios protocolos simultáneamente. El ejemplo más claro de ésto es TCP/IP: cualquier estación que soporte esta tecnología, inherentemente soporta otros protocolos aparte de TCP e IP (que son protocolos independientes uno del otro), por ejemplo, debe soportar UDP e ICMP entre otros. En ese caso cada protocolo cumple unas funciones especiales dentro del propósito completo de la tecnología o las necesidades particulares de comunicación y ahí es donde entran los modelos. Un modelo de comunicación por capas define las funciones específicas que realiza la tecnología en particular, las agrupa y usa tales grupos para encajar sus protocolos dentro de ellos. Se dice que los modelos son en capas porque las funciones definidas se complementan unas a otras y se realizan operaciones sucesivas sobre la información, de tal manera que ciertas funciones siempre van a preceder a otras cuando se envía la información y se ejecutan en orden inverso cuando se recibe, lo que evoca una pila (stack), es decir una acumulación de cosas una encima de la otra donde para sacar lo que se puso primero antes hay que quitar lo que está encima. Los modelos en capas ofrecen algunas ventajas en el diseño y análisis de procesos de comunicación, la más evidente es que modulariza los procesos, es decir los divide en trozos más digeribles, menos complejos e independientes entre sí. Lo otro es que el diseño de protocolos partiendo de funciones específicas y pasando esas funciones a interfaces de programación, hace que los protocolos se puedan acoplar incluso cuando no pertenecen a la misma tecnología, por ejemplo el uso de TCP/IP sobre ethernet, WiFi, ATM, etc. 

¿Qué es el modelo de referencia OSI?

Bueno, el modelo de referencia OSI es un modelo de los protocolos propuestos por OSI como protocolos abiertos interconectables en cualquier sistema, básicamente se pretendía que los protocolos OSI fueran el estándar de la industria. Pero adivinen, no pasó, de hecho sólo unos pocos protocolos de los originales de OSI siguen siendo usados, por ejemplo IS-IS, un protocolo de enrutamiento. De los protocolos OSI sólo queda el modelo y como no hay protocolos en uso se le llama modelo de referencia, porque está tan bien definido que casi todas las tecnologías lo usan para que los usuarios sepan qué es lo que hace exactamente. Entonces este modelo lo que hace es definir el proceso de comunicaciones completamente, dividirlo en funciones claramente demarcadas y ponerles nombre a esas funciones. Cuando un fabricante de tecnología de comunicaciones quiere poner en claro brevemente qué hace ésta sin definir su propia terminología ni las operaciones particulares de la misma, sólo dice con qué capas del modelo de referencia OSI se corresponde y ya, quien conozca éste último comprenderá inmediatamente qué hace la tecnología que está aprendiendo. 

¿Cuáles son sus capas? 

En entregas futuras (Tutorial sobre las capas del modelo OSI) definiré bien cada capa y entraremos en detalles, pero por lo pronto vamos a mencionar las capas que, cuando uno se acostumbra, las llama por nombre o por número indistintamente. Física Enlace de datos Red Transporte Sesión Presentación Aplicación Como les decía, con el tiempo uno habla a veces de la capa 2 de OSI o de la capa de enlace de datos y así para cualquiera de ellas, por eso es importante saber muy bien qué número le corresponde a cada una y para recordar el nombre se recomienda usar mnemotecnia, es decir, inventarse una frase o cuento que ayude a recordar algo, a partir de la primera letra o algo así. Por ejemplo para recordar las primeras letras del modelo yo podría memorizar la frase La Física es Enteramente Responsable de Tener Sujetos Presionando por Aprender o una mejor en orden inverso: Apenas Paso la Silla, Todos Revisamos Entera tu Falda. Quienes recomiendan estas técnicas dicen que son más efectivas si las frases son descabelladas, aunque confieso que yo personalmente nunca usé estas técnicas.



Referencias:
http://cesarcabrera.info/blog/%C2%BFque-es-el-modelo-osi-definicion/

domingo, 12 de marzo de 2017

Cliente-Servidor

CLIENTE SERVIDOR

Es un modelo para construir sistemas de información, que se sustenta en la idea de repartir el tratamiento de la información y los datos por todo el sistema informático, permitiendo mejorar el rendimiento del sistema global de información Es la tecnología que proporciona al usuario final el acceso transparente a las aplicaciones, datos, servicios de cómputo o cualquier otro recurso del grupo de trabajo y/o, a través de la organización, en múltiples plataformas. El modelo soporta un medio ambiente distribuido en el cual los requerimientos de servicio hechos por estaciones de trabajo inteligentes o "clientes'', resultan en un trabajo realizado por otros computadores llamados servidores  

¿QUE ES UN CLIENTE?
 Es el que inicia un requerimiento de servicio. El requerimiento inicial puede convertirse en múltiples requerimientos de trabajo a través de redes LAN o WAN. La ubicación de los datos o de las aplicaciones es totalmente transparente para el cliente.

 ¿QUE ES UN SERVIDOR?

Es cualquier recurso de cómputo dedicado a responder a los requerimientos del cliente. Los servidores pueden estar conectados a los clientes a través de redes LANs o WANs, para proveer de múltiples servicios a los clientes y ciudadanos tales como impresión, acceso a bases de datos, fax, procesamiento de imágenes, etc. Evolución del modelo Cliente Servidor
· Mono-capa
· Data Base Server – Computación centralizada
· Two-Tier – Proceso de transacciones · Multi-tier Client/Server
· Three-tier · Multi-tier
· N-tier

 Aplicaciones mono-capa

 Entendemos por aplicaciones mono-capa, aquellas que tanto la propia aplicación como los datos que maneja se encuentran en la misma máquina y son administradas por la misma herramienta: podríamos decir que son una sola entidad

 Modelo En Dos Capas (Two-Tier Model)

En una arquitectura cliente/servidor clásica tenemos dos "capas" (two-tier): Una donde está el cliente que implementa la interface. Otra donde se encuentra el gestor de bases de datos que trata las peticiones recibidas desde el cliente. La lógica de la aplicación se encuentra por tanto repartida entre el cliente y servidor. Un ejemplo de esta configuración podría ser un applet Java que se carga en el navegador del cliente y trabaja directamente con la base de datos mediante JDBC.

Ventajas de este modelo:

Se mantiene una conexión persistente con la base de datos. Se minimizan las peticiones en el servidor trasladándose la mayor parte del trabajo al cliente. Se gana en rendimiento gracias a la conexión directa y permanente con la base de datos. A través de una única conexión se realiza el envío y recepción de varios datos.

 Inconvenientes:

La más importante desventaja, es que esta solución es muy dependiente del tipo controlador JDBC que se utilice para acceder a la base de datos. El acceso se realiza desde el cliente y esto significa que es él el que tiene que tener instalado en su sistema los controladores necesarios para que se produzca la comunicación con la base de datos. Además hay que tener en cuenta que el modelo de seguridad de Java impide que desde un applet sin validar (lo que se conoce como untrusted applet), como lo son la mayoría de los que se ejecutan en un navegador

Modelo en Tres Capas (Three-Tier Model)

Con la arquitectura cliente/servidor en tres capas (three-tier) añadimos una nueva capa entre el cliente y el servidor donde se implementa la lógica de la aplicación. De esta forma el cliente es básicamente una interface, que no tiene por qué cambiar si cambian las especificaciones de la base de datos o de la aplicación; queda aislado completamente del acceso a los datos. En este caso se tiene total libertad para escoger dónde se coloca la lógica de la aplicación: en el cliente, en el servidor de base de datos, o en otro(s) servidor(es). También se tiene total libertad para la elección del lenguaje a utilizar. Se utiliza un lenguaje de tipo general (probablemente C) por lo que no existen restricciones de funcionalidad.

Ventajas de este modelo:

No existe ningún problema con respecto al tipo de controlador JDBC utilizado para acceder a la base de datos.Todos los recursos necesarios para establecer la conexión con la base de datos se encuentran en el servidor y por tanto, el cliente no necesita instalar nada adicional en su máquina para poder acceder a la base de datos. Esta arquitectura proporciona considerables mejoras desde el punto de vista de la portabilidad de la aplicación, escalabilidad, robustez y reutilización del código. Asimismo facilita las tareas de migración o cambios en el sistema gestor de la base de datos. Desaparecen las restricciones debidas a las limitaciones de los applets impuestas por el modelo de seguridad de Java. Inconvenientes: Esta solución es algo menos eficiente que la del modelo de dos capas, ya que hemos añadido una capa intermedia más de software.
















Resultado de imagen para esquema cliente-servidor


Resultado de imagen para esquema cliente-servidor

Resultado de imagen para esquema cliente-servidor

Resultado de imagen para esquema cliente-servidor

REFERENCIAS
http://docente.ucol.mx/sadanary/public_html/bd/cs.htm

sábado, 17 de septiembre de 2016

Esquema del Modelo OSI

Resultado de imagen para esquema del modelo osi

Tipos y topologías de Red

REDES

El término red informática hace referencia a un conjunto de equipos y dispositivos informáticos conectados entre sí, cuyo objeto es transmitir datos para compartir recursos e información. Si bien existen diversas clasificaciones de redes informáticas, la más reconocida es aquella que las distingue de acuerdo a su alcance. De esta manera los tipos 
Red LAN (local area network): Esta red conecta equipos en un área geográfica limitada, tal como una oficina o edificio. De esta manera se logra una conexión rápida, sin inconvenientes, donde todos tienen acceso a la misma información y dispositivos de manera sencilla.
Red de área metropolitana  (metropolitan area network). Ésta alcanza una área geográfica equivalente a un municipio. Se caracteriza por utilizar una tecnología análoga a las redes LAN, y se basa en la utilización de dos buses de carácter unidireccional, independientes entre sí en lo que se refiere a la transmisión de datos.
Red de área amplia (wide area network). Estas redes se basan en la conexión de equipos informáticos ubicados en un área geográfica extensa, por ejemplo entre distintos continentes. Al comprender una distancia tan grande la transmisión de datos se realiza a una velocidad menor en relación con las redes anteriores. Sin embargo, tienen la ventaja de trasladar una cantidad de información mucho mayor. La conexión es realizada a través de fibra óptica o satélites.
Red WLAN (Wireless Local Area Network). Es un sistema de transmisión de información de forma inalámbrica, es decir, por medio de satélites, microondas, etc. Nace a partir de la creación y posterior desarrollo de los dispositivos móviles y los equipos portátiles, y significan una alternativa a la conexión de equipos a través de cableado.
Red de Área Personal (PAN)(personal area network). Es una red conformada por una pequeña cantidad de equipos, establecidos a una corta distancia uno de otro. Esta configuración permite que la comunicación que se establezca sea rápida y efectiva.





TOPOLOGÍAS



La topología de red es la representación geométrica de la relación entre todos los enlaces y los dispositivos que los enlazan entre sí (habitualmente denominados nodos).
Para el día de hoy, existen al menos cinco posibles topologías de red básicas: mallaestrellaárbolbus y anillo.

Topología en Malla

En una topología en malla, cada dispositivo tiene un enlace punto a punto y dedicado con cualquier otro dispositivo. El término dedicado significa que el enlace conduce el tráfico únicaniente entre los dos dispositivos que conecta.
Por tanto, una red en malla completamente conectada necesita n(n-1)/2 canales fisicos para enlazar n dispositivos. Para acomodar tantos enlaces, cada dispositivo de la red debe tener suspuertos de entrada/salida (E/S).
Topología en MallaUna malla ofrece varias ventajas sobre otras topologías de red. En primer lugar, el uso de los enlaces dedicados garantiza que cada conexión sólo debe transportar la carga de datos propia de los dispositivos conectados, eliminando el problema que surge cuando los enlaces son compartidos por varios dispositivos. En segundo lugar, una topología en malla es robusta. Si un enlace falla, no inhabilita todo el sistema.
Otra ventaja es la privacidad o la seguridad. Cuando un mensaje viaja a través de una línea dedicada, solamente lo ve el receptor adecuado. Las fronteras fisicas evitan que otros usuarios puedan tener acceso a los mensajes.


Topología en Estrella

En la topología en estrella cada dispositivo solamente tiene un enlace punto a punto dedicado con el controlador central, habitualmente llamado concentrador. Los dispositivos no están directamente enlazados entre sí.
A diferencia de la topología en malla, la topología en estrella no permite el tráfico directo de dispositivos. El controlador actúa como un intercambiador: si un dispositivo quiere enviar datos a otro, envía los datos al controlador, que los retransmite al dispositivo final.
Una topología en estrella es más barata que una topología en malla. En una red de estrella, cada dispositivo necesita solamente un enlace y un puerto de entrada/salida para conectarse a cualquier número de dispositivos.
Topología en EstrellaEste factor hace que también sea más fácil de instalar y reconfigurar. Además, es necesario instalar menos cables, y la conexión, desconexión y traslado de dispositivos afecta solamente a una conexión: la que existe entre el dispositivo y el concentrador.



Topología en Árbol

La topología en árbol es una variante de la de estrella. Como en la estrella, los nodos del árbolestán conectados a un concentrador central que controla el tráfico de la red. Sin embargo, no todos los dispositivos se conectan directamente al concentrador central. La mayoría de los dispositivos se conectan a un concentrador secundario que, a su vez, se conecta al concentrador central.
Topología en ÁrbolEl controlador central del árbol es un concentrador activo. Un concentrador activo contiene un repetidor, es decir, un dispositivo hardware que regenera los patrones de bits recibidos antes de retransmitidos.
Retransmitir las señales de esta forma amplifica su potencia e incrementa la distancia a la que puede viajar la señal. Los concentradores secundarios pueden ser activos o pasivos. Un concentrador pasivo proporciona solamente una conexión fisica entre los dispositivos conectados.

Topología en Bus

Una topología de bus es multipunto. Un cable largo actúa como una red troncal que conecta todos los dispositivos en la red.
Topología en Bus
Los nodos se conectan al bus mediante cables de conexión (latiguillos) y sondas. Un cable de conexión es una conexión que va desde el dispositivo al cable principal. Una sonda es un conector que, o bien se conecta al cable principal, o se pincha en el cable para crear un contacto con el núcleo metálico.
Entre las ventajas de la topología de bus se incluye la sencillez de instalación. El cable troncal puede tenderse por el camino más eficiente y, después, los nodos se pueden conectar al mismo mediante líneas de conexión de longitud variable. De esta forma se puede conseguir que un bus use menos cable que una malla, una estrella o una topología en árbol.

Topología en Anillo

En una topología en anillo cada dispositivo tiene una línea de conexión dedicada y punto a punto solamente con los dos dispositivos que están a sus lados. La señal pasa a lo largo del anillo en una dirección, o de dispositivo a dispositivo, hasta que alcanza su destino. Cada dispositivo del anillo incorpora un repetidor.
Topología en Anillo
Un anillo es relativamente fácil de instalar y reconfigurar. Cada dispositivo está enlazado solamente a sus vecinos inmediatos (bien fisicos o lógicos). Para añadir o quitar dispositivos, solamente hay que mover dos conexiones.


Las únicas restricciones están relacionadas con aspectos del medio fisico y el tráfico (máxima longitud del anillo y número de dispositivos). Además, los fallos se pueden aislar de forma sencilla. Generalmente, en un anillo hay una señal en circulación continuamente.