Disponible la nueva versión "donationware" 7.3 de OrganiZATOR
Descubre un nuevo concepto en el manejo de la información.
La mejor ayuda para sobrevivir en la moderna jungla de datos la tienes aquí.

Notas sobre Internet

[Home]  [Inicio]  [Índice]


Apéndice G.  Localizador de recursos unificado

 §1  Sinopsis

Como se ha señalado ( A5.2), Berners-Lee, el inventor de la Web, diseñó un sistema estándar para acceder a los recursos de Internet que forman la World Wide Web, de forma que cualquier recurso tiene un localizador (dirección en la Red) URL ("Unified Resource Locator"). Se trata en realidad de un comando que indica al navegador de que tipo de información/servicio se trata y donde conseguirlo, tiene tres componentes:

  • El nombre del sistema utilizado para acceder al recurso.
  • El nombre de la máquina que alberga el recurso.
  • El nombre del recurso dado como un camino de búsqueda (path).
§2  Sintaxis

La forma general siempre es la misma:

<Servicio (parte general)>:<Servicio (parte específica)>

La sintaxis de los URL es variable, dependiendo del servicio concreto; cuando se trata de servicios que implican el uso de un protocolo basado en IP por un servidor específico, la sintaxis para la parte específica adopta la forma:

//<user>:<password>@<host>:<port>/<url-path>

Todas o algunas de las partes pueden ser excluidas: <user>:<password>@, :<password>, :<port> y /<url-path> pueden no existir. La doble barra inclinada con que empieza esta parte indica simplemente que la notación cumple con el esquema sintáctico utilizado en Internet. Los diversos componentes siguen las siguientes reglas:

  • user:  Un nombre de servicio (por ejemplo ftp) permite la especificación de un nombre de usuario. Dentro de este campo, cualquier ocurrencia de los caracteres ":", "@" o "/" debe ser codificado.
  • password: Una clave de acceso opcional (en caso de existir, sigue al nombre del usuario separado por una coma). El nombre de usuario y la clave de acceso son seguidas por la arroba "@". Dentro de este campo, cualquier ocurrencia de los caracteres ": "@" o "/" debe ser codificado.
  • Teng en cuenta que un nombre de usuario o password vacíos, son diferentes de sin nombre o password. No hay forma de indicar un password sin señalar algún nombre de usuario. Por ejemplo: ftp://@host.com/ tiene un nombre de usuario vacío sin password, ftp://host.com/ no tiene nombre de usuario, y ftp://foo:@host.com/ tiene "foo" como nombre de usuario y una clave de acceso vacía.
  • host:  Un nombre de servidor Internet válido (por ejemplo ctv.es) o su dirección IP en forma de cuatro grupos de dígitos separados por puntos. Los nombres de servidores (alfanuméricos) válidos están formados por una secuencia de etiquetas (nombres de dominio) separadas por puntos, cada una de estas etiquetas empieza y termina por un carácter alfanumérico (alfabeto inglés), pudiendo contener el guión "-". La etiqueta de la derecha (la que indica el dominio de mayor nivel) nunca puede empezar con un carácter numérico, dado que esto es lo que las distingue sintácticamente de las direcciones IP numéricas.
  • port:  Número de puerto al que conectar ( Nota11). La mayoría de los servicios utilizan protocolos que establecen un número determinado por defecto (si no se indica otra cosa). Si hay que especificar algún número se indica (en decimal) separando el valor del nombre del host con una coma (si se omite este número, la coma también se omite).
  • url-path:  Esta parte (y la forma en que es interpretada) es específica de cada servicio. Es conocida como camino-url ("Url-path"), y proporciona los detalles de como puede ser accedido el recurso referenciado. Obsérvese que el "/" entre el servidor (host) o puerto (port) y el url-path no forma parte del url-path.
  • Los comandos de <Servicio> tienen nombres en los que se permiten las minúsculas (alfabeto inglés) a/z, dígitos (0/9) y los caracteres especiales mas (+), punto (.) y guión (-). Por conveniencia algunos programas aparentan admitir mayúsculas para estos nombres porque internamente las transforman a minúsculas.
§3  Codificación

En realidad cada URL es una secuencia de bytes representados por el carácter correspondiente en el sistema de codificación US-ASCII ( E2.2.1a).

En ocasiones, bien porque se empleen caracteres no escribibles (por ejemplo: Tab, CR, NL, LF, etc), bien porque se trate de caracteres inseguros ( ) o porque el carácter en cuestión sea un carácter reservado ( ), los octetos pueden venir indicados por tripletes de caracteres escribibles expresados por su el carácter "%" seguidos los dos caracteres de su representación hexadecimal utilizando "0123456789ABCDEFabcdef" como juego de caracteres ( E2.2.1a). Por ejemplo, el carácter "#" puede ser codificado como "%23".

§3.1  Caracteres inseguros:

Determinados caracteres pueden ser inseguros por una serie de rezones. Por ejemplo: el espacio es inseguro porque espacios significativos pueden desaparecer, o por el contrario, pueden introducirse espacios no significativos en los procesos de transcripción tipográfica o de procesadores de texto. Los caracteres "<" y ">" son inseguros porque suelen utilizarse como delimitadores en el texto escrito (como ocurre en este mismo texto). Las comillas son utilizadas como delimitadores de los URLs en determinados sistemas. El carácter "# " es inseguro, y debe ser codificado siempre, porque muy frecuentemente se utiliza en los documentos HTML como separador entre un URL y un puntero a una etiqueta (dentro de un documento) que a veces puede seguir al propio URL. El carácter "%" es inseguro por razones obvias (se utiliza para codificar otros caracteres). Otros caracteres son inseguros porque determinadas pasarelas (gateways) y agentes de comunicación y transporte pueden modificarlos a veces, entre estos se encuentran: "{", "}", "|", "\", "^", "~", "[", "]" y "`". Todos estos caracteres inseguros deben ser siempre codificados cuando aparecen en algún URL.

§3.2  Caracteres reservados:

Muchos esquemas de codificación URL reservan determinados caracteres para usos específicos, si el URL a representar incluye un carácter de este tipo (en el esquema utilizado), el carácter debe ser codificado. Los caracteres ";", "/", "?", ":", "@", "=" y "&" son los únicos que pueden tener este sentido especial en alguno de los esquemas de codificación de URLs.

Aunque la interpretación de un octeto suele ser la misma cuando se representa mediante un carácter que cuando adopta su forma codificada (un triplete), esto no es necesariamente cierto para los caracteres reservados. Codificar un carácter reservado para un esquema particular puede cambiar totalmente la semántica del URL. Debido a esto, solo pueden ser utilizados sin codificar los caracteres alfanuméricos, los especiales "$-_.+!*'()," y los caracteres reservados (siempre que se utilicen con sus significado específico). De otro lado, los caracteres que no necesitan ser codificados (incluyendo los alfanuméricos) pueden serlo, siempre que no sean caracteres reservados en el esquema utilizado.

§4 Servicios

Los servicios estandarizados estandarizados a la fecha son los que se indican (observe que la mayoría recibe el mismo nombre que el protocolo que utilizan).

§4.1  http:

Se refiere a recursos que son accesibles utilizando el protocolo HTTP ("HyperText Transfer Protocol"), normalmente un servidor de páginas Web que enviará la información en formato HTML.  La forma estándar del comando es:

http://<host>:<port>/<path>?<searchpart>

Los significados de <host> y <port> son los anteriormente señalados, el valor por defecto para este último es 80. No se permite nombre de usuario o clave de acceso.

<path> señala la posición del recurso dentro de host, mientras que <searchpart> es una cadena de consulta precedida por "?". Ambas etiquetas son opcionales (si no se utilizan, la barra "/" que las precede también se omite). En ninguna de estas dos etiquetas se permiten los caracteres "/", ";", "?". Ejemplo:

http://www.zator.com/Cpp/index.htp

Se trata de una página Web, el servidor es "www.zator.com", dentro de este, se nos referimos al documento (fichero) "index.htp" del directorio "Cpp".

§4.2  https:

Servidor de páginas Web con ciertas características de seguridad en las transmisiones. Por defecto utiliza el puerto 443.

§4.3  file:

Este servicio se utiliza para señalar ficheros que son accesibles en determinado host de Internet;  a diferencia de los demás, no tiene porqué tratarse de ficheros universalmente accesibles. La forma genérica del comando es:

file://<host>/<path>

<host> tiene el sentido ya señalado , <path> es una localización dentro del servidor en cuestión, por ejemplo:

file://zator.host.com/private/Url.txt

Este comando es un caso excepcional y poco frecuente, ya que no especifica un método de acceso al recurso referenciado (fichero), por lo que su utilización es muy limitada, sin embargo, en casos especiales, cuando en la designación del servidor se utiliza la palabra "localhost", o una cadena vacía, para designar el equipo local (la máquina en la que se interpreta la URL), el comando file puede utilizarse para acceder con el navegador a ficheros localizados en el propio equipo. Este servicio es útil para equipos que tengan páginas Web en sus discos duros y además dispongan de un navegador (la tendencia es que los modernos Sistemas Operativos, como Windows 98, incluyan el navegador integrado con el propio SO). Ejemplo:

file://D:/Doc/Info/Internet/Index.htm

Fichero en el propio equipo con formato de marcas de hipertexto HTML ( A5.2).

§4.4  ftp:

Este servicio se utiliza para referenciar recursos (directorios y ficheros) accesibles mediante FTP ("File Transfer Protocol"). La forma general es la ya señalada:

ftp://<user>:<password>@<host>:<port>/<url-path>

En este caso, <user> y <password> se utilizan como comandos de acceso una vez establecida la conexión. Si no se utilizan ninguna y el servidor solicita dichos valores (que es lo mas probable), se puede utilizar la convención establecida para servidores FTP anónimos:

  • Utilizar "anonymous" como nombre de usuario.
  • Utilizar la dirección e-mail como password.

La parte <url-path> del comando tiene la siguiente sintaxis:

<cwd1>/<cwd2>/.../<cwdN>/<name>;type=<typecode>

Donde <cwd1> a <cwdN> y <name> son cadenas alfanuméricas (posiblemente codificadas), y <typecode> es un código de un carácter, ("a", "i", o "d"). Esta parte puede ser omitida. Las etiquetas <cwdX> y <name> pueden estar vacías, incluso puede omitirse todo el url-path, incluyendo el carácter "/" que la precede. En realidad esta parte es interpretada como una serie de comandos FTP.

Cada una de las etiquetas <cwd> supone un argumento, que es utilizado secuencialmente para el comando CWD ("Change Working Directory"). Si el typecode es "d", realiza un comando NLST ("Name LiST") con la etiqueta <name> como argumento;  el resultado es interpretado como un listado de los ficheros del directorio. En caso contrario realiza un comando TYPE utilizando <typecode> como argumento, procediendo después a acceder al fichero de nombre <name> (por ejemplo utilizando la orden RETR).

Los caracteres "/" y ";" deben ser evitados en los parámetros para nombres o comandos CWD, y en caso de necesitarse, deben ser codificados (estos componentes son decodificados antes de su utilización en el protocolo FTP). En particular, si la secuencia FTP necesaria para acceder un fichero concreto requiere la utilización del carácter "/", como argumento para un comando CWD o RETR, es necesario codificar cada ocurrencia del mismo.

Por ejemplo: La URL  ftp://minombre@zator.dom/%2Fetc/xyz es interpretada conectando con el servidor zator.dom, como el usuario minombre (preguntando por un password si es necesario), ejecutando un comando CWD /etc y posteriormente un RETR xyz.

Como puede verse es distinto a: ftp://minombre@zator.dom/etc/xyz que realiza CWD etc y después un RETR xyz; el CWD inicial es forzado a ejecutarse desde el directorio inicial por defecto del usuario minombre.

Por otra parte, el comando ftp://minombre@zator.dom//etc/xyz, puede realizar el comando CWD con un argumento nulo, después CWD etc; y finalmente un RETR xyz.

Estos comandos FTP pueden usarse para otras operaciones, por ejemplo, es posible actualizar un fichero en un servidor remoto u obtener información de su contenido listando sus directorios. Ejemplo:

ftp://oak.oakland.edu/simtel/win3/eudora/eudrm144.zip

Se trata de un comando que nos permitiría hacer FTP con el servidor de la universidad de Oakland para "bajar" el manual de Eudora 1.44

§4.5  mailto:

Este URL se utiliza para designar una dirección e-mail. La sintaxis estándar de este servicio es:

mailto:<dirección e-mail según RFC822>

Ejemplo:

mailto:support@zator.com

Tenga en cuenta que en <dirección e-mail> no existen caracteres reservados y que el signo "%" es utilizado muy frecuentemente en las direcciones según RFC 822 (  www.faqs.org/rfcs), por lo que debe ser codificado.

A diferencia de muchos otros esquemas de URLs, este comando no representa un recurso que pueda ser accedido directamente. Puede aceptar argumentos adicionales, por defecto "Subject:", etc.

§4.6  gopher:

Este servicio se utiliza para designar recursos accesibles mediante Gopher. El protocolo Gopher original (especificado en RFC 1436), soporta ítemes y series de ítemes (directorios). Por su parte, Gopher+ incluye un conjunto de extensiones compatibles en sentido descendente con el Gopher original. Permite asociar un número arbitrario de conjuntos de atributos y representaciones alternativas de los ítemes Gopher.

La sintaxis genérica es:

gopher://<host>:<port>/<gopher-path>

Donde <gopher-path> puede adoptar una de las siguientes formas (dentro de esta etiqueta no existen caracteres reservados):

<gophertype><selector>

<gophertype><selector>%09<search>

<gophertype><selector>%09<search>%09<gopher+string>

El valor por defecto de <port> es 70 ( Nota11). <gophertype> es un campo de un carácter indicativo del tipo de recurso a que se refiere el comando; su valor por defecto es "1". Por otra parte <gopher-path> puede faltar completamente, en cuyo caso el delimitador "/" puede omitirse también.

<selector> es la denominada cadena selectora (selector string), una secuencia de bytes que puede contener cualquier valor excepto el 09 hexadecimal (US-ASCII HT o tab); el 0A hexadecimal (US-ASCII LF) y el 0D (US-ASCII CR). Los clientes Gopher indican al servidor que ítemes quieren recuperar enviando esta cadena. Enviar una cadena vacía es la forma por la que los clientes notifican que desean acceder al directorio raíz del servidor. En ocasiones el <selector> comienza con una copia del carácter <gophertype>, en cuyo caso dicho carácter puede aparecer dos veces consecutivamente. Ejemplo:

gopher://gopher.creaf.com/

Gopher al servidor de Creative Lab (  www.creaf.com).

En caso que la URL se refiera a una búsqueda que debe ser enviada a un buscador Gopher, el <selector> es un TAB codificado (%09) seguido de la cadena de búsqueda;  por su parte el cliente Gopher envía al servidor este selector string (decodificado), seguido de la cadena de búsqueda.

§4.7  news:

Según la RFC 1036, este URL se refiere grupos de noticias ("Usenet") o a artículos individuales dentro de ellos.   La sintaxis es cualquiera de las dos siguientes:

news:<nombre-del-grupo-de-noticias>

news:<mensage-id>

El elemento <nombre-del-grupo> es un nombre compuesto de etiquetas jerarquizadas separadas por puntos, por ejemplo:

news:alaska-software.news.3pp news:alaska-software.news.bugreport news:alaska-software.news.data-access

Si se utiliza el carácter "*" para designar al <nombre-del-grupo>, por ejemplo: news:*, significa que la URL se refiere a todos los grupos de noticias disponibles.

Por su parte <mensage-id> es un identificativo de mensaje que adopta la forma genérica:

<unico>@<nombre de dominio>

Precisamente la aparición del carácter "@" es lo que distingue un identificador de mansaje de un grupo de noticias.

§4.8  nntp:

Esta es una forma alternativa de referenciar artículos de los grupos de noticias; útil para referenciar artículos de servidores NNTP (RFC 977). La sintaxis estándar es:

nntp://<host>:<port>/<newsgroup-name>/<article-number>

Donde <host> y <port> tienen el sentido ya indicado (el valor por defecto para este último es 119). Por su parte <newsgroup-name> es el nombre del grupo de noticias, mientras que <article-number> es una identificación numérica que permite identificar el artículo (mensaje) dentro del grupo.

Hay que señalar que la mayoría de los servidores NNTP de Internet actuales están configurados de forma que solo permiten el acceso a los clientes locales, por lo que no se trata de recursos accesibles universalmente, razón por la que se prefiere la forma anterior (news ) para la identificación de los artículos individuales de los grupos de noticias.

§4.9  telnet:

Este servicio se utiliza para señalar servicios interactivos accesibles mediante el protocolo del mismo nombre. En la práctica esto supone el acceso como terminal remoto de un host ( 8.7). La sintaxis estándar es:

telnet://<user>:<password>@<host>:<port>/

Ejemplo:

telnet://well.sf.ca.us

En estos casos, en realidad el navegador llama a un programa independiente, el cliente Telnet [1]. El carácter "/" final puede omitirse, así como toda la parte <user>:<password>. El puerto por defecto es el 23.

§4.10  wais:

Este servicio se usa tanto para búsquedas en bases de datos WAIS como para referenciar documentos individuales en estos servidores ( ). La sintaxis adopta una de las formas siguientes:

wais://<host>:<port>/<database>

wais://<host>:<port>/<database>?<search>

wais://<host>:<port>/<database>/<wtype>/<wpath>

El significado de <host> y <port> ya ha sido descrito anteriormente (el valor por defecto para este último es 210). La forma primera se utiliza para bases de datos WAIS utilizables para búsquedas; la segunda especifica una búsqueda concreta <search>, en la base de datos <database> especificada. La tercera forma referencia el acceso a un documento concreto dentro de una base de datos wais; en este caso, <wtype> es la especificación del tipo de objeto, ya que muchos servidores requieren que el cliente indique el tipo de objeto que pretende recibir. <wpath> es una identificación del documento.

§4.11  prospero:

Este servicio se utiliza para señalar recursos accesibles mediante el servicio de directorios prospero. Estas URLs adoptan la siguiente sintaxis:

prospero://<host>:<port>/<hname>;<field>=<value>

Los componentes <host> y <port> tienen el significado ya señalado (el valor por defecto para el número de puerto es 1525). <hname> es el nombre del objeto según el protocolo prospero (específico de cada servidor e interpretado por él exclusivamente). El punto y coma ";" solo puede incluirse si se incluye <hname>.

Estas URLs se traducen en la conexión a un servidor de directorios prospero, localizado en el <host> y puerto especificados, en orden a determinar el método de acceso apropiado para un recurso determinado.

Téngase en cuenta que muchos <hname> pueden comenzar con una barra inclinada "/", por lo que pueden darse situaciones como: prospero://host.dom//pros/name, donde <hname> es "/pros/name".

  Inicio.


[1]  MS Windows 98 dispone de un cliente Telnet. Es el programa telnet.exe en el directorio C:\Windows. Este programa dispone de un fichero de ayuda en el que se pueden recabar detalles sobre su funcionamiento.