• uri
  • url
  • urn

Revelando URI, URL y URN

Esta guía ofrece una visión general de URI, URL y URN, explicando sus diferencias y casos de uso.

Darcy Ye
Darcy Ye
Developer

Al desarrollar aplicaciones web, a menudo necesitamos llamar a diferentes servicios web. Al configurar la comunicación y conexión de diferentes servicios web, frecuentemente nos encontramos con los conceptos de URI, URL y URN. Por lo general, a los usuarios les resulta difícil distinguir entre ellos, lo que lleva a un uso mezclado o incorrecto. En este artículo, proporcionaremos ejemplos y explicaremos las diferencias entre ellos para ayudar a todos a comprender mejor estos conceptos y a interpretarlos y usarlos correctamente al leer blogs técnicos, documentación o comunicarse con otros ingenieros.

¿Qué es un URL?

Un URL (Localizador Uniforme de Recursos) proporciona la dirección web o ubicación de recursos en internet. Se utiliza generalmente para especificar la ubicación de páginas web, archivos o servicios. Un URL proporciona un formato estandarizado para acceder a los recursos en la web. Es un componente clave de la navegación web, los enlaces y la comunicación en internet.

Un URL consta de varias partes que juntas definen la dirección del recurso y el protocolo utilizado para acceder a él. Vamos a analizar este URL como ejemplo y explicar la función de cada parte una por una.

  1. Esquema: Este especifica el protocolo o esquema utilizado para acceder a los recursos, como HTTP (Protocolo de Transferencia de Hipertexto), HTTPS (HTTP Seguro), FTP (Protocolo de Transferencia de Archivos) u otros.

    El esquema en el URL es https.

  2. Host: El host especifica el nombre de dominio o la dirección IP del servidor que aloja los recursos.

    El host en el URL es example.logto.io.

  3. Puerto: (Opcional) El puerto representa un número de puerto específico en el host para acceder al recurso. Si no se especifica ningún puerto, se predetermina al puerto estándar para el esquema dado.

    El puerto predeterminado para HTTP es 80, mientras que el puerto predeterminado para HTTPS es 443.

    El puerto en el URL es 8080.

  4. Ruta: (Opcional) La ruta indica la ubicación específica o el directorio en el servidor donde se encuentra el recurso, lo cual puede incluir directorios y nombres de archivos.

    La ruta en el URL debería ser /blogs/index.html.

  5. Parámetros de consulta: (Opcional) Los parámetros de consulta son parámetros adicionales que se pasan a un recurso, típicamente utilizados en aplicaciones web dinámicas. Aparecen después de la ruta y son separados por el símbolo ?.

    Los parámetros de consulta en el URL son params1=value1&param2=value2, lo que a menudo se representa en forma de pares clave-valor, con pares separados por el símbolo &. En escenarios de uso real, a menudo se requiere codificación para evitar caracteres como espacios.

  6. Identificador de fragmento: (Opcional) También se puede llamar ancla, es utilizado para ubicar una posición específica en el recurso.

    El ancla en el URL es #introduction.

Además, por ejemplo, al utilizar servicios de archivos o muchos botones de "Contáctanos" en páginas web se enlazan a URLs, como:

  • ftp://documents.logto.io/files/legal/soc_ii.pdf
  • mailto:[email protected]?subject=Enterprise%20quota%20request

¿Qué es un URI?

URI significa "Identificador Uniforme de Recursos". Es una cadena de caracteres que identifica un recurso específico, como una página web, archivo o servicio. URI proporciona una forma de identificar y localizar de manera única los recursos utilizando un formato estandarizado.

Un URI consiste principalmente en dos componentes:

  1. Esquema: Indica el protocolo o esquema utilizado para acceder al recurso.
  2. Identificador de recurso: Identifica el recurso específico al que se accede o se referencia. El formato del identificador de recurso depende del esquema utilizado.

Desde una perspectiva gramatical, los URIs en su mayoría siguen el mismo formato que los URLs, tal como se especifica en RFC 3986.

Aunque este formato de URI es similar al de los URLs, no garantiza el acceso a ningún recurso en la Web. Utilizar este formato puede reducir los conflictos de nombres de espacios de nombres.

En la sección anterior, presentamos URLs, que no solo identifican un recurso, sino que también ayudan a localizar ese recurso. Por lo tanto, de hecho, los URLs son un subconjunto propio de los URIs.

¿Qué es un URN?

El URN puede no ser tan común como el URL y el URI. Significa "Nombre Uniforme de Recurso", y su alcance es identificar recursos de manera persistente, incluso si esos recursos ya no existen.

A diferencia de un URL, un URN no proporciona ninguna información sobre cómo localizar el recurso; simplemente lo identifica, al igual que un URI puro. Específicamente, un URN es un tipo de URI con el esquema "urn" y tiene la siguiente estructura, como se describe en RFC 2141:

<URN>:<NID>:<NSS>

  1. URN: Generalmente urn.
  2. Identificador de Espacio de Nombres (NID): Representa un espacio de nombres o sistema de identificadores único que define y gestiona el URN. Proporciona contexto y asegura la unicidad del identificador. Ejemplos de espacios de nombres incluyen ISBN (Número Internacional Normalizado de Libro), etc.
  3. Cadena Específica del Espacio de Nombres (NSS): Es una cadena de caracteres que identifica de manera única un recurso dentro del espacio de nombres especificado. El identificador en sí no transmite ninguna información sobre la ubicación o el método de acceso al recurso.

Por ejemplo, un libro muy famoso que introduce sistemas informáticos CSAPP tiene su número ISBN representado como URN urn:isbn:9780134092669.

Los URNs se utilizan frecuentemente en varios protocolos estándar, como la aserción en el protocolo SAML, que corresponde al URN urn:oasis:names:tc:SAML:2.0:assertion.

En ingeniería de software, también podemos definir URNs para usos específicos en nuestros propios sistemas según las reglas de nomenclatura URN. Por ejemplo, en Logto, para habilitar Organización, necesitas añadir el alcance urn:logto:scope:organizations en la configuración al utilizar el SDK. Cada Organización también tiene su propio URN dedicado urn:logto:organization:{orgId}.

Conclusión

La relación entre URI, URL y URN puede ilustrarse utilizando el siguiente diagrama de Venn:

Relaciones

URI, URL y URN pueden usarse para identificar diferentes recursos, pero solo la URL puede localizar con precisión la posición del recurso.

URI y URL pueden soportar varios esquemas, como HTTP, HTTPS, FTP, pero el URN se puede considerar que solo soporta el esquema urn.

Todos los URLs o URNs son URIs, pero no todos los URIs son URLs o URNs.