URI、URL 和 URN 的區別

文章不成體系,單純的做爲概念解析,僅當作筆記。bash

URI: Uniform Resource Identifier 統一資源標識符

用於標識某一互聯網資源名稱的字符串,該種標識容許用戶對任何(包括本地和互聯網)的資源經過特定的協議進行交互操做。URI 有包括肯定語法和相關協議的方案所定義。編碼

URI 的格式由 URI 協議名(例如 http, ftp, mailto, file),一個冒號,和協議對應的內容組成。特定的協議定義了協議內容的語法和語義,而全部的協議都必須遵循必定的 URI 文法通用規則。URI 文法同時也就各類緣由對協議內容加以其餘的限制,例如,保證各類分層協議之間的協同性。百分號編碼也爲 URI 提供了附加信息。url

通用 URI 的格式以下:spa

[協議]://[用戶名]:[密碼]@[主機名]:[端口]/[路徑]?[查詢參數]#[片斷 ID]code

注:用戶名和密碼(即用戶信息)、端口、查詢參數、片斷ID可選。orm

下面是兩個 URI 示例以及組成部分:cdn

hierarchical part
        ┌───────────────────┴─────────────────────┐
                    authority               path
        ┌───────────────┴───────────────┐┌───┴────┐
  abc://username:password@example.com:123/path/data?key=value&key2=value2#fragid1
  └┬┘   └───────┬───────┘ └────┬────┘ └┬┘           └─────────┬─────────┘ └──┬──┘
scheme  user information     host     port                  query         fragment

  urn:example:mammal:monotreme:echidna
  └┬┘ └──────────────┬───────────────┘
scheme              path
複製代碼

URL: Uniform Resource Locator 統一資源定位符

一種具體的 URI,即 URL 能夠用來標識一個資源,並且還指名瞭如何 locate(定位)這個資源。通俗的講,URL 是 Internet 上用來描述資源的字符串,標識了一個互聯網資源,並指定了對其進行操做或者獲取資源的方法。目前最大的缺點是當信息資源的存放地點發生變化時,必須對 URL 做出相應的改變。blog

URN: Uniform Resource Name 統一資源名稱

即經過名稱來標識資源,不依賴於位置,而且有可能減小失效連接個個數。用於標識惟一書目的 ISBN 系統是一個典型的 URN 使用範例。例如,ISBN 0486275574(urn:isbn:0-486-27557-4)無二義性地標識出莎士比亞的戲劇《羅密歐與朱麗葉》的某一特定版本。ip

URN 是基於某名字空間經過名稱指定資源的 URI。人們能夠經過 URN 來指出某個資源,而無需指出其位置和得到方式。資源無需是基於互聯網的。例如,URNurn:ISBN0-395-36341-1 指定標識系統(即國際標準書號ISBN)和某資源在該系統中的惟一表示的 URI。它能夠容許人們在不指出其位置和得到方式的狀況下談論這本書。資源

示例:

  1. urn:issn:1535-3613 (國際標準期刊編號)
  2. urn:isbn:9787115318893 (國際標準圖書編號)

區別

URI 指的是一個資源,URL 指的是用地址定位一個資源,URN 指的是用名稱定位一個資源。 即URL 和 URN 是 URI 的子集。

如圖所示:

uri-url-urn-diff

舉個例子:

尋找一個具體的人:若是經過地址找,即xx省xx市xx區 ... xx單元xx室的主人,這就是 URL(經過位置定位資源);若是經過身份證號去找就是 URN(經過身份證號表示某我的,不經過某我的所在的位置)。

參考連接

相關文章
相關標籤/搜索