URI、URL 和 URN 这三个缩略词是 Tim Berners-Lee在一篇名为RFC 3986: Uniform Resource Identifier (URI): Generic Syntax的文档中定义的互联网标准追踪协议。

  统一资源标识符(URI)提供了一个简单、可扩展的资源标识方式。URI规范中的语义和语法来源于万维网全球信息主动引入的概念,万维网从1990年起使用这种标识符数据,并被描述为“万维网中的统一资源描述符”。

  

   Tim Berners-Lee ,万维网的发明者,同时也是万维网联盟(W3C)的负责人。

    照片由 Paul Clarke 遵循CC BY-SA 4.0 协议提供。

 URI 

  1、URI 是什么

    URI,通一资源标志符(Uniform Resource Identifier, URI),表示的是web上每一种可用的资源,如 HTML文档、图像、视频片段、程序等都由一个URI进行定位的。

  2、URI 的结果组成

    URI 通常由三部分组成:

     ① 访问资源的命名机制

     ② 存放资源的主机名

     ③ 资源自身的名称

  3、URI 举例

https://blog.csdn.net/qq_32595453/article/details/79516787    

    可以这样解释它: 

    ① 这是一个可以通过 https 协议访问的资源;

    ② 位于主机 blog.csdn.net 上;

    ③ 通过“/qq_32595453/article/details/79516787”可以对该资源进行唯一标识(注意,这个不一定是完整的路径);

    注意:以上三点只不过是对实例的解释,以上三点并不是URI的必要条件,URI只是一种概念,怎样实现无所谓,只要它唯一标识一个资源就可以了。

 URL

  1、URL 是什么

      URL是URI的一个子集。它是Uniform Resource Locator的缩写,译为“统一资源定位符”。

      通俗地说,URL是Internet上描述信息资源的字符串,主要用在各种WWW客户程序和服务器程序上。

      采用URL可以用一种统一的格式来描述各种信息资源,包括文件、服务器的地址和目录等。URL是URI概念的一种实现方式。

  2、URL 的格式

    URL的一般格式为(带方括号[]的为可选项):

protocol :// hostname[:port] / path / [;parameters][?query]#fragment

    URL的格式由三部分组成: 

      ①第一部分是协议(或称为服务方式)。

      ②第二部分是存有该资源的主机IP地址(有时也包括端口号)。

      ③第三部分是主机资源的具体地址,如目录和文件名等。

      第一部分和第二部分用“://”符号隔开,

      第二部分和第三部分用“/”符号隔开。

      第一部分和第二部分是不可缺少的,第三部分有时可以省略。 

 URN

    URN Uniform Resource Name(统一资源命名),作为特定内容的唯一名称使用的,与当前资源的所在地无关。使用URN,就可以将资源四处迁移,而不用担心迁移后无法访问。P2P下载中使用的磁力链接是URN的一种实现,它可以持久化的标识一个BT资源,资源分布式的存储在P2P网络中,无需中心服务器用户即可找到并下载它。

 

  区别

    首先我们要弄清楚一件事:URL和URN都是URI的子集。

    换言之,URL和URN都是URI,但是URI不一定是URL或者URN。为了更好的理解这个概念,看下面这张图片。

    

     通过下面的例子(源自 Wikipedia),我们可以很好地理解URN 和 URL之间的区别。如果是一个人,我们会想到他的姓名和住址。

    URL类似于住址,它告诉你一种寻找目标的方式(在这个例子中,是通过街道地址找到一个人)。要知道,上述定义同时也是一个URI。

    相对地,我们可以把一个人的名字看作是URN;因此可以用URN来唯一标识一个实体。

    由于可能存在同名(姓氏也相同)的情况,所以更准确地说,人名这个例子并不是十分恰当。更为恰当的是书籍的ISBN码和产品在系统内的序列号,尽管没有告诉你用什么方式或者到什么地方去找到目标,但是你有足够的信息来检索到它。

    所有的URN都遵循如下语法(引号内的短语是必须的):

< URN > ::= "urn:" < NID > ":" < NSS >

    其中NID是命名空间标识符,NSS是标识命名空间的特定字符串。

  用于理解三者的例子

    关于URL:

URL是URI的一种,不仅标识了Web 资源,还指定了操作或者获取方式,同时指出了主要访问机制和网络位置。

    关于URN:

URN是URI的一种,用特定命名空间的名字标识资源。使用URN可以在不知道其网络位置及访问方式的情况下讨论资源。

    

    来看下面这个虚构的例子。这是一个 URI:

http://bitpoetry.io/posts/hello.html#intro

    分析:

http://                                         是定义如何访问资源的方式

bitpoetry.io/posts/hello.html      是资源存放的位置

#intro                                         在这个例子,#intro 就是资源。  

  

  URL是URI的一个子集,告诉我们访问网络位置的方式。如:

http://bitpoetry.io/posts/hello.html

  URN是URI的子集,包括名字(给定的命名空间内),但是不包括访问方式,如下所示:

bitpoetry.io/posts/hello.html#intro    

  URI可以被分为URL、URN或两者的组合。

  

  形象的比喻:

  “URI可以分为URL,URN或同时具备locators 和names特性的一个东西。URN作用就好像一个人的名字,URL就像一个人的地址。换句话说:URN确定了东西的身份,URL提供了找到它的方式。”

 

posted on 2020-03-06 15:10  格物致知_Tony  阅读(620)  评论(0编辑  收藏  举报