近期在開始學習網絡通信理論。 看的書是業界經典《圖解HTTP》,到URI,URL這部份內容的時候,對「URL是URI的子集」這句話沒有很好的理解。 百度了好些篇文章,仍是沒能透徹的去區分這兩者的區別。 而後google到了一篇寫的比較通俗易懂的文章,打算基於這篇文章,對URI,URL的區別作一個概念上的理解,力求通俗。 網絡
首先,其實這兩個縮寫的概念其實全稱就已經很是精確的代表了含義,只不過對於初學者,仍是比較抽象而已。 ide
URL:Uniform Resource Locator 統一資源定位符;
URI:Uniform Resource Identifier 統一資源標識符;學習
咱們先從字面意思上去嘗試理解, 而後對這兩者的區別進行說明,正是這篇文章的內容。 google
URL: 關鍵詞-"資源定位", 那就是經過寫明路徑的方式,表示出資源的位置,位置被指定,一般資源也就被指定,例如302班1列3排的同窗,身份是可以被肯定的。 url
URI: 關鍵詞-"資源標識", 一個名爲小明的男同窗。咱們明確的知道了,有這麼我的,性別男,名小明。 spa
目前爲止,這些都不難理解。
咱們繼續討論:「URL是URI的子集」orm
咱們看這個圖:blog
Your name could be a URI because it identifies you, but it couldn't be a URL because it doesn't help anyone find your location. On the other hand, your address is both a URI and a URL because it both identifies you and it provides a location for you.
你的名字能夠做爲一個URI(資源標識),由於它可以標識你這我的。可是不能是一個URL,由於你的名字,不足以讓別人知道你的位置,而後找到你。
你的地址既是一個URI,同時也是一個URL,由於你的地址,能夠暴露你是誰,也能夠告訴別人你在哪裏。
簡單這麼說,你可能由於上圖更加迷惑了。 這是因爲咱們慣性的思惟誤差致使的。 咱們很容易這樣想:URL包含了地址和資源信息, 而URI彷佛只是指明瞭資源。 好像URL的範圍大於URI,因此URI應該是URL的子集纔對啊。
而這正是致使咱們不容易理解的根本緣由。 ip
上圖咱們不是很好理解,因此咱們換一個圖:
能夠看到,峨眉山的猴子,即指定了位置,還指明瞭猴子。 可是,對於猴子這一個物種來講,猴子並不僅是存在峨眉山中。 咱們不難理解,峨眉山的猴子只是猴子的一種。 峨眉山的猴子是猴子的子集。資源
再回到上面,對比看看, URL和URI 的關係也是如此。 URL 只是 URI 的一種。 所以URL是UIR的子集。
【參考】:https://dev.to/flippedcoding/what-is-the-difference-between-a-uri-and-a-url-4455