小编典典

URI、URL 和 URN 有什么区别?

all

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

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

它是否正确?


阅读 68

收藏
2022-04-15

共1个答案

小编典典

统一资源标识符 ( 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)
2022-04-15