##
LA CLASE URL

La clase URL contiene contructores y métodos para la manipulación de URL (Universal Resource Locator): un objeto o servicio en Internet. El protocolo TCP necesita dos tipos de información: la dirección IP y el número de puerto. Vamos a ver como podemos recibir pues la página Web principal de nuestro buscador favorito al teclear:

        http://www.yahoo.com

En primer lugar, Yahoo tiene registrado su nombre, permitiendo que se use yahoo.com como su dirección IP, o lo que es lo mismo, cuando indicamos yahoo.com es como si hubiesemos indicado 205.216.146.71, su dirección IP real.

La verdad es que la cosa es un poco más complicada que eso. Hay un servicio, el DNS (Domain Name Service), que traslada www.yahoo.com a 205.216.146.71, lo que nos permite teclear www.yahoo.com, en lugar de tener que recordar su dirección IP.

Si queremos obtener la dirección IP real de la red en que estamos corriendo, podemos realizar llamadas a los métodos getLocalHost() y getAddress(). Primero, getLocalHost() nos devuelve un objeto iNetAddress, que si usamos con getAddress() generará un array con los cuatro bytes de la dirección IP, por ejemplo:

        InetAddress direccion = InetAddress.getLocalHost();
        byte direccionIp[] = direccion.getAddress();

Si la dirección de la máquina en que estamos corriendo es 150.150.112.145, entonces:

        direccionIp[0] = 150
        direccionIp[1] = 150
        direccionIp[2] = 112
        direccionIp[3] = 145

Una cosa interesante en este punto es que una red puede mapear muchas direcciones IP. Esto puede ser necesario para un Servidor Web, como Yahoo, que tiene que soportar grandes cantidades de tráfico y necesita más de una dirección IP para poder atender a todo ese tráfico. El nombre interno para la dirección 205.216.146.71, por ejemplo, es www7.yahoo.com. El DNS puede trasladar una lista de direcciones IP asignadas a Yahoo en www.yahoo.com. Esto es una cualidad útil, pero por ahora abre un agujero en cuestión de seguridad.

Ya conocemos la dirección IP, nos falta el número del puerto. Si no se indica nada, se utilizará el que se haya definido por defecto en el fichero de configuración de los servicios del sistema. En Unix se indican en el fichero /etc/services, en Windows-NT en el fichero services y en otros sistemas puede ser diferente.

El puerto habitual de los servicios Web es el 80, así que si no indicamos nada, entraremos en el servidor de Yahoo por el puerto 80. Si tecleamos la URL siguiente en un navegador:

        http://www.yahoo.com:80

también recibiremos la página principal de Yahoo. No hay nada que nos impida cambiar el puerto en el que residirá el servidor Web; sin embargo, el uso del puerto 80 es casi estándar, porque elimina pulsaciones en el teclado y, además, las direcciones URL son lo suficientemente difíciles de recordar como para añadirle encima el número del puerto.

Si necesitamos otro protocolo, como:

        ftp://ftp.microsoft.com

el puerto se derivará de ese protocolo. Así el puerto FTP de Microsoft es el 21, según su fichero `services`. La primera parte, antes de los dos puntos, de la URL, indica el protocolo que se quiere utilizar en la conexión con el servidor. El protocolo http (HyperText Transmission Protocol), es el utilizado para manipular documentos Web. Y si no se especifica ningún documento, muchos servidores están configurados para devolver un documento de nombre index.html.

Con todo esto, Java permite los siguientes cuatro constructores para la clase URL:

    public URL( String spec ) throws MalformedURLException;
    public URL( String protocol,String host,int port,String file ) throws MalformedURLException;
    public URL( String protocol,String host,String file ) throws MalformedURLException;
    public URL( URL context,String spec ) throws MalformedURLException;

Así que podríamos especificar todos los componenetes del URL como en:

      URL( "http","www.yahoo.com","80","index.html" );

o dejar que los sistemas utilicen todos los valores por defecto que tienen definidos, como en:

      URL( "http://www.yahoo.com" );

y en los dos casos obtendríamos la visualización de la página principal de Yahoo en nuestro navegador.

|  | ##### [Anterior] [Indice] [Siguiente]