Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Servicios en red
¿Qué aprenderás?
•
B
Internet Engineering Task Force en 1990.
I correo electrónico en 1971 con el
Ray Tomlinson envió el primer
texto ‘QWERTYIOP’ yIM fue el primero que utilizó el símbolo @.
• R millones de direcciones diferentes. IPv6
IPv4 posibilitaba 4.294
P 36
1
Desarrollo de Aplicaciones Multiplataforma. Programación de servicios y procesos
Tema 4. Servicios en red
La capa de aplicación de la pila TCP/IP define les aplicaciones de red y los servicios
de internet estándar que puede utilizar un usuario. Estos servicios se utilizan en la capa de
transporte para enviar y recibir los datos. Existen varios protocolos en la capa aplicación de
los que podemos destacar:
• Servicios de nombres como NIS o DNS.
•
•
Servicios de directorio LDAP
Servicios TCP/IP estándar como ftp y telnet.
F P
• Servicios de archivos como NFS
I A
•
•
Servicios de Internet como HTTP
N K
LI
Servicios de correo electrónico como SMTP y
POP3.
Llamamos sesión al intercambio de información
N O
entre un cliente y servidor durante el tiempo que dura una determinada conexión, desde
U M
que se inicia hasta que se cierra. La mayoría de las sesiones cliente servidor se controlan en
la capa de transporte. Estos intercambios de información pueden ser muy simples del tipo:
AL
petición y respuesta única o puede ser más complejos en los que el orden en que se
reciben las respuestas es determinante. Por tanto podemos distinguir dos tipos de
protocolos:
• L E
IB
Protocolos sin estado (stateless). El servidor responde a las peticiones de forma
individual e independiente. En este caso el orden en que se reciben los mensajes no
I M
afecta al resultado de la comunicación.
•
R
Protocolos con estado (stateful). El orden en que se reciben los mensajes es
P
importante y afecta al resultado final de la comunicación. El servidor debe almacenar
IM
información durante la sesión para resolver las peticiones de forma correcta.
N
Un ejemplo de protocolo sin estado es el protocolo HTTP ya que no proporciona
I Ó
ningún medio de almacenamiento de los datos del usuario entre las peticiones. En cambio
un servidor FTP utiliza un protocolo con estado. Lleva a cabo una sesión interactiva con los
R S
usuarios/clientes. Durante el tiempo que dura la conexión el usuario debe autentificarse y
establecer diversas características de la comunicación.
V E Los servicios de red son aplicaciones distribuidas que siguiendo el modelo cliente
servidor se encargan de responder a las peticiones de clientes remotos para intercambiar
algún tipo de información.
2
Desarrollo de Aplicaciones Multiplataforma. Programación de servicios y procesos
Tema 4. Servicios en red
•
dominio concreto.
Servicios de intercambio de ficheros como los proporcionados por muchas F P
aplicaciones web o el servicio FTP
I A
• Servicios de sincronización horaria que mantienen en hora los dispositivos que
N K
LI
solicitan este servicio.
• Servicios de intercambio de información como los foros, los chats, las aplicaciones de
•
mensajería o el correo electrónico.
N O
Servicios de comunicación bidireccional remota como el ssh (cifrada, puerto 22) o el
AL
• El servicio HTTP para intercambiar información entre un navegador y un servidor web
utilizando lenguajes de marcas para dar estructura a la información que se transmite.
L E
De todos estos servicios destacamos sobre todo Por su importancia en la evolución
de internet y por la utilización en el desarrollo de aplicaciones más grandes, de todos estos
I B
servicios destacamos sobre todo tres: el servicio HTTP, el correo electrónico y los servicios
de transferencia de ficheros.
I M
P R
IM
4.2. Servicios de transferencia de ficheros
N
I Ó
El protocolo estándar FTP (File Tranfer Protocol) especificado en el documento RFC-
R S
959 es un protocolo que utiliza TCP y basándose en una arquitectura cliente servidor
permite gestionar la transferencia de ficheros entre dos lugares situados en diferentes
V E dispositivos.
Las características del protocolo FTP son las siguientes:
3
Desarrollo de Aplicaciones Multiplataforma. Programación de servicios y procesos
Tema 4. Servicios en red
• Permite navegar por el sitio remoto y realizar toda una serie de acciones a través e
comandos.
• Es posible implementarlo utilizando una interfaz gráfica.
• El servidor FTP conectado a la red proporciona servicio utilizando dos puertos
diferentes: el puerto 20 para la transferencia de los datos y el puerto 21 para la
transferencia de las órdenes.
• El cliente se conecta al servidor utilizando un puerto mayor de 1024.
La conexión de un cliente remoto al servidor FTP se puede realizar de tres formas
diferentes:
O
El protocolo FTP presenta una serie de inconvenientes en temas de seguridad:
N
•
•
U M
Transfiriere los datos del usuario: login y contraseña sin cifrar en texto plano.
No cifra la sesión por lo que las transferencias de archivos también son en texto plano.
El servicio FTP soporta dos modos de conexión:
AL
•
E
Modo Activo: la conexión es iniciada por el servidor utilizando el puerto indicado por el
cliente FTP. L
•
IB
Modo Pasivo: el cliente FTP inicia la conexión para la transferencia utilizando el puerto
indicado por el servidor.
I M
P R
IM
N
I Ó
R S
V E
4
Desarrollo de Aplicaciones Multiplataforma. Programación de servicios y procesos
Tema 4. Servicios en red
F P
Utilizando la librería Apache Commons podemos implementar un cliente FTP que se
I A
conecta a un Servidor Filezilla FTP del paquete XAMPP.
N K
LI
N O
U M
AL
L E
I B
I M
P R
IM
N
I Ó
R S
VE
5
Desarrollo de Aplicaciones Multiplataforma. Programación de servicios y procesos
Tema 4. Servicios en red
F P
IA
N K
4.3. Servicio de transferencia de mensajes
LI
N O
El protocolo SMTP (Simple Mail Transfer Protocol) constituye el estándar de
internet para el intercambio de correo electrónico.
U M
AL
El protocolo SMTP se encarga del transporte del correo saliente desde el dispositivo
cliente hasta el servido que almacena los mensajes de los destinatarios. Desde el servidor
L E
se reenvía al servidor del destinatario, quien lo descarga localmente utilizando el protocolo
POP3 o lo consulta vía web utilizando el protocolo IMAP.
IB
El servicio utiliza el puerto 25 o el puerto 587 (presentación) para enviar el correo.
I M
El protocolo está formado por un conjunto de comandos y respuestas entre emisor y
receptor.
P R
El funcionamiento del protocolo se puede resumir en los siguientes pasos:
• IM
El dispositivo que envía el mensaje abre una conexión TCP con el servidor destino.
• N
El Servidor responde con el mensaje 220 service SMTP.
•
I Ó
El cliente (emisor) se identifica con HELLO.
•
R S
El Servidor acepta y lo notifica con “250 OK”. Si no está disponible contesta “421
Service Not Avaliable”. El servidor no es capaz de responder por el momento al emisor.
6
Desarrollo de Aplicaciones Multiplataforma. Programación de servicios y procesos
Tema 4. Servicios en red
• Message: A partir del objeto Session, se crea el mensaje de envío. Se hace mediante el
objeto Message. Es un clase abstracta por tanto deberemos trabajar con una subclase
que generalmente será javax.mail.internet MimeMessage.
• Address: A partir de Session y Message, indicaremos el destino del mensaje. Esta clase
también es abstracta por tanto trabajaremos con la subclase InternetAddress.
• Authenticator: Permite proteger el acceso a los recursos mediante el empleo de un
autentificador de nombre y clave asociada.
• Transport: Realiza el envío del mensaje.
• Store/Folder: Para la obtención de los mensajes. Después de obtener la sesión y
autentificarnos le indicamos a Store que protocolo utilizar. Una vez obtenido el Store,
F P
buscamos el folder que debe estar abierto para obtener los mensajes.
I A
N K
LI
N O
U M
AL
L E
I B
I M
P R
IM
N
I Ó
R S
VE
7
Desarrollo de Aplicaciones Multiplataforma. Programación de servicios y procesos
Tema 4. Servicios en red
F P
IA
N K
LI
N O
U M
AL
L E
IB
I M
P R
IM
N
I Ó
R S
V E
8
Desarrollo de Aplicaciones Multiplataforma. Programación de servicios y procesos
Tema 4. Servicios en red
F P
4.4. Servicio HTTP I A
N K
LI
HTTP (HyperText Transfer Protocol) es un protocolo creado en el 1990 en el CERN
N O
(Laboratorio Europeo de Física de las Partículas) utilizado para la transferencia de
hipertexto (páginas web) a través de la red (normalmente Internet). Es el método más
U M
común de intercambio de información en la World Wide Web, por el cual se transfieren las
páginas web o HTML a un ordenador. Sus características principales son las siguientes:
• AL
Los servidores HTTP (o servidores web) utilizan el puerto 80 para establecer su
•
conexión.
L E
actual. I B
Es un protocolo sin estado, no recuerda nada relativo a conexiones anteriores a la
•
I M
El lenguaje utilizado para crear los documentos (o páginas web) es el HTML.
• R
Permiten además la transferencia de cualquier otro tipo de ficheros.
P
•
IM
El protocolo por sí solo no establece mecanismos de seguridad, por lo que en un
principio cualquier puede acceder al documento que quiera.
• N
Existe una versión segura llamada HTTPS que permite el uso de cifrado siempre que lo
I Ó
compartan el cliente y el servidor.
•
R S
Es un protocolo cliente/servidor en el que un servidor almacena una serie de
documentos de forma que múltiples clientes pueden conectarse a él para acceder a los
V E mismos.
9
Desarrollo de Aplicaciones Multiplataforma. Programación de servicios y procesos
Tema 4. Servicios en red
•
nombre de dominio, el puerto, la ruta, ….
N O
El cliente web establece una conexión (socket) con el servidor web y solicita la página
•
(mensaje request).
U M
AL
El servidor envía la página (si no existe envía un código de error) y el cliente web
interpreta el HTML recibido (mensaje response del servidor).
• Se cierra la conexión.
L E
Para implementar un cliente HTTP podemos utilizar el componente JEditorPane en
IB
el que fijamos una URL. Este componente es capaz de renderizar páginas web de forma
muy básica.
I M
P R
IM
N
I Ó
R S
V E
10
Desarrollo de Aplicaciones Multiplataforma. Programación de servicios y procesos
Tema 4. Servicios en red
Utilizando la clase URL podemos leer el contenido de una página web y obtener su
código HTML.
F P
I A
N K
LI
N O
U M
AL
L E
I B
I M
P R
IM
N
4.5. RMI
I Ó
R S
V E RMI (Remote Method Invocation) es un paquete de JAVA que permite manejar
objetos (y sus respectivos métodos) de manera remota, para utilizar los recursos de un
servidor de manera transparente para el usuario local.
11
Desarrollo de Aplicaciones Multiplataforma. Programación de servicios y procesos
Tema 4. Servicios en red
Permite exportar objetos como objetos remotos para que otro proceso remoto
pueda acceder directamente como un objeto Java. Todos los objetos de una aplicación
distribuida basada en RMI deben ser implementados en Java. RMI forma parte del API de
Java y esta es una de sus principales ventajas, con lo que la integración de objetos remotos
en aplicaciones distribuidas se realiza sin necesidad de usar recursos adicionales. De esta
forma se utiliza la misma sintaxis para una llamada a un objeto local o un objeto remoto.
F P
IA
N K
LI
N O
U M
AL
Utilizando una interfaz remota el cliente invoca a los objetos remotos. Para esto se
ocupa una herramienta de JAVA, llamada RMI Registry. El RMI Registry puede estar
L E
localizado en un lugar distinto al servidor, y se encarga de registrar un determinado objeto
y asignarle un servidor que se encargará de procesar dicho objeto.
IB
La interacción con el objeto remoto se lleva a cabo a través de la interfaz remota.
I M
Esencialmente, ésta describe los métodos que pueden ser invocados de forma remota, y
P R
que el objeto remoto implementa. Cuando se obtiene una referencia a un objeto remoto,
el objeto no se envía a través de la red al cliente que lo solicita. En su lugar se genera un
IM
stub que constituye el proxy de la parte del cliente del objeto remoto. Todas las
interacciones del cliente se realizarán con esta clase stub, la cual es responsable de
N
gestionar los datos entre el sistema local y el remoto. Muchos clientes pueden tener
I Ó
referencias a un único objeto remoto. Cada cliente tiene su propio objeto stub que
representa al objeto remoto, pero dicho objeto remoto no se replica.
R S
La clase skeleton en la parte del servidor, es la responsable de gestionar las
V E llamadas al método y los datos enviados al objeto real referenciado. Éste es el proxy de la
parte del servidor para el objeto remoto. El sistema completo puede verse como un
modelo de cuatro capas.
12
Desarrollo de Aplicaciones Multiplataforma. Programación de servicios y procesos
Tema 4. Servicios en red
LI
extendiendo la clase UnicastRemoteObject (paquete java.rmi.server).
• Stub-Skeleton: o también llamada capa proxy, Dota a clientes y servidores de una
fueran locales. N O
interfaz que les permite localizar objetos remotos para invocar sus métodos como si
• M
Referencia remota. Esta capa se encarga de la creación y gestión de las referencias a
U
AL
objetos remotos, manteniendo para ello una tabla de objetos distribuidos. Además,
convierte las llamadas remotas en peticiones hacia la capa de transporte.
•
E
La capa 4 es la de transporte. Es la responsable de realizar las conexiones y de
L
transportar los datos de una máquina a otra. RMI por defecto usa TCP, aunque admite
otros.
I B
I M
P R
4.5.1. Creación de una aplicación rmi
IM
En este apartado se explicará los pasos que deben realizarse para elaborar y
N
ejecutar una aplicación rmi. Esta aplicación lo único que realiza es enviar un mensaje por la
pantalla.
I Ó
R S
4.5.2. Interfaz remota
VE En primer lugar se escribe la interfaz remota del servidor, que en este caso se
llamará Mensaje. Todas interfaz remotas deben declararse como public y debe extender
java.rmi.Remote. Además, esta interfaz debe definir los métodos que serán accesibles
remotamente. Cada uno de estos métodos debe lanzar la excepción
java.rmi.RemoteException.
13
Desarrollo de Aplicaciones Multiplataforma. Programación de servicios y procesos
Tema 4. Servicios en red
IM
skeleton se crea automáticamente a partir de la versión 1.2 de java y el stub a partir de la
versión 5.
N
I Ó
4.5.5. Creación del servidor
R SCrea el objeto que será accedido remotamente, la instancia del objeto que
14
Desarrollo de Aplicaciones Multiplataforma. Programación de servicios y procesos
Tema 4. Servicios en red
F P
4.5.6. Creación del cliente
I A
N K
LI
Se escribe la clase cliente. Realiza una petición a un servidor de nombres RMI con el
método Naming.lookup() pasando como argumento el nombre con el que se registró el
objeto remoto, obteniendo una referencia al objeto remoto
N O
Una vez recibida, se pueden invocar sus métodos como si fuera un objeto local. Los
U M
objetos pasados como argumento y recibidos como valor. Para poder ejecutar un método
remoto, RMI tiene que transmitir los argumentos del método desde el cliente al servidor, y
AL
transmitir los resultados en la dirección contraria. El proceso de codificar los argumentos y
resultados para su transmisión se denomina marshalling.
L E
I B
I M
P R
IM
N
I Ó
R S
VE 4.5.7. Servidor de nombres rmi
Puede iniciarse de dos maneras diferentes, indicando en que puerto debe escuchar:
15
Desarrollo de Aplicaciones Multiplataforma. Programación de servicios y procesos
Tema 4. Servicios en red
• Utilizando el Naming.
• Mediante una instancia del registro: LocateRegistry.getRegistry().
F P
IA
N K
LI
N O
U M
AL
La segunda forma de ejecutar la aplicación es utilizar el paquete java.rmi.registry
que contiene también la clase LocateRegistry que puede usarse para crear o encontrar un
registro.
L E
•
IB
El método LocateRegistry.getRegistry() devuelve una referencia de una instancia de un
registro ejecutándose en un sistema remoto.
• I M
El método LocateRegistry.createRegistry() permite crear un registro propio, que puede
R
ejecutarse dentro de nuestra aplicación en lugar de utilizar la aplicación rmiregistry.
P
IM
En el programa servidor creamos el registro en el puerto 5555 y registramos el
objeto utilizando el registry.rebind:
N
I Ó
R S
V E
16
Desarrollo de Aplicaciones Multiplataforma. Programación de servicios y procesos
Tema 4. Servicios en red
F P
I A
N K
LI
N O
El resultado de la aplicación es el mismo pero sin la necesidad de tener que ejecutar
manualmente el servicio de nombres rmi.
U M
AL
L E
I B
I M
P R
IM
N
I Ó
R S
VE
17
Desarrollo de Aplicaciones Multiplataforma. Programación de servicios y procesos
Tema 4. Servicios en red
Recursos y enlaces
• JavaMail
F P
IA
• Librería Apache Commons Net.
N K
LI
N O
U M
• Oracle Java RMI. AL
L E
IB
I M
P R
IM
Conceptos clave N
• I Ó
•
R S
En los protocolos con estado el servidor debe almacenar información de la sesión.
La clase URL es representa un puntero a un recurso de la red.
V E •
•
Un servidor RMI es un repositorio centralizado de objetos remotos.
RMI: Permite trabajar con objetos y métodos remotos.
18
Desarrollo de Aplicaciones Multiplataforma. Programación de servicios y procesos
Tema 4. Servicios en red
Test de autoevaluación
L E
b) Los skeleton son mecanismos de sincronización de hilos y procesos.
I B
c) En el cliente los skeleton permiten invocar métodos remotos como si fueran locales.
I M
d) En el cliente los stubs permiten invocar métodos remotos como si fueran locales.
P R
Ponlo en práctica IM
N
I Ó
R S
Actividad 1
19
Desarrollo de Aplicaciones Multiplataforma. Programación de servicios y procesos
Tema 4. Servicios en red
SOLUCIONARIOS
Test de autoevaluación
N K
HTTP es un servicio de nivel de
LI
e) Internet
f) Transporte N O
g) Aplicación.
U M
AL
h) Red.
L
En un sistema de invocación de métodos remotos:E
IB
e) Los stubs son tuberías que comunican los dos extremos de las aplicaciones.
I M
f) Los skeleton son mecanismos de sincronización de hilos y procesos.
P R
g) En el cliente los skeleton permiten invocar métodos remotos como si fueran locales.
h) En el cliente los stubs permiten invocar métodos remotos como si fueran locales.
IM
N
I Ó
R S
V E
20
Desarrollo de Aplicaciones Multiplataforma. Programación de servicios y procesos
Tema 4. Servicios en red
Ponlo en práctica
Actividad 1
F P
I
El Cliente introduce una cantidad en euros y después escogeremos la operación
A
N K
a realizar: D convertir en dólares, Y convertir a yenes, P convertir a pesos, L convertir a
libras. F (final). Se visualiza la operación y se repite el proceso hasta que se introduzca la
orden F.
LI
N O
Solución Actividad 1
U M
AL
Interfaz.
L E
I B
I M
P R
IM
N
I Ó
R S
V E
21
Desarrollo de Aplicaciones Multiplataforma. Programación de servicios y procesos
Tema 4. Servicios en red
Implementación de la interfaz
F P
IA
N K
LI
N O
U M
AL
Servidor RMI
L E
IB
I M
P R
IM
N
I Ó
R S
V E
22
Desarrollo de Aplicaciones Multiplataforma. Programación de servicios y procesos
Tema 4. Servicios en red
Cliente
F P
I A
N K
LI
N O
U M
AL
L E
I B
I M
P R
IM
N
I Ó
R S
V E
23