URI、URL和URN的区别

先给个定义
  • URI(Uniform Resource Identifier ):统一资源标识符,就是在某一规则下能把一个资源独一无二地标识出来。
  • URL(Uniform Resource Locator):统一资源定位符。
  • URN(Uniform Resource Name):统一资源名称。
  具体一点的说:   每个Web服务器资源都有一个名字,这样客户端就可以说明,它们感兴趣的资源是什么了。服务器资源名被称为统一资源标识符(URI)。 URI就像因特网上的邮编地址一样,在世界范围内唯一标识并定位信息资源      统一资源定位符(URL)是资源标识符最常见的形式(URI包含URL),URL描述了一台特定服务器上某资源的特定位置。它们可以明确说明如何从一个精确、固定的位置获取资源。
URI、URL和URN的区别 大部分URL都遵循一种标准格式,这种格式包含三个部分。
  • URL的第一部分被称为方案(scheme),说明了访问资源所使用的协议类型。这部分通常就是HTTP协议(http://)
  • 第二部分给出了服务器的因特网地址(比如,www.joes-hardware.com)
  • 其余部分指定了web服务器上的某个资源(比如,/specials/saw-blade.gif)
现在,几乎所有的URI都是URL   让URI能成为URL的当然就是那个“访问机制”,“网络位置”。e.g. http:// or ftp://.。 URN是唯一标识的一部分,就是一个特殊的名字。

  下面就来看看例子吧,来自权威的RFC:

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

  这些全都是URI, 其中有些是URL。哪些? 就是那些提供了访问机制的。

  • 疑问:没明白为什么是包含与被包含的关系,按照你的解释,不应该是并列关系么?url通过地址确定,uri通过号码确定。二者不存在包含关系啊。
  • 答:URI 不一定非得是通过号码确定的。URI 是在「某一规则」下标识出一个资源的字符串,通过地址或者通过号码都是可行的规则其中通过地址规则实现的 URI 可以被称作 URL ,URL 是 URI 的一种实现,所以URI 作为更宽泛的定义是包含了 URL 的,就像三角形包含等边三角形一样。
  URI的第二种形式就是统一资源名(URN。URN是作为特定内容的唯一名称使用的,与目前的资源所在地无关。 使用这些与位置无关的URN,就可以将资源四处搬运,并且可以使用同一个名字通过多种网络访问协议来访问资源。   “URI可以分为URL,URN或同时具备locators 和names特性的一个东西。URN作用就好像一个人的名字,URL就像一个人的地址。换句话说:URN确定了东西的身份,URL提供了找到它的方式。”  
URI、URL和URN的区别
上一篇:flutter ListView横向列表&不定长列表


下一篇:URL统一资源定位符(二)URL、URI、URN区别