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] |