Pregunta ¿Cuál es la diferencia entre un URI, una URL y una URN?


La gente habla de URLs, URIs y URNAs como si fueran cosas diferentes, pero se ven igual a simple vista.

¿Cuáles son las diferencias distinguibles entre ellos?


3704
2017-10-06 21:26


origen


Respuestas:


De RFC 3986:

Un URI se puede clasificar además como un localizador, un nombre o ambos. los      El término "Localizador uniforme de recursos" (URL) se refiere al subconjunto de URI      que, además de identificar un recurso, proporcionar un medio de      localizar el recurso describiendo su mecanismo de acceso primario      (por ejemplo, su "ubicación" de red). El término "Nombre de recurso uniforme"      (URN) se ha utilizado históricamente para referirse a ambos URI bajo el      esquema "urna" [RFC2141], que deben permanecer globalmente únicos      y persistente incluso cuando el recurso deja de existir o se convierte      no disponible, y a cualquier otro URI con las propiedades de un nombre.

Por lo tanto, todas las URL son URI (en realidad no del todo; consulte más abajo), y todas las URN son URI, pero las URN y las URL son diferentes, por lo que no puede decir que todas las URI son URL.

EDIT: antes pensaba que todas las URL son URI válidas, pero según los comentarios:

No "todas las URL son URI". Depende de la interpretación del RFC. Por ejemplo, en Java, el analizador URI no le gusta [ o ] y eso es porque la especificación dice "no debería" y no "no debe".

Así que eso enturbia las aguas aún más, desafortunadamente.

Si aún no has leído La respuesta de Roger Pate, Te aconsejo que lo hagas también.


1515
2017-10-06 21:29



URIs identificar y URLs localizar; sin embargo, los localizadores también son identificadores, por lo que cada URL también es un URI, pero hay URI que no son URL.

Ejemplos

  • Roger Pate

Este es mi nombre, que es un identificador. Es como un URI, pero no puede ser una URL, ya que no dice nada sobre mi ubicación ni cómo contactarme. En este caso, también identifica a al menos otras 5 personas en los Estados Unidos.

  • 4914 West Bay Street, Nassau, Bahamas

Este es un localizador, que es un identificador para esa ubicación física. Es como una URL y un URI (dado que todas las URL son URI), y también me identifica indirectamente como "residente de ...". En este caso, me identifica de manera única, pero eso cambiaría si tuviera un compañero de cuarto.

Digo "me gusta" porque estos ejemplos no siguen la sintaxis requerida.

Confusión popular

De Wikipedia:

En informática, un localizador uniforme de recursos (URL) es un subconjunto del identificador uniforme de recursos (URI) que especifica dónde está disponible un recurso identificado y el mecanismo para recuperarlo. En el uso popular y en muchos documentos técnicos y discusiones verbales a menudo se usa incorrectamente como sinónimo de URI, ... [énfasis mío]

Debido a esta confusión común, muchos productos y documentación utilizan incorrectamente un término en lugar del otro, asignan su propia distinción o los utilizan de manera sinónima.

URNs

Mi nombre, Roger Pate, podría ser como un URNA (Nombre de recurso uniforme), excepto que son mucho más regulado y destinado a ser único a través ambos espacio y tiempo.

Debido a que actualmente comparto este nombre con otras personas, no es globalmente único y no sería apropiado como URN. Sin embargo, incluso si ninguna otra familia usaba este nombre, recibo el nombre de mi abuelo paterno, por lo que aún no sería único a lo largo del tiempo. E incluso si ese No fue el caso, la posibilidad de nombrar a mis descendientes después de mí hace que esto no sea adecuado como URN.

Los URN son diferentes de las URL en esta restricción rígida de exclusividad, aunque ambos comparten la sintaxis de los URI.


3524
2017-12-31 06:32



URI - Identificador uniforme de recursos

Los URI son un estándar para identificar documentos usando una cadena corta de números, letras y símbolos. Ellos están definidos por RFC 3986 - Identificador uniforme de recursos (URI): sintaxis genérica. Las URL, URN y URC son todas tipos de URI.

URL - Localizador Uniforme de Recursos

Contiene información sobre cómo recuperar un recurso desde su ubicación. Por ejemplo:

  • http://example.com/mypage.html
  • ftp://example.com/download.zip
  • mailto:user@example.com
  • file:///home/user/file.txt
  • tel:1-888-555-5555
  • http://example.com/resource?foo=bar#fragment
  • /other/link.html (Una URL relativa, solo útil en el contexto de otra URL)

Las URL siempre comienzan con un protocolo (http) y generalmente contienen información tal como el nombre de host de la red (example.com) y, a menudo, una ruta del documento (/foo/mypage.html) Las URL pueden tener parámetros de consulta e identificadores de fragmentos.

URN - Nombre de recurso uniforme

Identifica un recurso con un nombre único y persistente, pero no necesariamente le dice cómo localizarlo en Internet. Por lo general, comienza con el prefijo urn:  Por ejemplo:

  • urn:isbn:0451450523 para identificar un libro por su número de ISBN.
  • urn:uuid:6e8bc430-9c3a-11d9-9669-0800200c9a66 un identificador único global
  • urn:publishing:book - Un espacio de nombres XML que identifica el documento como un tipo de libro.

Los URN pueden identificar ideas y conceptos. No están restringidos a la identificación de documentos. Cuando una URN representa un documento, se puede traducir a una URL mediante un "resolver". El documento se puede descargar de la URL.

URC - Citación uniforme de recursos

Señala metadatos sobre un documento en lugar de hacerlo sobre el documento en sí. Un ejemplo de un URC es uno que apunta al código fuente HTML de una página como: view-source:http://example.com/

URI de datos

En lugar de ubicarlo en Internet o nombrarlo, los datos se pueden colocar directamente en un URI. Un ejemplo sería data:,Hello%20World.


Preguntas frecuentes

He oído que ya no debería decir URL, ¿por qué?

La especificación W3 para HTML dice que el href de una etiqueta de anclaje puede contener un URI, no solo una URL. Debería poder poner en una URN tal como <a href="urn:isbn:0451450523">. Su navegador luego resolvería esa URN a una URL y descargará el libro por usted.

¿Alguno navegador realmente sabe cómo buscar documentos por URN?

No es que yo sepa, pero un navegador web moderno sí implementa el esquema de URI de datos.

¿La diferencia entre URL y URI tiene algo que ver con si es relativa o absoluta?

No. Ambas URL relativas y absolutas son URL (y URI).

¿La diferencia entre URL y URI tiene algo que ver con si tiene parámetros de consulta?

No. Ambas URL con y sin parámetros de consulta son URL (y URI).

¿La diferencia entre URL y URI tiene algo que ver con si tiene un identificador de fragmento?

No. Ambas URL con y sin identificadores de fragmentos son URL (y URI).

¿La diferencia entre URL y URI tiene algo que ver con qué caracteres están permitidos?

No. Las URL se definen como un subconjunto estricto de URI. Si un analizador permite a un personaje en una URL pero no en una URI, hay un error en el analizador. Las especificaciones entran en gran detalle sobre qué caracteres están permitidos en qué partes de URL y URI. Es posible que algunos caracteres solo se permitan en algunas partes de la URL, pero los caracteres por sí solos no son una diferencia entre las URL y los URI.

Pero, ¿no dice el W3C ahora que las URL y los URI son lo mismo?

Sí. El W3C se dio cuenta de que hay un montón de confusión sobre esto. Emitieron un Documento de aclaración de URI que dice que ahora está bien usar los términos URL y URI indistintamente (para significar URI). Ya no es útil segmentar estrictamente los URI en diferentes tipos, como URL, URN y URC.

¿Puede un URI ser una URL y una URN?

La definición de URN ahora es más flexible que lo que dije anteriormente. los último RFC en URIs dice que cualquier URI ahora puede ser una URN (independientemente de si comienza con urn:) siempre que tenga "las propiedades de un nombre". Es decir: es globalmente único y persistente incluso cuando el recurso deja de existir o deja de estar disponible. Un ejemplo: los URI utilizados en HTML doctypes como http://www.w3.org/TR/html4/strict.dtd. Ese URI continuaría nombrando el doctype de transición HTML4 incluso si la página en el sitio web w3.org fue eliminada.


URI/URL Venn Diagram


474
2018-03-04 21:51



En resumen: un URI identifica, una URL identifica y localiza.

Considere una edición específica de la obra de Shakespeare Romeo y Julieta, de los cuales tiene una copia digital en su red doméstica.

Puedes identificar el texto como urn:isbn:0-486-27557-4.
Eso sería un URI, pero más específicamente un URNA* porque nombra el texto.

También puedes identificar el texto como file://hostname/sharename/RomeoAndJuliet.pdf.
Eso también sería un URI, pero más específicamente un URL porque localiza el texto.

* Nombre uniforme del recurso

(Tenga en cuenta que mi ejemplo está adaptado de Wikipedia)


233
2017-12-31 06:51



Estas son algunas respuestas muy bien escritas pero prolijas. Aquí está la diferencia en lo que se refiere a CodeIgniter:

URL - http://example.com/some/page.html

URI - /some/page.html

En pocas palabras, la URL es la forma completa de identificar cualquier recurso en cualquier lugar y puede tener diferentes protocolos como FTP, HTTP, SCP, etc.

URI es un recurso en el dominio actual, por lo que necesita menos información para ser encontrado.

En cada instancia que CodeIgniter utiliza la palabra URL o URI esta es la diferencia de la que están hablando, aunque en el gran esquema de la web, no es 100% correcto.


124
2017-12-31 08:58



Una pequeña adición a las respuestas ya publicadas, aquí hay un diagrama de Venn para resumir la teoría (de la hermosa Prateek Joshi explicación)

enter image description here

Y un ejemplo (también del sitio web de Prateek):

enter image description here


64
2017-10-16 17:46



Este es uno de los temas más confusos y posiblemente irrelevantes que he encontrado como profesional de la web.

Según lo entiendo, un URI es una descripción de algo, siguiendo un formato aceptado, que puede definir ambos o el nombre único (identificación) de algo y su ubicación.

Hay dos subconjuntos básicos: las URL, que definen la ubicación (especialmente para un navegador que intenta buscar una página web) y los URN, que definen el nombre único de algo.

Tiendo a pensar que los URN son similares a los GUID. Son simplemente una metodología estandarizada para proporcionar nombres únicos para las cosas. Al igual que en el declarativo del espacio de nombres que utiliza el nombre de una empresa, no es que haya un recurso en un servidor en algún lugar que se corresponda con esa línea de texto, simplemente identifica de forma única algo.

También tiendo a evitar completamente el término URI y discutir las cosas solo en términos de URL o URN según corresponda, porque causa tanta confusión. La pregunta que realmente deberíamos intentar responder a las personas no es tanto la semántica, sino cómo identificar al encontrar los términos si existe o no una diferencia práctica que cambie el enfoque de una situación de programación. Por ejemplo, si alguien me corrige en una conversación y dice: "oh, eso no es una URL, es una URI", sé que están llenos de eso. Si alguien dice "estamos usando una URN para definir el recurso", es más probable que entienda que solo lo estamos nombrando de manera única, no ubicándolo en un servidor.

Si estoy fuera de la base, ¡por favor hágamelo saber!


52
2017-12-01 13:07



Antes que nada, saca tu mente de la confusión y tómala de manera simple y entenderás.

URI => Identificador uniforme de recursos Identifica una dirección completa de la ubicación i-e del recurso, nombre o ambos.

URL => Localizador uniforme de recursos Identifica la ubicación del recurso.

URN => Nombre uniforme del recurso Identifica el nombre del recurso

Ejemplo

Tenemos dirección https://www.google.com/folder/page.html dónde,

URI (identificador uniforme de recursos) => https://www.google.com/folder/page.html

URL (Localizador Uniforme de Recursos) => https://www.google.com/

URN (Nombre de recurso uniforme) => /folder/page.html

URI => (URL + URN) o solo URL o solo URN


44
2017-07-21 17:50



URI => http://en.wikipedia.org/wiki/Uniform_Resource_Identifier

Las URL son un subconjunto de URI (que también contienen URN).

Básicamente, un URI es un identificador general, donde una URL especifica una ubicación y una URN especifica un nombre.


42
2017-10-06 21:30



Otro ejemplo que me gusta usar cuando pienso en URI es el atributo xmlns de un documento XML:

<rootElement xmlns:myPrefix="com.mycompany.mynode">
    <myPrefix:aNode>some text</myPrefix:aNode>
</rootElement>

En este caso, com.mycompany.mynode sería un URI que identifica de manera única el espacio de nombres "myPrefix" para todos los elementos que lo usan dentro de mi documento XML. Esta NO es una URL porque solo se usa para identificar, no para localizar algo per se.


35
2017-12-31 07:38



Identificador = Nombre + Ubicación

Cada URL (Uniforme Resource Locator) es un URI (Uniforme Resource yodentífrico), en términos abstractos, pero cada URI no es una URL. Hay otra subcategoría de URI es URN (Uniforme Resource norteame), que es un recurso con nombre pero no especifica cómo localizarlos, como mailto, news, ISBN es URI.

enter image description here

Sintaxis para URN:  [scheme:]scheme-specific-part[#fragment] 

Ejemplos:
mailto: java-net@java.sun.com
noticia: comp.lang.java
urna: isbn: 096139210x

Sintaxis para URL:  [scheme:][//authority][path][?query][#fragment] 

Ejemplos:
http://java.sun.com/j2se/1.3/     docs / guide / collections / designfaq.html # 28
../../../demo/jfc/SwingSet2/src/SwingSet2.java
file: //host/dir/myfile.txt

fuente

Analogía:
Para llegar a una persona: Conducir (protocolo de otros SMS, correo electrónico, teléfono), Dirección (nombre de host, otro número de teléfono, ID de correo electrónico) y nombre de la persona (nombre del objeto con una ruta relativa).


31
2017-12-23 11:45