URI與URL傻傻分不清楚?

前言

URIhttp協議中的重要組成部分,它是一個用於標識某一互聯網資源名稱的字符串。 該種標識容許用戶對任何的資源經過特定的協議進行交互操做。vue

URI有什麼用呢? 舉個例子:git

當沒有URI時,若是張三想分享一段視頻給李四,那麼張三要告訴李四以下要求:github

  • 要使用FTP協議訪問zhangsanvideo.com,端口是8088
  • 登陸用戶名是lisi,密碼是lisi
  • 接着要進入到/share/video目錄下。
  • 下載名爲sharetolisi.flv文件。

當有了URI時,一切都變得很是簡單了。只需一段字符串就能表達以上的要求。
ftp://lisi:lisi@zhangsanvideo.com:8088/share/video/sharetolisi.flv瀏覽器

這就是URI的威力。服務器

URI與URL、URN的區別

什麼是URL

URL是在RFC1738文檔中定義的。全稱:Uniform Resource Locator,統一資源定位符。它也就是咱們俗稱的網站地址。 它表示資源的位置,如同在網絡上的門牌。網絡

統一資源定位符的標準格式以下:
[協議類型]://[服務器地址]:[端口號]/[資源層級UNIX文件路徑][文件名]?[查詢]#[片斷ID]ide

其中[端口號]、[查詢]、[片斷ID]都屬於選填項。網站

HTTP協議中的URL將從互聯網獲取信息的五個基本元素包括在一個簡單的地址中:
一、傳送協議
二、層級URL標記符號(爲[//],固定不變)
三、訪問資源須要的憑證信息(可省略)
四、服務器(一般爲域名,有時爲IP地址)
五、端口號(以數字方式表示,若爲默認值可省略)
六、路徑(以"/"字符區別路徑中的每個目錄名稱)
七、查詢(GET模式的參數。以?字符爲起點,每一個參數以&隔開,再以=分開參數名稱與值,一般以UTF8的URL編碼,避開字符衝突的問題)
八、片斷(以#字符爲起點)編碼

https://juejin.im:80/search?query=vue&type=all爲例,其中:3d

  • https,是協議
  • juejin.im,是服務器
  • 443,是端口號
  • /search,是路徑
  • ?query=vue&type=all,是詢問

大多數瀏覽器不要求用戶輸入協議部分(上面URL中的https://),由於大多數網頁內容都是HTTP/HTTPS協議。一樣80HTTP協議經常使用的端口號,443HTTPS協議經常使用的端口號,所以通常也沒必要寫明。

因爲HTTP協議容許服務器將瀏覽器重定向到另外一個網頁地址,所以許多服務器容許用戶省略網頁地址中的部分,好比www

什麼是URN

URN是在RFC2141文檔中定義的,全稱Uniform Resource Name,統一資源名稱。指望爲資源提供持久的、位置無關的標識方式,並容許簡單地將多個命名空間映射到單個URN命名空間。

一個URI的存在並不意味着被標識的資源必定是可用的,當它仍然須要保持全局惟一和持久,即便資源已經不存在了或變得不可用了。

URNURI的歷史名字,只從URI發佈以後,URN的使用已經被URI取代了。

什麼是URI

URI是在RFC1630文檔中定義的,全稱:Uniform Resource Identifier,統一資源標識符。它是一個用於標識某個互聯網資源名稱的字符串。

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

通用URI的格式以下:
[協議名]://[用戶名]:[密碼]@[主機名]:[端口]/[路徑]?[查詢參數]#[片斷ID]

如圖所示:

URL、URN與URI的關係

URNURL都已是URI的一種。如圖所示:

URI就是在某一規則下能把一個資源獨一無二地標識出來。在現實生活中URI就是身份證號碼。而家庭住址也能將人標識出來,因此家庭住址也是URI

URL是以描述人的位置來惟一肯定一我的的。
舉例:
住址協議://中國/廣東省/廣州市/番禺區/某大學/某宿舍樓/某宿舍/張三

能夠看到,這個字符串一樣標識出了惟一的一我的,起到URI的做用,因此URLURI的子集。

用身份證號也能夠惟一肯定一我的。對於廣州的張三來講,能夠用身份證號:440xxxxxxxxxxxxxxx來標識他。 因此URN也是URI的一種。

不管是用定位的方式仍是用ID的方式,均可以惟一肯定一我的,都是URI的一種實現。

由於URN沒能流行起來,因此在互聯網中URI幾乎能夠認定爲URL

結尾

更多文章請移步樓主github,若是喜歡請點一下star,對做者也是一種鼓勵。

相關文章
相關標籤/搜索