URI,URL,URN

首先,URI,是uniform resource identifier,統一資源標識符,用來唯一的標識一個資源。而URL是uniform resource locator,統一資源定位器,它是一種具體的URI,即URL可以用來標識一個資源,而且還指明瞭如何locate這個資源。而URN,uniform resource name,統一資源命名,是通過名字來標識資源,比如mailto:[email protected]。也就是說,URI是以一種抽象的,高層次概念定義統一資源標識,而URL和URN則是具體的資源標識的方式。URL和URN都是一種URI。


按照 URI 標準,上面的第一個例子 —— http://www.cisco.com/en/US/partners/index.html —— 實際上是一個 URI,並且它由以下幾個組成部分:

  • 方案名 (http)

  • 域名 (www.cisco.com)

  • 路徑 (/en/US/partners/index.html)


URI屬於父類,而URL屬於URI的子類。URL是URI的一個子集。

在《HTTP權威指南》一書中,對於URI的定義是:統一資源標識符;對於URL的定義是:統一資源定位符。

二者的區別在於,URI表示請求服務器的路徑,定義這麼一個資源。而URL同時說明要如何訪問這個資源(http://)。

例如,一個URL通常包括三部分:

方案部分(scheme):http://

地址部分:www.baidu.com

資源部分:/1.png


URL 可以精確匹配,也可在最後一個位置使用通配符來匹配。



URI可以表示一個域,也可以表示一個資源。

URL只能表示一個資源。


同樣的,URN(統一資源名稱)也是URI的一個子集,目前沒有大規模運用。



區別

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

換言之,URL和URN都是URI,但是URI不一定是URL或者URN。爲了更好的理解這個概念,看下面這張圖片。

通過下面的例子(源自 Wikipedia),我們可以很好地理解URN 和 URL之間的區別。如果是一個人,我們會想到他的姓名和住址。

URL類似於住址,它告訴你一種尋找目標的方式(在這個例子中,是通過街道地址找到一個人)。要知道,上述定義同時也是一個URI。

相對地,我們可以把一個人的名字看作是URN;因此可以用URN來唯一標識一個實體。由於可能存在同名(姓氏也相同)的情況,所以更準確地說,人名這個例子並不是十分恰當。更爲恰當的是書籍的ISBN碼和產品在系統內的序列號,儘管沒有告訴你用什麼方式或者到什麼地方去找到目標,但是你有足夠的信息來檢索到它。引自這篇文章:

所有的URN都遵循如下語法(引號內的短語是必須的):


1

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


其中NID是命名空間標識符,NSS是標識命名空間的特定字符串。

一個用於理解這三者的例子

我們來看一下上述概念如何應用於與我們息息相關的互聯網。

再次引用Wikipedia ,這些引文給出的解釋,比上面人員地址的例子更爲專業:

關於URL:

URL是URI的一種,不僅標識了Web 資源,還指定了操作或者獲取方式,同時指出了主要訪問機制和網絡位置。

關於URN:

URN是URI的一種,用特定命名空間的名字標識資源。使用URN可以在不知道其網絡位置及訪問方式的情況下討論資源。

現在,如果到Web上去看一下,你會找出很多例子,這比其他東西更容易讓人困惑。我只展示一個例子,非常簡單清楚地告訴你在互聯網中URI 、URL和URN之間的不同。

我們一起來看下面這個虛構的例子。這是一個URI

1

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


我們開始分析


1

http://


是定義如何訪問資源的方式。另外


1

bitpoetry.io/posts/hello.html


是資源存放的位置,那麼,在這個例子中,


1

#intro


是資源。

URL是URI的一個子集,告訴我們訪問網絡位置的方式。在我們的例子中,URL應該如下所示:


1

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


URN是URI的子集,包括名字(給定的命名空間內),但是不包括訪問方式,如下所示:


1

bitpoetry.io/posts/hello.html#intro

就是這樣。現在你應該能夠辨別出URL和URN之間的不同。

如果你忘記了這篇文章的內容,至少要記住一件事:URI可以被分爲URL、URN或兩者的組合。如果你一直使用URI這個術語,就不會有錯。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章