URI,是uniform resource identifier,统一资源标识符,用来唯一的标识一个资源。?
Web上可用的每种资源如HTML文档、图像、视频片段、程序等都是一个来URI来定位的?
URI一般由三部组成:?
①访问资源的命名机制?
②存放资源的主机名?
③资源自身的名称,由路径表示,着重强调于资源。
URL是uniform resource locator,统一资源定位器,它是一种具体的URI,即URL可以用来标识一个资源,而且还指明了如何locate这个资源。
采用URL可以用一种统一的格式来描述各种信息资源,包括文件、服务器的地址和目录等。URL一般由三部组成:?
①协议(或称为服务方式)?
②存有该资源的主机IP地址(有时也包括端口号)?
③主机资源的具体地址。如目录和文件名等
URN,uniform resource name,统一资源命名,是通过名字来标识资源,比如mailto:java-net@java.sun.com。
URI是以一种抽象的,高层次概念定义统一资源标识,而URL和URN则是具体的资源标识的方式。URL和URN都是一种URI。笼统地说,每个URL都是URI,但不一定每个 URI 都是 URL。这是因为 URI 还包括一个子类,即统一资源名称 (URN),它命名资源但不指定如何定位资源。上面的 mailto、news 和 isbn URI都是 URN 的示例。
?
首先我们要弄清楚一件事:URL和URN都是URI的子集。
换言之,URL和URN都是URI,但是URI不一定是URL或者URN。为了更好的理解这个概念,看下面这张图片。
通过下面的例子(源自 Wikipedia),我们可以很好地理解URN 和 URL之间的区别。如果是一个人,我们会想到他的姓名和住址。
URL类似于住址,它告诉你一种寻找目标的方式(在这个例子中,是通过街道地址找到一个人)。要知道,上述定义同时也是一个URI。
相对地,我们可以把一个人的名字看作是URN;因此可以用URN来唯一标识一个实体。由于可能存在同名(姓氏也相同)的情况,所以更准确地说,人名这个例子并不是十分恰当。更为恰当的是书籍的ISBN码和产品在系统内的序列号,尽管没有告诉你用什么方式或者到什么地方去找到目标,但是你有足够的信息来检索到它。
关于URL:
URL是URI的一种,不仅标识了Web 资源,还指定了操作或者获取方式,同时指出了主要访问机制和网络位置。?
关于URN:
URN是URI的一种,用特定命名空间的名字标识资源。使用URN可以在不知道其网络位置及访问方式的情况下讨论资源。?
现在,如果到Web上去看一下,你会找出很多例子,这比其他东西更容易让人困惑。我只展示一个例子,非常简单清楚地告诉你在互联网中URI 、URL和URN之间的不同。?
我们一起来看下面这个虚构的例子。?
这是一个URI:“http://bitpoetry.io/posts/hello.html#intro”?
“http://”是定义如何访问资源的方式。?“bitpoetry.io/posts/hello.html”是资源存放的位置。?“#intro”是资源。?
URL是URI的一个子集,告诉我们访问网络位置的方式。在我们的例子中,URL应该如下所示:?
? ? URL:“http://bitpoetry.io/posts/hello.html”?
URN是URI的子集,包括名字(给定的命名空间内),但是不包括访问方式,如下所示:?
? ? URN:“bitpoetry.io/posts/hello.html#intro”?
?
URI可以被分为URL、URN或两者的组合。如果你一直使用URI这个术语,就不会有错。
?
原文:“http://web.jobbole.com/83452/#article-comment”
00863571