Un localizador uniforme de recursos ( URL ), conocido coloquialmente como una dirección en la Web , [1] es una referencia a un recurso que especifica su ubicación en una red informática y un mecanismo para recuperarlo. Una URL es un tipo específico de Identificador uniforme de recursos (URI), [2] [3] aunque muchas personas usan los dos términos indistintamente. [4] [a] Las URL se utilizan con mayor frecuencia para hacer referencia a páginas web ( HTTP / HTTPS ), pero también se utilizan para transferencia de archivos ( FTP ), correo electrónico ( mailto ), acceso a bases de datos ( JDBC ) y muchas otras aplicaciones.
La mayoría de los navegadores web muestran la URL de una página web sobre la página en una barra de direcciones . Una URL típica podría tener el formato http://www.example.com/index.html
, que indica un protocolo ( http
), un nombre de host ( www.example.com
) y un nombre de archivo ( index.html
).
Los localizadores uniformes de recursos fueron definidos en RFC 1738 en 1994 por Tim Berners-Lee , el inventor de la World Wide Web , y el grupo de trabajo URI del Grupo de trabajo de ingeniería de Internet (IETF), [7] como resultado de la colaboración iniciada en la sesión de los documentos vivos del IETF en 1992. [7] [8]
El formato combina el sistema preexistente de nombres de dominio (creado en 1985) con la sintaxis de ruta de archivo , donde se utilizan barras para separar los nombres de directorio y de archivo//
. Ya existían convenciones en las que los nombres de servidor podían ir precedidos de una doble barra ( ) para completar las rutas de archivo . [9]
Berners-Lee luego expresó su pesar por el uso de puntos para separar las partes del nombre de dominio dentro de los URI , deseando haber usado barras en todo el texto, [9] y también dijo que, dados los dos puntos que siguen al primer componente de un URI, las dos barras antes del nombre de dominio eran innecesarias. [10]
Los primeros colaboradores de la WorldWideWeb, entre ellos Berners-Lee, propusieron originalmente el uso de UDIs: Universal Document Identifiers (Identificadores Universales de Documentos). Un borrador temprano (1993) de la Especificación HTML [11] hacía referencia a los Localizadores de Recursos "Universales". Esto se abandonó en algún momento entre junio de 1994 ( RFC 1630) y octubre de 1994 (draft-ietf-uri-url-08.txt). [12] En su libro Weaving the Web (Tejiendo la Web) , Berners-Lee enfatiza su preferencia por la inclusión original de "universal" en la expansión en lugar de la palabra "uniforme", por la que se cambió más tarde, y da un breve relato de la controversia que llevó al cambio.
Cada URL HTTP se ajusta a la sintaxis de un URI genérico. La sintaxis genérica del URI consta de cinco componentes organizados jerárquicamente en orden de importancia decreciente de izquierda a derecha: [13] : §3
URI = esquema ":" ["//" autoridad] ruta ["?" consulta] ["#" fragmento]
Un componente no está definido si tiene un delimitador asociado y el delimitador no aparece en la URI; los componentes de esquema y ruta siempre están definidos. [13] : §5.2.1 Un componente está vacío si no tiene caracteres; el componente de esquema siempre no está vacío. [13] : §3
El componente de autoridad consta de subcomponentes :
autoridad = [información de usuario "@"] host [": "puerto]
Esto se representa en un diagrama de sintaxis como:
La URI comprende:
:
), que consiste en una secuencia de caracteres que comienza con una letra y sigue de cualquier combinación de letras, dígitos, más (+
), punto (.
) o guión (-
). Aunque los esquemas no distinguen entre mayúsculas y minúsculas, la forma canónica es minúscula y los documentos que especifican esquemas deben hacerlo con letras minúsculas. Algunos ejemplos de esquemas populares sonhttp
,https
,ftp
,mailto
,file
,data
yirc
. Los esquemas URI deben estar registrados en laAutoridad de Números Asignados de Internet (IANA), aunque en la práctica se utilizan esquemas no registrados.[b]//
), que comprende:@
), que puede consistir en unnombre de usuarioy unacontraseñaprecedida por dos puntos (:
). El uso del formatousername:password
en el subcomponente userinfo está en desuso por razones de seguridad. Las aplicaciones no deben representar como texto sin formato ningún dato después de los primeros dos puntos (:
) que se encuentre dentro de un subcomponente userinfo a menos que los datos después de los dos puntos sean una cadena vacía (que indica que no hay contraseña).[]
).[13] : §3.2.2 [c]:
), que consta de dígitos decimales./
, que consiste en una secuencia de segmentos de ruta separados por una barra ( ). Siempre se define una ruta para un URI, aunque la ruta definida puede estar vacía (longitud cero). Un segmento también puede estar vacío, lo que da como resultado dos barras consecutivas (//
) en el componente de ruta. Un componente de ruta puede parecerse o mapearse exactamente a unaruta del sistema de archivos, pero no siempre implica una relación con una. Si se define un componente de autoridad, entonces el componente de ruta debe estar vacío o comenzar con una barra (/
). Si un componente de autoridad no está definido, entonces la ruta no puede comenzar con un segmento vacío, es decir, con dos barras (//
), ya que los siguientes caracteres se interpretarían como un componente de autoridad.[16] : §3.3 "http://www.example.com/questions/3456/my-document"
"/questions"
es la primera parte de la ruta (un módulo o programa ejecutable) y "/3456/my-document"
es la segunda parte de la ruta llamada pathinfo , que se pasa al módulo o programa ejecutable llamado "/questions"
para seleccionar el documento solicitado.?
precedido por un signo de interrogación ( ), que consiste en unacadena de consultade datos no jerárquicos. Su sintaxis no está bien definida, pero por convención suele ser una secuencia depares atributo-valorseparados por undelimitador.#
). El fragmento contiene unidentificador de fragmentoque proporciona la dirección a un recurso secundario, como un encabezado de sección en un artículo identificado por el resto del URI. Cuando el recurso principal es unHTML, el fragmento suele ser unid
atributode un elemento específico y los navegadores web desplazarán este elemento para mostrarlo.Un navegador web generalmente desreferenciará una URL realizando una solicitud HTTP al host especificado, por defecto en el puerto número 80. Las URL que utilizan el https
esquema requieren que las solicitudes y respuestas se realicen a través de una conexión segura al sitio web .
Los usuarios de Internet están distribuidos por todo el mundo y utilizan una amplia variedad de idiomas y alfabetos, y esperan poder crear URL en sus propios alfabetos locales. Un identificador de recursos internacionalizado (IRI) es una forma de URL que incluye caracteres Unicode . Todos los navegadores modernos admiten IRI. Las partes de la URL que requieren un tratamiento especial para diferentes alfabetos son el nombre de dominio y la ruta. [18] [19]
El nombre de dominio en el IRI se conoce como Nombre de Dominio Internacionalizado (IDN). El software de Internet y la Web convierte automáticamente el nombre de dominio en un código puny que puede utilizar el Sistema de Nombres de Dominio ; por ejemplo, la URL china http://例子.卷筒纸
se convierte en http://xn--fsqu00a.xn--3lr804guic/
. Esto xn--
indica que el carácter no era originalmente ASCII . [20]
El nombre de la ruta URL también puede ser especificado por el usuario en el sistema de escritura local. Si no está codificado, se convierte a UTF-8 y cualquier carácter que no forme parte del conjunto de caracteres URL básico se escapa como hexadecimal utilizando percent-encoding ; por ejemplo, la URL japonesa http://example.com/引き割り.html
se convierte en http://example.com/%E5%BC%95%E3%81%8D%E5%89%B2%E3%82%8A.html
. El equipo de destino decodifica la dirección y muestra la página. [18]
Los enlaces relativos al protocolo (PRL), también conocidos como URL relativas al protocolo (PRURL), son URL que no tienen un protocolo especificado. Por ejemplo, //example.com
utilizará el protocolo de la página actual, normalmente HTTP o HTTPS. [21] [22]
http://www.example.com
, es una URL, mientras que www.example.com
no lo es. [6].0
eliminar partes de la notación decimal con punto o utilizar direcciones IP enteras sin formato. [15]