311

URI、URL 和 URN 之间有什么区别?我读过很多网站(甚至是维基百科),但我不明白。

URI:http
://www.foo.com/bar.html URL:http
://www.foo.com/bar.html URN:bar.html

它是否正确?

4

4 回答 4

400

统一资源标识符 ( URI) 是一串字符,用于标识 Internet 上的名称或资源。

URI 通过位置或名称或两者来标识资源。URI 有两个特化,称为 URL 和 URN。

统一资源定位符 ( URL) 是统一资源标识符 (URI) 的子集,它指定已识别资源的可用位置以及检索它的机制。URL 定义了如何获取资源。它不必是 HTTP URL ( http://),URL 也可以以ftp://or开头smb://,指定用于获取资源的协议。

统一资源名称 ( URN) 是使用 URN 方案的统一资源标识符 (URI),并不暗示已识别资源的可用性。URN(名称)和 URL(定位符)都是 URI,并且特定的 URI 可能同时是名称和定位符。

此图(来源)可视化了 URI、URN 和 URL 之间的关系:

URI、URN、URL图

URN 是由 URN、URC和 URL 组成的更大的 Internet 信息架构的一部分。

bar.html 不是 URN。URN 类似于人名,而 URL 类似于街道地址。URN 定义了某物的身份,而 URL 提供了一个位置。本质上,URN 与 URL 是“什么”与“哪里”。URN 必须是这种形式<URN> ::= "urn:" <NID> ":" <NSS>,其中<NID>是命名空间标识符,<NSS>是命名空间特定字符串。

换一种说法:

  • URL 是标识资源的 URI,还通过描述访问资源的方式提供定位资源的方法
  • URL 是一个 URI
  • URI 不一定是 URL

我想说,唯一能让它 100% 清楚的事情就是有一个不是 URL 的 URI 示例。我们可以使用RFC3986中的示例:

URL: ftp://ftp.is.co.za/rfc/rfc1808.txt
URL: http://www.ietf.org/rfc/rfc2396.txt
URL: ldap://[2001:db8::7]/c=GB?objectClass?one
URL: mailto:John.Doe@example.com
URL: news:comp.infosystems.www.servers.unix
URL: telnet://192.0.2.16:80/
URN (not URL): urn:oasis:names:specification:docbook:dtd:xml:4.1.2
URN (not URL): tel:+1-816-555-1212 (disputed, see comments)
于 2011-02-06T12:46:48.983 回答
143

下面我总结了Prateek Joshi 的精彩解释

理论:

  • URI(统一资源标识符)标识资源(文本文档、图像文件等)
  • URL(统一资源定位器)是包含网络位置的 URI 的子集
  • URN(统一资源名称)是 URI 的子集,在给定空间中包含名称,但没有位置

那是:

在此处输入图像描述

举个例子:

在此处输入图像描述

另外,如果您还没有,我建议您阅读Roger Pate 的回答

于 2014-10-16T17:56:06.960 回答
87

URL——统一资源定位器

包含有关如何从其位置获取资源的信息。例如:

  • http://example.com/mypage.html
  • ftp://example.com/download.zip
  • mailto:user@example.com
  • file:///home/user/file.txt
  • http://example.com/resource?foo=bar#fragment
  • /other/link.html(相对 URL,仅在另一个 URL 的上下文中有用)

URL 总是以协议 ( http) 开头,通常包含诸如网络主机名 ( example.com) 和文档路径 ( /foo/mypage.html) 之类的信息。URL 可能有查询参数和片段标识符。

URN --统一资源名称

按名称标识资源。它总是以前缀开头urn: 例如:

  • urn:isbn:0451450523通过 ISBN 号识别一本书。
  • urn:uuid:6e8bc430-9c3a-11d9-9669-0800200c9a66全局唯一标识符
  • urn:publishing:book- 将文档标识为书籍类型的 XML 命名空间。

URN 可以识别想法和概念。它们不限于识别文件。当 URN 确实表示文档时,它可以通过“解析器”转换为 URL。然后可以从 URL 下载该文档。

URI——统一资源标识符

URI 包含 URL、URN 和其他指示资源的方式。

既不是 URL 也不是 URN 的 URI 的示例是数据 URI,例如data:,Hello%20World. 它不是 URL 或 URN,因为 URI 包含数据。它既没有命名它,也没有告诉您如何通过网络找到它。

还有统一资源引用 (URC) 指向有关文档的元数据,而不是文档本身。URC 的一个示例是用于查看网页源代码的指示器:view-source:http://example.com/. URC 是另一种既不是 URL 也不是 URN 的 URI。

经常问的问题

我听说我不应该再说 URL,为什么?

HTML 的 w3 规范说href锚标记的可以包含 URI,而不仅仅是 URL。您应该能够放入一个 URN,例如<a href="urn:isbn:0451450523">. 然后,您的浏览器会将该 URN 解析为 URL 并为您下载该书。

是否有浏览器真正知道如何通过 URN 获取文档?

据我所知,现代网络浏览器确实实现了数据 URI 方案。

URI 可以既是 URL 又是 URN?

好问题。我在网上看到很多地方都说这是真的。我找不到任何既是 URL 又是 URN 的示例。我看不出这怎么可能,因为 URN 以urn:它不是有效的网络协议开头。

URL和URI之间的区别与它是相对还是绝对有关系吗?

不,相对 URL 和绝对 URL 都是 URL(和 URI)。

URL和URI的区别跟有没有查询参数有关系吗?

否。带有和不带有查询参数的 URL 都是 URL(和 URI)。

URL 和 URI 的区别与它是否有片段标识符有关系吗?

不。带有和不带有片段标识符的 URL 都是 URL(和 URI)。

URI是tel:URL 还是 URN?

例如tel:1-800-555-5555. 它不是一开始的urn:,它有一个通过网络访问资源的协议。它必须是一个 URL。

但是 w3C 现在不是说 URL 和 URI 是一回事吗?

是的。W3C 意识到对此有很多困惑。他们发布了一份URI 澄清文件,指出现在可以互换使用 URL 和 URI。将 URI 严格划分为不同类型(如 URL、URN 和 URC)已不再有用。

于 2015-03-04T21:52:38.533 回答
2

根据Wikipedia的 URI(统一资源标识符) :

用于标识资源的字符串。

URL(Uniform Resource Locator)是一个URI,它暗示了与资源的交互机制。例如https://www.google.com指定使用 HTTP 作为交互机制。并非所有 URI 都需要传达特定于交互的信息。

URN(统一资源名称)是一种特定形式的 URI,它的方案是 urn。有关 URI 的一般形式的更多信息,请参阅https://en.wikipedia.org/wiki/Uniform_Resource_Identifier#Syntax

IRI(国际资源标识符)是对 URI 定义的修订,它允许我们在 URI 中使用国际字符。

于 2014-09-17T15:26:29.137 回答