Portada » Informática » Comunicaciones en Red: Fundamentos y Programación
Las redes informáticas son sistemas de comunicaciones que conectan ordenadores y otros equipos para compartir información y recursos.
Los servicios en red son programas basados en protocolos y estándares que facilitan diversas tareas:
TCP/IP opera sobre el concepto del modelo cliente/servidor. La capa de aplicación es el nivel que utilizan los programas para comunicarse a través de una red con otros programas.
Los dos extremos dialogan siguiendo un protocolo de aplicación:
www.dominio.es
mediante GET HTTP/1.0Pasos para establecer, mantener y cerrar una conexión TCP/IP:
El servicio DNS proporciona ventajas adicionales:
El protocolo FTP permite el intercambio de archivos entre máquinas remotas a través de la red. Es poco seguro ya que envía la información en forma de texto plano, pero puede solucionarse mediante la encriptación de todo el tráfico de información.
El servicio de correo basado en el protocolo SMTP (Protocolo Simple de Transferencia de Correo) sigue el modelo cliente/servidor:
El servicio SMTP utiliza el puerto 25. Este protocolo se encarga del transporte del correo saliente desde la máquina del usuario remitente hasta el servidor que almacena los mensajes de los destinatarios.
HTTP es un protocolo sin estado, lo que significa que no recuerda nada relativo a conexiones anteriores a la actual (para recordar usa las cookies).
GET /Ejemplo.htm HTTP/1.1
.HTTP/1.1 200 OK
(si existe la página).El paquete principal que proporciona la API de Java para programar aplicaciones con comunicaciones en red es java.net
.
java.rmi
: Permite implementar una interfaz de control remoto (RMI).javax.mail
: Permite implementar sistemas de correo electrónico.InetAddress
: Implementa una dirección IP.Socket
: Implementa un extremo de una conexión bidireccional.ServerSocket
: Implementa un socket que los servidores pueden utilizar para escuchar y aceptar peticiones de clientes.DatagramSocket
: Implementa un socket para el envío y recepción de datagramas.MulticastSocket
: Representa un socket datagrama, útil para enviar paquetes multidifusión.NetworkInterface
: Representa una interfaz de red compuesta por un nombre y una lista de direcciones IP asignadas a esta interfaz.URI
.URL
: Representa una dirección URL.URLConnection
: Es la superclase de todas las clases que representan un enlace de comunicaciones entre la aplicación y una URL.HttpURLConnection
: Representa una URLConnection
con soporte para HTTP y con ciertas características especiales.Proporciona objetos que puedes utilizar para manipular tanto direcciones IP como nombres de dominio. También proporciona métodos para resolver los nombres de host a sus direcciones IP y viceversa.
getLocalHost()
: Devuelve un objeto de tipo InetAddress
con los datos de direccionamiento de mi equipo en la red local (no del conocido localhost).getByName(String host)
: Devuelve un objeto de tipo InetAddress
con los datos de direccionamiento del host que le pasamos como parámetro.getAllByName(String host)
: Devuelve un array de objetos de tipo InetAddress
con los datos de direccionamiento del host pasado como parámetro.UnknownHostException
si no pueden resolver el nombre pasado como parámetro.getHostAddress()
: Devuelve en una cadena de texto la correspondiente IP.getAddress()
: Devuelve un array formado por los grupos de bytes de la IP correspondiente.URL (Localizador Uniforme de Recursos) representa una dirección a un recurso de la World Wide Web.
La estructura de una URL se puede dividir en varias partes:
.
Se puede analizar y descomponer una URL
● getProtocol(). Obtiene el protocolo de la URL.
● getHost(). Obtiene el host de la URL.
● getPort(). Obtiene el puerto de la URL, si falla -1.
● getDefaultPort(). Obtiene el puerto por defecto asociado a la URL, si falla -1.
● getFile(). Obtiene el fichero de la URL o una cadena vacía si no existe.
● getRef(). Obtiene la referencia de la URL o null si no la tiene
pasos a seguir para leer una URL son:
● Crear el objeto URL mediante URL url=new URL(…);
● Obtener una conexión con el recurso especificado mediante URL.
openConnection().
● Abrir conexión con esa URL mediante URL.openStream().
● Manejar los flujos necesarios para realizar la lectura
Programación de un cliente HTTP.
HTTP se basa en sencillas operaciones de solicitud/respuesta.
● Un cliente establece una conexión con un servidor y envía un mensaje con los datos de la solicitud.
● El servidor responde con un mensaj
Programación de servidores
● El servidor debe poder atender a multitud de peticiones que pueden ser concurrentes en el tiempo(Hilos).
● Es importante optimizar el tiempo de respuesta del servidor
Implementar comunicaciones simultáneas.
servidor HTTP realista tendrá que atender varias peticiones simultáneamente.tenemos que ser capaces de modificar su código para que pueda utilizar varios hilos de ejecución
– hilo principal creará el socket servidor que permanecerá a la espera de que
llegue alguna petición.
-Cuando se reciba una, la aceptará y le asignará un socket cliente para enviarle la respuesta.
-creará un nuevo hilo para que la despache por el socket cliente que le asignó. De esta forma, podrá seguir a la espera de nuevas peticiones.
– Monitorización de tiempos de respuesta.
Tiempo de procesamiento. Es el tiempo que el servidor necesita para procesar la petición del cliente y enviar los datos.Para medir el tiempo con que transcurre en el servidor para procesar la solicitud del cliente .
Tiempo de transmisión. Es el tiempo que tardan los mensajes en llegar a su destino
El tiempo de transmisión será necesario que el servidor envíe un mensaje con el tiempo del sistema al cliente. El cliente al recibir el mensaje debe calcular su tiempo de sistema y compararlo con el tiempo recibido en el mensaje.