我想不少人和我同樣弄不清楚URI和URL之間的區別,有人可能以爲這是統一律唸的不一樣表述而已。網絡
咱們先看看定義:網絡傳輸協議
URI:Uniform Resource Identifier,即統一資源標誌符,用來惟一的標識一個資源。url
URL:Uniform Resource Locator,統一資源定位符。即URL能夠用來標識一個資源,並且還指明瞭如何locate這個資源。orm
URN:Uniform Resource Name,統一資源命名。即經過名字來表示資源的。資源
好了定義看完了,可能仍是不理解下面咱們就詳細說說三者的區別和用途。字符串
URL確定是一個URI,可是一個URI並不必定是一個URL,URL僅僅是URI的一種表現形式而已。二者的差距主要能夠從命名上來區分,URI是資源標誌符,全部他只要求具備"標識性",而URL是和URI的主要區別就是,URL除了具備URI的「標識性」之外,還具備定位功能,能夠用來描述資源的具體位置,還指明瞭獲取資源所採用的協議。一個完整的URL包含協議名稱,主機名稱(IP或者域名)、端口號(沒寫端口號默認 爲80端口)、路徑和查詢字符串這5個部分。好比:http://www.microsoft.com:80/images/hello.png?type=png.這樣一個url,上述的5個部分分別是:網絡傳輸協議名稱:http,主機:www.mcrosoft.com,端口號:80,路徑:images/hello.png 查詢字符串:type=png。域名
看完了URL和URI的區別,咱們在看看URN是什麼東西。URN也是URL的一種表現形式,它和URL的區別就是與資源的位置無關,正式因爲位置的無關性,被某個URN標識的資源在位置發生變化時,其URI能夠保持不變。form
因此看來URL和URN都是URI的一種擴展,一種表現形式,URL和URN確定是一個URI,可是URI不必定是URN或URL。擴展