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

44

He leído estas páginas:

Sé básico sobre URL, URN y URI; pero poco en sus diferencias . Lo que no puedo entender es en una página como: ¡ http://www.bernzilla.com/item.php?id=100qué parte es URL, URN y URI!
URI es parte completa pero URL y URN ??

Imagen de wikipedia

Editar:
desde w3c.org:

Una URL es un tipo de URI que identifica un recurso a través de una representación de su mecanismo de acceso primario (por ejemplo, su "ubicación" de red), en lugar de por otros atributos que pueda tener.

de www.damnhandy.com :

Ahora se considera incorrecto usar URL al describir aplicaciones.

Ahora es idun atributo? ¿Qué pasa con la parte de la aplicación? ¿PHP es una aplicación?

deshecho
fuente
3
Esta pregunta se ha hecho en Stack Overflow varias veces y ha recibido mucha atención y buenas respuestas: ¿Cuál es la diferencia entre un URI y una URL?
hippietrail

Respuestas:

42

Diagrama de Venn URI / URL

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:[email protected]
  • 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 como el nombre de host de la red ( example.com) y, a menudo, una ruta de documento ( /foo/mypage.html). Las URL pueden tener parámetros de consulta e identificadores de fragmentos.

URN - Nombre de recurso uniforme

Identifica un recurso por un nombre único y persistente. Suele comenzar con el prefijo urn: Por ejemplo:

  • urn:isbn:0451450523 para identificar un libro por su número 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 documentos de identificación. Cuando una URN representa un documento, un "resolutor" puede traducirlo a una URL. El documento se puede descargar desde la URL.

URI - Identificador uniforme de recursos

Los URI abarcan URL, URN y otras formas de identificar un recurso.

Un ejemplo de un URI que no es una URL ni una URN sería un URI de datos como data:,Hello%20World. No es una URL ni una URN porque el URI contiene los datos. No lo nombra ni le dice cómo ubicarlo en la red.

También hay citas uniformes de recursos (URC) que apuntan a metadatos sobre un documento en lugar de al documento en sí. Un ejemplo de una URC sería un identificador para ver el código fuente de una página web: view-source:http://example.com/. Un URC es otro tipo de URI que no es URL ni URN.

Preguntas frecuentes

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

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

¿Hay algún navegador que sepa cómo buscar documentos por URN?

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

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

No. Tanto las URL relativas como las 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).

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

Si. El W3C se dio cuenta de que hay mucha 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 (es decir, URI). Ya no es útil segmentar estrictamente los URI en diferentes tipos, como URL, URN y URC.

¿Puede un URI ser tanto una URL como una URN?

La definición de URN ahora es más flexible que la que dije anteriormente. El último RFC sobre URI 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 documentos HTML como http://www.w3.org/TR/html4/strict.dtd. Ese URI continuaría nombrando el doctype de transición HTML4 incluso si se eliminara la página en el sitio web w3.org.

Stephen Ostermiller
fuente
Lo que me confunde acerca de la aclaración del W3C y la distinción URL / URI es que en realidad muchos documentos del servidor web describen la URL como la cadena de solicitud completa, y el URI como "la parte que sigue el protocolo". Incluso hace referencia a esa parte por el nombre de la variable $ uri. Por ejemplo: nginx.com/blog/creating-nginx-rewrite-rules ¿ Esto no es estrictamente "correcto" según las definiciones del W3C? Pero es lo más útil, creo.
Mike
1
Los URI fueron ampliamente incomprendidos. Mucha gente pensaba que un URI era una parte de la URL como una URL relativa o que seguía el protocolo. Esto nunca fue correcto, pero esas ideas llegaron a la documentación del servidor o a las API de programación con bastante frecuencia.
Stephen Ostermiller
10

Creo que esos artículos explican bastante bien. Para responder a su pregunta, todo esto es una URL:

http://www.bernzilla.com/item.php?id=100

Cada parte, http: www.bernzilla.comy así sucesivamente tiene su propio nombre:

  • http: es el esquema
  • www es el subdominio
  • bernzilla.com es el dominio
  • com es el dominio de nivel superior o TLD
  • (podría haber una carpeta o ruta allí, por ejemplo /dir/item.php pero no la hay)
  • item.php es la página o nombre de archivo que tiene una extensión php
  • id = 100 es la cadena de consulta

Sin embargo, puedo ver dado ese diagrama de wikipedia por qué estás preguntando. Ese diagrama dice que hay dos tipos de URI: URL y URN y el bit difuso en el medio es cuando algo puede ser ambos.

Paulmorriss
fuente
Gracias por responder. Edité mi pregunta. puedes mirar de nuevo?
Deshecho el
No entiendo esa cita sobre la descripción de aplicaciones y no puedo ver un comentario donde alguien lo señale. Actualizaré mi respuesta para describir las partes separadas.
Paulmorriss
@paul, ¿no te refieres a URI en la primera línea? id=100No es una ubicación , es un indicador.
DisgruntledGoat
Creo que quise decir URL. Con algunos sitios, si cambias la identificación, obtienes diferentes "páginas" en lenguaje normal. Leyendo la definición de recurso en wikipedia, creo que una página es un ejemplo de un recurso.
Paulmorriss
7

No es el caso de que la URL que menciona esté compuesta por una parte de URL y URN.

http://www.bernzilla.com/item.php?id=100 es a la vez una URL y un URI.

Básicamente, los URI son un superconjunto de URL y URN. También hay cierta superposición entre las URL y las URN.

Un URI identifica un recurso ya sea por ubicación, o un nombre, o ambos.

Por lo tanto, cualquier URL es un URI, cualquier URN es un URI, pero no todos los URI son URL.

Kris
fuente