URI,URL,URN 区别与联系

96
GordenNee
2017.07.31 20:24* 字数 820

首先URI,URL,URN的全称如下:
URI(Uniform Resource Identifier) :统一资源标识
URL(Uniform Resource Locator) :统一资源定位符
URN(Uniform Resource Name) :统一资源名称

1 要弄清三者之间的关系,首先要了解什么是互联网资源?
我们比较常见的,某网站或某服务器上的图片,mp3音乐,电影,电子书等等这些都是互联网资源。广义上讲,互联网上任何有意义的数据信息都可以称为互联网资源。

2 面对海量的互联网的资源,如何来标识这些资源呢?

URN:从为每一个资源起一个唯一的名称的角度出发。比如用于唯一标识书目的ISBN系统是一个典型的URN使用范例。例如,ISBN 0-486-27557-4(urn:isbn:0-486-27557-4)无二义性地标识出莎士比亚的戏剧《罗密欧与朱丽叶》的某一特定版本。由于为每一个资源起一个唯一的名称显然需要专门的组织机构来管理,所以并不是所有的资源都有URN.

URL:从资源存储位置的角度来标识资源,URL唯一的标识了资源的路径以及通过什么协议可以获取到该资源等信息。

3 URI,URN,URL的三者关系
它们都是基于“资源标识”的概念产生的,从不同的角度对资源进行标识,URN(统一资源)类似一个人的名称,而URL(统一资源定位符)类似一个人的住址,换言之,URN定义某事物的身份,而URL提供查找该事物的方法。但他们不存在一一对应关系。比如《罗密欧与朱丽叶》这本书的urn:isbn:0-486-27557-4是唯一的。但新浪和网易都提供这本书的下载(所以URL有两个)。这个问题其实很好理解,就像我们在网络上根据歌名搜索歌曲时可以搜索到N个URL(网友习惯称之为网络链接)。

URI(统一资源标识)则是更抽象一层的概念,URI可以是URL,也可以是URN或两者兼备。他们的关系有点类似面向对象编程语言中的父类子类关系。URI是一个抽象的类,用来描述互联网资源。URN和URL则是URI的子类,实类。所以URI可以是URN也可以是URL.如果你关心的是网络资源的名称那么你可以将URI定义成URN的形式,如果你关心的是如何获取到该资源,那么你可以将URI定义成URL的形式。

URI举例:
http://example.org/absolute/URI/with/absolute/path/to/resource.txt
ftp://example.org/resource.txt
urn:issn:1535-3613

显然第一,二个URI其实就是URL,第三个URI则是URN。所以URL一定是URI,但URI不全是URL.
关注微信公众号:Android踩坑日记,获取每日Android 开发干货!

Markdown
Android 开发
Web note ad 1