您的位置:首页 > 其它

URI、URN、URL区别

2018-01-29 09:10 197 查看
首先,URI,是uniform resource identifier,统一资源标识符,用来唯一的标识一个资源。而URL是uniform
resource locator,统一资源定位器,它是一种具体的URI,即URL可以用来标识一个资源,而且还指明了如何locate这个资源。而URN,uniform
resource name,统一资源名,是通过名字来标识资源,比如mailto:java-net@java.sun.com。也就是说,URI是以一种抽象的,高层次概念定义统一资源标识,而URL和URN则是具体的资源标识的方式。URL和URN都是一种URI。

在Java的URI中,一个URI实例可以代表绝对的,也可以是相对的,只要它符合URI的语法规则。而URL类则不仅符合语义,还包含了定位该资源的信息,因此它不能是相对的,scheme必须被指定。
URL类似于住址,它告诉你一种寻找目标的方式(在这个例子中,是通过街道地址找到一个人)。要知道,上述定义同时也是一个URI。相对地,我们可以把一个人的名字看作是URN;因此可以用URN来唯一标识一个实体。由于可能存在同名(姓氏也相同)的情况,所以更准确地说,人名这个例子并不是十分恰当。更为恰当的是书籍的ISBN码和产品在系统内的序列号,尽管没有告诉你用什么方式或者到什么地方去找到目标,但是你有足够的信息来检索到它。引自这篇文章:
所有的URN都遵循如下语法(引号内的短语是必须的):
· <URN>::="urn:"<NID>":"<NSS>

其中NID是命名空间标识符,NSS是标识命名空间的特定字符串。
一个用于理解这三者的例子
我们来看一下上述概念如何应用于与我们息息相关的互联网。再次引用Wikipedia
,这些引文给出的解释,比上面人员地址的例子更为专业:
关于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应该如下所示:
· http://bitpoetry.io/posts/hello.html

URN是URI的子集,包括名字(给定的命名空间内),但是不包括访问方式,如下所示:
· bitpoetry.io/posts/hello.html#intro

 
总结一下:URL是一种具体的URI,它不仅唯一标识资源,而且还提供了定位该资源的信息。URI是一种语义上的抽象概念,可以是绝对的,也可以是相对的,而URL则必须提供足够的信息来定位,所以,是绝对的,而通常说的relative
URL,则是针对另一个absolute URL,本质上还是绝对的。
注:这里的绝对(absolute)是指包含scheme,而相对(relative)则不包含scheme。
URL地址格式排列为:scheme://host:port/path,例如
http://www.pc235.com/soft就是一个典型的URL地址。
·Internet资源类型(scheme):指出WWW客户程序用来操作的工具。如“http://”表示WWW服务器,“ftp://”表示FTP服务器,“gopher://”表示Gopher服务器,而“new:”表示Newgroup新闻组。
  
·服务器地址(host):指出WWW页所在的服务器域名。   
·端口(port):有时(并非一定有),对某些资源的访问来说,需给出相应的服务器提供端口号

·路径(path):指明服务器上某资源的位置(其格式与DOS系统中的格式一样,通常有目录/子目录/文件名这样结构组成)。与端口一样,路径并非总是需要的。

文件的URL: 用URL表示文件时,服务器方式用file表示,后面要有主机IP地址、文件的存取路径(即目录)和文件名等信息。有时可以省略目录和文件名,但“/”符号不能省略。

例一:file://ftp.linkwan.com/pub/files/foobar.txt

代表存放主机ftp.linkwan.com上的pub/files/目录下的一个文件,文件名是foobar.txt。

例二:file://ftp.linkwan.com/pub

代表主机ftp.linkwan.com上的目录/pub。

例三:file://ftp.linkwan.com/

代表主机ftp.linkwan.com上的根目录。

Gopher的URL:
Gopher服务器有可能使用特殊的端口,在这种情况下,主机IP地址与端口之间要用“:隔开。

例一:gopher://gopher.linkwan.com/

表示主机gopher.linkwan.com上的gopher服务器。

例二:gopher://gopher.banzai.edu:1234

表示主机gopher.banzai.edu上的gopher服务器,在端口1234上。

网络新闻的URL: 利用URL表示网络新闻组时,如果是usenet的话只要指定出新闻组的名字即可。

例如:news:rec.gardening

表示usenet上的rec.gardening新闻组(园艺)。

HTTP的 URL:

使用超级文本传输协议HTTP,提供超级文本信息服务的资源。

例一:http://www.linkwan.com/111/welcome.htm 
其计算机域名为www.linkwan.com。超级文本文件(文件类型为.html)是在目录/111下的welcome.htm。

例二:http://www.linkwan.com.cn/talk/talk1.htm

其其计算机域名为www.linkwan.com.cn。超级文本文件(文件类型为.html)是在目录/talk下的talk1.htm。这是瑞得聊天室的地址,可由此进入瑞得聊天室的第1室。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  URI urn url