URI

URI

在電腦術語中,統一資源標識符(Uniform Resource Identifier,或URI)是一個用於標識某一網際網路資源名稱的字元串。 該種標識允許用戶對任何(包括本地和網際網路)的資源通過特定的協定進行互動操作。URI由包括確定語法和相關協定的方案所定義。Web上可用的每種資源 -HTML文檔、圖像、視頻片段、程式等 - 由一個通用資源標識符(Uniform Resource Identifier, 簡稱"URI")進行定位。

使用

URL是Uniform Resource Locator的縮寫,譯為“統一資源定位符”。

◇ URL的格式

URL的格式由下列三部分組成:

第一部分是協定(或稱為服務方式);

第二部分是存有該資源的主機IP位址(有時也包括連線埠號);

第三部分是主機資源的具體地址。,如目錄和檔案名稱等。

第一部分和第二部分之間用“://”符號隔開,第二部分和第三部分用“/”符號隔開。第一部分和第二部分是不可缺少的,第三部分有時可以省略。

◇ URL示例

檔案的URL:

用URL表示檔案時,伺服器方式用file表示,後面要有主機IP位址、檔案的存取路徑(即目錄)和檔案名稱等信息。有時可以省略目錄和檔案名稱,但“/”符號不能省略。

例:file://a:1234/b/c/d.txt

代表獲取資源使用ftp協定,資源目標是a主機的1234連線埠的b目錄下的c目錄下的d.txt。

HTTP的 URL已經在URI的組成中做過示範,在此不再陳述。

區別

URI、URL和URN

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

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

URN:Uniform Resource Name,統一資源名稱。

其中,URL,URN是URI的子集。

Web上地址的基本形式是URI,它代表統一資源標識符。有兩種形式:

URL:目前URI的最普遍形式就是無處不在的URL或統一資源定位器。

URN:URL的一種更新形式,統一資源名稱(URN, Uniform Resource Name)不依賴於位置,並且有可能減少失效連線的個數。但是其流行還需假以時日,因為它需要更精密軟體的支持。

URI是以某種統一的(標準化的)方式標識資源的簡單字元串。

典型情況下,這種字元串以scheme(命名URI的名字空間的標識符——一組相關的名稱)開頭,語法如下:

[scheme:] scheme-specific-part

URI以scheme和冒號開頭。Scheme用大寫/小寫字母開頭,後面為空或者跟著更多的大寫/小寫字母、數字、加號、減號和點號。冒號把scheme與scheme-specific-part分開了,並且scheme-specific-part的語法和語義(意思)由URI的名字空間決定。如下面的例子:

http://域名,其中http是scheme,//域名 是scheme-specific-part,並且它的scheme與scheme-specific-part被冒號分開了。

URI有絕對和相對之分,絕對的URI指以scheme(後面跟著冒號)開頭的URI。前面提到的http://域名 就是絕對的URI的一個例子,其它的例子還有mailto:xxx@xxx.xx、news:地址和xyz://whatever。你可以把絕對的URI看作是以某種方式引用某種資源,而這種方式對標識符出現的環境沒有依賴。如果使用檔案系統作類比,絕對的URI類似於從根目錄開始的某個檔案的徑。

與絕對的URI不同的,相對的URI不是以scheme(後面跟著冒號)開始的URI。 它的一個例子是articles/articles.html。你可以把相對的URI看作是以某種方式引用某種資源,而這種方式依賴於標識符出現的環境。如果用檔案系統作類比,相對的URI類似於從當前目錄開始的檔案路徑。

URL是Uniform Resource Location的縮寫,譯為"統一資源定位符"。通俗地說,URL是Internet上用來描述信息資源的字元串,主要用在各種WWW客戶程式和伺服器程式上,特別是著名的Mosaic。採用URL可以用一種統一的格式來描述各種信息資源,包括檔案、伺服器的地址和目錄等。

目前最大的缺點是當信息資源的存放地點發生變化時,必須對URL作相應的改變。因此人們正在研究新的信息資源表示方法,例如:URI(Universal Resource Identifier)即"通用資源標識"(參見RFC 1630)、URN(Uniform Resource Name)即"統一資源名"和URC(Uniform Resource Citation)即"統一資源引用符"等。

URI還在進一步的研究當中。研究的方向就是彌補URL的缺點。

與URN

URI可被視為定位符(URL),名稱(URN)或兩者兼備。統一資源名(URN)如同一個人的名稱,而統一資源定位符(URL)代表一個人的住址。換言之,URN定義某事物的身份,而URL提供查找該事物的方法。URN僅用於命名,而不指定地址。

用於標識唯一書目的ISBN系統是一個典型的URN使用範例。例如,ISBN 0486275574(urn:isbn:0-486-27557-4)無二義性地標識出莎士比亞的戲劇《羅密歐與朱麗葉》的某一特定版本。為獲得該資源並閱讀該書,人們需要它的位置,也就是一個URL地址。在類Unix作業系統中,一個典型的URL地址可能是一個檔案目錄,例如file:///home/username/RomeoAndJuliet.pdf。該URL標識出存儲於本地硬碟中的電子書檔案。因此,URL和URN有著互補的作用。

技術觀點

URL是標識一個網際網路資源,並指定對其進行操作或取得該資源的方法的URI。可能通過對主要訪問手段的描述,也可能通過網路“位置”進行標識。例如一個URL,標識一個特定資源(首頁)並表示該資源的某種形式(例如以編碼字元表示的,首頁的HTML代碼)是可以通過URL指定的網路主機獲得的。URN是基於某命名空間通過名稱指定資源的URI。人們可以通過URN來指出某個資源,而無需指出其位置和獲得方式。資源無需是基於網際網路的。例如,URN urn:isbn:0-395-36341-1 指定標識系統(即國際標準書號ISBN)和某資源在該系統中的唯一表示的URI。它可以允許人們在不指出其位置和獲得方式的情況下談論這本書。

技術刊物,特別是IETF和W3C發布的標準中,基本不再使用“URL”這一術語,因為很少需要區別URL和URI。但是,在非技術文獻和全球資訊網軟體中,URL這一術語仍被廣泛使用。此外,術語“網址”在非技術文獻中時常作為URL或URI的同義詞出現,雖然往往其指代的只是“http”和“https”協定。

RFC3305

關於URI的討論多源於題目為《W3C/IETF URI規劃聯合小組報告:統一標識資源符(URI),URL和統一資源名(URN):闡明與建議》的RFC3305檔案。這一RFC檔案描述了一個,以統一W3C和IETF內部對於各種“UR*”術語之間關係的不同看法為目的而設立的,W3C/IETF聯合工作小組的工作。雖然未作為標準被這兩個組織所發布,但該檔案確立了上述種種共識,並就此催生了許多標準的誕生。

相關介紹

發展

URI與URL有著共同的歷史。在1990年,Tim Berners-Lee的關於超文本的提案間接地引入了使用URL作為一個表示超連結目標資源的短字元串的概念。當時,人們稱之為“超文本名”或“文檔名”。

在之後的三年半中,由於全球資訊網的HTML(超文本標記語言)核心技術、HTTP與瀏覽器都得到了發展,區別提供資源訪問和資源標記的兩種字元串的必要性開始顯現。雖然其時尚未被正式定義,但“統一資源定位符”這一術語開始被用於代表前者,而後者則由“統一資源名稱”所表示。

在關於定義URL和URN的爭論中,人們注意到兩者事實上基於同一個基礎的“資源標識”的概念。在1994年6月,IETF發布了Berners-Lee的RFC 1630,(非正式地)指出了URL和URN的存在,並進一步定義了“通用資源標識符”——語義和語法由具體協定規定的類URL字元串的規範文法。此外,該RFC文檔亦嘗試定義了其時正被使用著的URL協定的文法,同時指出(但並未標準化)了相對URL和片段標識符的存在。

標準改良

1994年12月,RFC 1738 正式定義了絕對和相對URL,改進了URL文法,定義了如何解析URL為絕對形式,並更加完善地列舉了其時正處於使用中的URL協定。而URN定義和文法直到1997年5月RFC 2141公布後才正式統一。

1998年8月,隨著RFC 2396的發表,URI文法形成了獨立的標準,同時RFC 1630和1738中關於URI和URL的許多部分也得到了修訂和增補。新RFC修改了“URI”中“U”的含義:它開始代表統一(Uniform)而不再是通用(Universal)。RFC 1738中總結了既存URL協定的部分被移至另外一篇獨立文檔中。IANA 保留著這些協定的註冊信息,而RFC 2717首次描述了註冊它們的流程。

在1999年12月,RFC 2732對RFC 2396進行了小幅更新,開始允許URI包括IPv6地址。一段時間以後,在兩個標準中暴露出的一些問題促使了一系列的修訂草案的發展,這些草案被統稱為rfc2396bis。這一由RFC 2396的共同作者Roy Fielding引導協調的集體努力,由2005年1月RFC 3986的發布推至了頂峰。該RFC文檔成為了現今(2009年)於網際網路上被推薦使用的URI文法版本,並使得RFC 2396成為了歷史。然而,它卻並未替代現有的URL協定細節;RFC 1738繼續管轄著大多數協定,除了某些已被它取而代之的場合——例如被RFC 2616改良的”HTTP”協定等。與此同時,IETF發布了RFC 3986,亦即完整的STD 66標準,標識著URI通用文法正式成官方網際網路協定。

在2002年8月,RFC 3305指出,雖然術語“URL”仍被廣泛地用於日常用語之中,但其本身已幾乎被廢棄。其功用,僅是作為對於某些URI因包含某種指示著網路可達性的協定而作為地址存在的提醒而已。基於URI的眾多標準,例如資源描述框架等,已經清楚地表明,資源標識本無需指出通過網際網路獲得資源副本的方法,亦無須指出資源是否基於網路。

在2006年2月,RFC 4395用了15頁詳細闡述了《關於新的URI方案的指導方針和登記程式》

在2006年11月1日,W3C技術架構小組公布了《連線替代副本使查找和發布可行化》,一個對於發布給定資源的多個版本的權威URI和其最佳實踐的指導。例如,內容可能因用於訪問資源的設備的支持性和設定不同,而語言或大小上有所調整已適應這種差異。

與XML命名空間

XML擁有一個叫命名空間的,一個可包含元素集和屬性名稱的抽象域的概念。命名空間的名稱(一個必須遵守通用URI文法的字元串)用於標識一個XML命名空間。但是,命名空間的名稱一般不被認為是一個URI,因為URI規範定義了字元串的“URI性”是根據其目的而不是其詞法組成決定的。一個命名空間名稱同時也並不一定暗示任何URI協定的語義;例如,一個以”http:”開頭的命名空間名稱很可能與HTTP協定沒有任何關係。XML專家們就這一問題在XML開發電子郵件列表上進行了深入的辯論;一部分人認為命名空間名稱可以是URI,由於包含一個具體命名空間的名稱集可以被看作是一個被標識的資源,也由於“XML中的命名空間”規範的一個版本指出過命名空間名稱“是”一個URI引用。但是,集體共識似乎指出一個命名空間名稱只是一個湊巧看起來像URI的字元串,僅此而已。

早先,命名空間名稱是可以匹配任何非空URI引用的語法的,但後來的一個對於“XML命名空間建議”的訂正廢棄了相對URI引用的使用。一個獨立的、針對XML 1.1的命名空間的規範允許使用IRI引用作為命名空間名稱的基準,而不僅是URI引用。

為了消除XML新人中產生的對於URI(尤其是HTTP URL)的使用的困惑,一個被稱為RDDL(資源目錄描述語言)的描述語言被建立了,雖然RDDL的規範並沒有正式地位,也並沒有獲得任何相關組織(例如W3C)的檢查和支持。一個RDDL文檔可以提供關於一個特定命名空間和使用它的XML文檔的,機器與人類都能讀懂的信息。XML文檔的作者鼓勵使用RDDL文檔,這樣一旦文檔中的命名空間名稱被索引,(系統)就會取得一個RDDL文檔。這樣,許多開發者對於讓命名空間名稱指向網路可達資源的需求就能得到滿足。

相關搜尋

熱門詞條