claret

Un servidor de correo es una aplicación informática que nos permite enviar mensajes (correos) de unos usuarios a otros, con independencia de la red que dichos usuarios estén utilizando. Entre los más usados se encuentran Postfix, sendmail y Exim. Este último predeterminado en la distribución GNU/Linux Debian

Para lograr la conexión se definen una serie de protocolos, cada uno con una finalidad concreta:

  • SMTP, Simple Mail Transfer Protocol: Es el protocolo que se utiliza para que dos servidores de correo intercambien mensajes.
  • POP, Post Office Protocol: Se utiliza para obtener los mensajes guardados en el servidor y pasárselos al usuario.
  • IMAP, Internet Message Access Protocol: Su finalidad es la misma que la de POP, pero el funcionamiento y las funcionalidades que ofrecen son diferentes.

Así pues, un servidor de correo consta en realidad de dos servidores: un servidor SMTP que será el encargado de enviar y recibir mensajes, y un servidor POP/IMAP que será el que permita a los usuarios obtener sus mensajes.

Para obtener los mensajes del servidor, los usuarios se sirven de clientes, es decir, programas que implementan un protocolo POP/IMAP. En algunas ocasiones el cliente se ejecuta en la máquina del usuario (como el caso de Mozilla Thunderbird, Evolution, Microsoft Outlook). Sin embargo existe otra posibilidad: que el cliente de correo no se ejecute en la máquina del usuario; es el caso de los clientes vía web, como GMail, Hotmail, OpenWebmail, SquirrelMailTerra. En ellos la arquitectura del servicio es más compleja: o

En una máquina (A) tenemos el servidor SMTP y el servidor POP/IMAP. En otra (B) tenemos un servidor web con una aplicación cliente POP/IMAP. El usuario conecta vía WEB con (B) y entonces el cliente POP/IMAP establece una conexión POP/IMAP con el servidor de la máquina A; éste servidor le devuelve a B los mensajes del usuario, y una vez recibidos, el cliente genera una página web con los mensajes recibidos. La página web se pasa al servidor web que será el que la envíe al explorador web del usuario.

En cualquier caso, los protocolos SMTP/POP/IMAP son inseguros en cuanto a que los mensajes viajan en claro por la red, es decir, es fácil obtener nuestros mensajes y contraseñas. Para ello se suele añadir una capa SSL, es decir, un método de cifrado que puedan implementar tanto el servidor como el cliente. En el caso del correo vía web se pueden utilizar dos capas SSL: una entre A y B y otra entre el servidor web de B y el navegador web del usuario.

Etiquetas: 0 comentarios | edit post
UDP
claret


UDP

En el siguiente ejemplo, se desarrolla un mínimo servidor UDP. La aplicación servidor UDP depende de una clase de comunicaciones proporcionada por Java: DatagramSocket Esta clase realiza la mayor parte del trabajo de crear el socket. El servidor implementado escucha por el puerto de comunicaciones 8050, cuando le llega un datagrama procedente de algún cliente, imprime la dirección del cliente, y el puerto por la salida estandar del sistema, y luego envia un datagrama que contiene la fecha del sistema.


public class ServerTime{
public static void main(String[] args) throws IOException {
//el puerto de escucha del servidor será el 8050
int PUERTO=8050;

byte msg[]=new byte[1024];

//Creamos el socket UDP del servidor en el pueto asociado
DatagramSocket s = new DatagramSocket(PUERTO);
System.out.println(
"Servidor Activo");

//implementacion del protocolo del servidor en un bucle infinito
while (true) {
DatagramPacket recibido = new DatagramPacket(new byte [1024],1024);

//llega un datagrama
s.receive(recibido);
System.out.println(
"Ha llegado una peticion \n");
System.out.println(
"Procedente de :" + recibido.getAddress());
System.out.println(
"En el puerto :" + recibido.getPort());
System.out.println(
"Sirviendo la petición");

//se prepara el mensaje a enviar con la fecha del sistema
String message=
new String("HORA DEL SERVIDOR " + new Date());
msg=message.getBytes();

//se crea el datagrama que contendrá al mensaje
DatagramPacket paquete=new DatagramPacket(msg,msg.length,recibido.getAddress(),

recibido.getPort());

//se le envia al cliente
s.send(paquete);

}
} }
Etiquetas: 0 comentarios | edit post
claret

¿Qué es CORBA?

CORBA (Common Object Request Broker Architecture) es una arquitectura estandar para sistemas de objetos sitribuidos. Permite una colección distribuida y heterogénea de objetos que interoperan entre sí.

La arquitectura CORBA

CORBA define una arqitectura para objetos distribuidos. El paradigma básico de CORBA es que se hace una petición para obtener un servicio de un objeto distribuido. Todo lo demás definido por el OMG está descrito en términos de este paradigma básico.

Los servicios que proporciona un objeto son dados por su interfaz. Los interfaces se definen en el IDL (Interface Definition Language) del OMG. Los objetos distribuidos están identificados por referencias a objetos, las cuales se describen mediante los interfaces IDL.

La figura de abajo muestra gráficamente una petición. Un cliente tiene una referencia a un objeto distribuido. La refencia al objeto está descrita por un interface. En la figura, la referencia está simbolizada por el interface Rabbit. El ORB (Object Request Broker), entrega la petición al objeto y devuelve el resultado al cliente.

Etiquetas: 0 comentarios | edit post
claret

Java proporciona mecanismos potentes y a la vez sencillos para construir programas para redes tales como Internet. Java aporta versatilidad, portabilidad, clases especializadas para gran número de servicios (incluidas de serie), manejo eficiente de la memoria, etc. Entre las clases que permiten la comunicación tenemos la clase URL en un nivel superior y las clases Socket y ServerSocket a un nivel más bajo.

Mediante la clase Socket incluida en el paquete java.net podemos crear conexiones de flujo, que son los que utilizan el protocolo TCP, entre dos ordenadores. El tipo de datos en la comunicación puede ser cualquiera, y por ello el protocolo TCP es usado por http, ftp, telnet, etc. Más adelante veremos un sencillo ejemplo de comunicación entre un navegador y una aplicación Java y veremos de forma básica como es el protocolo http y como interacciona un navegador con un servidor.

Los Sockets o enchufes son semejantes a conexiones telefónicas entre dos ordenadores remotos, la comunicación es continúa y finaliza cuando uno de los dos ordenadores cierra su conexión.

La clase ServerSocket es una clase incluida en java.net que sirve para atender peticiones de conexiones, lo cual es útil a la hora de crear un servidor. Como veremos más adelante, en un servidor hay un bucle infinito donde se llama al método accept de la clase ServerSocket quedando a la espera de aceptar una conexión. Cuando esta conexión se produce esta clase devuelve un objeto de tipo socket que es el que utiliza el servidor para comunicarse con el cliente, de este socket podemos conseguir una corriente de entrada y otra de salida.

Vamos a continuación a ver un programa sencillo ejemplo de como funcionan estas clases. Para ejecutar este programa debemos tener un JDK que compile el programa y luego lo ejecute.

Para el caso de CrearCliente necesitamos un servidor como Apache instalado en nuestra máquina que tenga la dirección localhost (127.0.0.1) o cualquier dirección de Internet a la que tengamos acceso y que sirva páginas html.

Para el caso de CrearServidor necesitamos un navegador en el cual visualizaremos lo que nos devuelve el servidor.

Método CrearCliente.-

En el método CrearCliente creamos un socket que va a conectar con una dirección de Internet local (127.0.0.1) y con index.html a través del puerto 80. A el socket se le especifican estos parámetros en el constructor.

Una vez realizada la conexión obtenemos un DataOutputStream del socket con getOutputStream y escribimos nuestra petición que en nuestro caso es igual a la que realiza el Internet Explorer. En esa corriente de salida escribimos nuestros datos. Después obtenemos un DataInputStream con getInputStream y leemos lo que nos llega que puede ser el texto de una página html. Por último cerramos la conexión con close una vez que no hay más datos que leer.

Podemos ver que la creación de un Socket es sencilla y que leer y escribir de un socket es como leer y escribir de un archivo.

Método CrearServidor

En este método vamos a crear un servidor sencillo que va atender los datos de un navegador tal como Internet Explorer. Este servidor va a servir por la dirección 127.0.0.1 que es la de localhost, y por el puerto 80. Estas dos condiciones se especifican al crear el ServerSocket (Ojo con la dirección especificada ya que tiene que existir en la máquina).

Una vez creado el ServerSocket se crea un bucle infinito en el cual el método accept espera hasta recibir una conexión. Este método al aceptar la conexión devuelve un Socket que es con el que vamos a realizar la conexión al cliente. Al igual que el método anterior obtenemos un DataInputStream con getInputStream del cual vamos a leer los datos desde el cliente.