0

以下是 URI。但哪些是 URL?哪些是 URN?

ftp://ftp.is.co.za/rfc/rfc1808.txt
http://www.ietf.org/rfc/rfc2396.txt
ldap://[2001:db8::7]/c=GB?objectClass?one
mailto:John.Doe@example.com
news:comp.infosystems.www.servers.unix
tel:+1-816-555-1212
telnet://192.0.2.16:80/
urn:oasis:names:specification:docbook:dtd:xml:4.1.2
4

1 回答 1

2

RFC 3986 §1.1.3

术语“统一资源定位符”(URL) 指的是 URI 的子集,它除了标识资源之外,还通过描述资源的主要访问机制(例如,其网络“位置”)来提供定位资源的方法。术语“统一资源名称”(URN)在历史上一直用于指代“urn”方案 [RFC2141] 下的两个 URI,即使资源不再存在或变得不可用,它们也需要保持全局唯一和持久性,并且到具有名称属性的任何其他 URI。

精确的区别包含在RFC 3305 §2中,并且可以总结如下。

统一资源标识符(URI)

URI 是与RFC 3986 附录 A中描述的语法匹配的任何内容;它标识某种资源。有问题的资源可以是任何东西,从网页到电话号码到街道地址到一些 JavaScript 到 GUID,通过 URI 开头的方案(第一个之前的部分:)消除歧义。

正如您所指出的,您的所有示例都是 URI。

统一资源定位器(URL)

URL 是一个 URI,它还告诉您如何访问它所描述的任何资源。这是一个非常非正式的概念(参见RFC 3305 §2.2),因此很难确定地定义。(应该注意的是,根据我的经验,大多数公众在表示 URI 时会说 URL。)

除了最后一个示例之外,所有示例都可能是 URL。(不能确定区分;如上所述,URL 是非正式的。)有关为什么最后一个不是,请继续阅读,

统一资源名称(URN)

由RFC 1737RFC 2141定义的 URN是一种为某物赋予或多或少永久名称的方式。它有语法

urn:<namespace>:<more :-separated parts>

其中urn:是方案名称(因此处理器知道它是一个URN),<namespace>是一种区分[基本上]不同人的URN的方法,而URN的其余部分[更多:分隔文本]标识该名称空间内的某些内容。RFC 1737 §2要求 URN始终指向完全相同的事物。它还要求具有相应 URL的 URN必须有某种方式可以转换为该 URL;这似乎暗示 URN 不是 URL。

您的最后一个样本 ( urn:oasis:names:specification:docbook:dtd:xml:4.1.2) 属于该urn方案;根据定义,它是一个 URN。

于 2013-05-20T07:42:53.930 回答