URI、URL 和 URN 之间有什么区别?我读过很多网站(甚至是维基百科),但我不明白。
URI:http ://www.foo.com/bar.html URL:http ://www.foo.com/bar.html URN:bar.html
它是否正确?
统一资源标识符 ( URI) 是一串字符,用于标识 Internet 上的名称或资源。
URI
URI 通过位置或名称或两者来标识资源。 URI 有两个特化,称为 URL 和 URN。
统一资源定位符 ( URL) 是统一资源标识符 (URI) 的子集,它指定已识别资源的可用位置以及检索它的机制。URL 定义了如何获取资源。它不必是 HTTP URL ( http://),URL 也可以以ftp://or开头smb://,指定用于获取资源的协议。
URL
http://
ftp://
smb://
统一资源名称 ( URN) 是使用 URN 方案的统一资源标识符 (URI), 并不暗示已识别资源的可用性 。URN(名称)和 URL(定位符)都是 URI,并且特定的 URI 可能同时是名称和定位符。
URN
此图(来源)可视化了 URI、URN 和 URL 之间的关系:
URN 是由 URN、URC和 URL 组成的更大的 Internet 信息架构的一部分。
bar.html 不是 URN 。URN 类似于人名,而 URL 类似于街道地址。URN 定义了某物的身份,而 URL 提供了一个位置。本质上,URN 与 URL 是“什么”与“哪里”。URN 必须是这种形式<URN> ::= "urn:" <NID> ":" <NSS>,其中<NID>是命名空间标识符,<NSS>是命名空间特定字符串。
<URN> ::= "urn:" <NID> ":" <NSS>
<NID>
<NSS>
换一种说法:
我想说,唯一能让它 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)