一文帶你理解URI 和 URL 有什麼區別?

當我們開啟瀏覽器,要訪問一個網站或者一個ftp伺服器的時候,一定要輸入一串字串, 比如:

https://blog。csdn。net/

或者:

ftp://192。168。0。111/

這樣我們就可以得到一個html格式的頁面或者一個檔案。

那麼這個地址是什麼意思呢?

就必須要從

URI、URL、URN

講起。

一、URI、URL、URN概念

URI = Uniform Resource Identifier 統一資源標誌符

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

URN = Uniform Resource Name 統一資源名稱

看了這個概念相信大家還是不明白什麼意思,

簡單來說,就是URI是抽象的定義,不管用什麼方法表示,只要能定位一個資源,就叫URI。

本來設想的的使用兩種方法定位:1,URL,用地址定位;2,URN 用名稱定位。

舉個例子:去村子找個具體的人(URI),如果用地址:某村多少號房子第幾間房的主人 就是URL, 如果用身份證號+名字 去找就是URN了。

原來uri包括url和urn,後來urn沒流行起來,導致幾乎目前所有的uri都是url。

三者之間幾何關係如下:

一文帶你理解URI 和 URL 有什麼區別?

其實一直有個誤解,很多人以為URI是URL的子集,其實應該反過來。URL是URI的子集才對。

URI RFC 3986

URL是什麼

URL代表著是統一資源定位符(UniformResourceLocator)。

作用是為了告訴使用者 某個資源在 Web 上的地址。

這個資源可以是一個 HTML 頁面,一個 CSS 文件,一幅影象或一個貓片等等。

比如:

用HTTP協議訪問Web伺服器:

一文帶你理解URI 和 URL 有什麼區別?

用FTP協議下載和上傳檔案時

一文帶你理解URI 和 URL 有什麼區別?

讀取客戶端計算機本地檔案時

一文帶你理解URI 和 URL 有什麼區別?

這裡面細分,又可以分為好幾個部分。

協議

儘管 URL 有各種不同的寫法, 但它們有一個共同點, 開頭部分的內容必須是協議型別,

可以是http、ftp、mailto或者https,這部分文字都表示瀏覽器應當使用的訪問方法。,會用//為分隔符。

決定了後面部分的寫法, 因此並不會造成混亂。

使用者名稱/密碼

使用者名稱密碼通常可以省略。

域名

域名是

www.gitee.com

,在傳送請求前,會向DNS伺服器解析IP。如果已經知道ip,還可以跳過DNS解析那一步,直接把IP當做域名部分使用。

域名後面有些時候會帶有埠,和域名之間用

分隔,埠不是一個URL的必須的部分。 當網址為http://時,預設埠為80, https://時,預設埠是443, ftp://時,預設埠是21。

檔案路徑/檔名

從域名的第一個/開始到最後一個/為止,是虛擬目錄的部分。虛擬目錄也不是URL必須的部分,上述例項http協議url中的虛擬目錄是

/yikoulinux/chat/blob/master/

從域名最後一個

/

開始到

為止,是檔名部分;如果沒有

,則是從域名最後一個

/

開始到

#

為止,是檔名部分;如果沒有

#

,那麼就從域名的最後一個/從開始到結束,都是檔名部分。

比如前面的http url例項,其中檔案

chat。h

在gitee伺服器

/yikoulinux/chat/blob/master/

下:

一文帶你理解URI 和 URL 有什麼區別?

檔名也不是一個URL的必須部分。

檔名省略情況如下:

http://www。gitee。com/dir/

我們可以這樣理解, 以“/” 結尾代表 /dir/ 後面本來應該有的檔名被省略了。 根據 URL 的規則, 檔名可以像前面這樣省略。 不過, 沒有檔名, 伺服器怎麼知道要訪問哪個檔案呢? 其實, 我們會在伺服器上事先設定好檔名省略時要訪問的預設檔名。 這個設定根據伺服器不同而不同, 大多數情況下是 index。html 或者 default。htm 之類的檔名。

因此, 像前面這樣省略檔名時, 伺服器就會訪問

/dir/index。html

或者

/dir/default。htm

[由web伺服器配置]。

http://www。gitee。com/ 這個 URL 也是以“/” 結尾的, 也就是說它表示訪問一個名叫“/” 的目錄 。 而且, 由於省略了檔名, 所以結果就是訪問 /index。html 或者/default。htm 這樣的檔案了。

http://www。gitee。com 這次連結尾的“/” 都省略了。 像這樣連目錄名都省略時, 真不知道到底在請求哪個檔案了, 實在有些過分。 不過, 這種寫法也是允許的。 當沒有路徑名時, 就代表訪問根目錄下事先設定的預設檔案 , 也就是 /index。html 或者 /default。htm 這些檔案, 這樣就不會發生混亂了。

http://www。gitee。com/yikoupeng

一般來說, 這種情況會按照下面的慣例進行處理: 如果Web 伺服器上存在名為 yikoupeng的檔案, 則將 yikoupeng作為檔名來處 理; 如果存在名為 yikoupeng的目錄, 則將 yikoupeng作為目錄名來處理 。

rfc

關於協議的說明文件,可以登入下面網站查詢:

https://www。rfc-editor。org/

搜尋URL協議的說明,就有25個結果。

一文帶你理解URI 和 URL 有什麼區別?

我們想檢視某個協議,點選即可。

一文帶你理解URI 和 URL 有什麼區別?

可以以任意一種格式檢視該文件:

一文帶你理解URI 和 URL 有什麼區別?

下面只複製第一頁內容:

Network Working Group T。 Berners-LeeRequest for Comments: 1738 CERNCategory: Standards Track L。 Masinter Xerox Corporation M。 McCahill University of Minnesota Editors December 1994 Uniform Resource Locators (URL)Status of this Memo This document specifies an Internet standards track protocol for the Internet community, and requests discussion and suggestions for improvements。 Please refer to the current edition of the “Internet Official Protocol Standards” (STD 1) for the standardization state and status of this protocol。 Distribution of this memo is unlimited。Abstract This document specifies a Uniform Resource Locator (URL), the syntax and semantics of formalized information for location and access of resources via the Internet。1。 Introduction This document describes the syntax and semantics for a compact string representation for a resource available via the Internet。 These strings are called “Uniform Resource Locators” (URLs)。 The specification is derived from concepts introduced by the World- Wide Web global information initiative, whose use of such objects dates from 1990 and is described in “Universal Resource Identifiers in WWW”, RFC 1630。 The specification of URLs is designed to meet the requirements laid out in “Functional Requirements for Internet Resource Locators” [12]。 This document was written by the URI working group of the Internet Engineering Task Force。 Comments may be addressed to the editors, or to the URI-WG 。 Discussions of the group are archived at