URI、URL與URN的區別是什麼?

原文出處:http://stackoverflow.com/questions/176264/what-is-the-difference-between-a-uri-a-url-and-a-urn
html


當談起URL、URI、URN時,彷彿他們是不一樣的東西,可是單憑肉眼來看,他們看起來彷佛又是同樣的。
那麼,他們之間有什麼明顯區別呢?
(如下摘自stackoverflow網友回答)網絡

1.Roger Pate網友
ide

URI用於識別,URL用於定位;然而,定位符一般也是標識符,所以每一條URL也是一個URI,但卻有一些URI並不能稱做URL。ui

一些實例:url

  • Roger Patespa


個人名字Roger Pate是一個標識符。這就像是一個URI,但卻不能是一條URL,由於經過它你不會知道個人住址或者是聯繫方式。這樣的話,僅在美國就會匹配到至少五個和我名字同樣的人。orm


  • 4914 West Bay Street, Nassau, Bahamas(巴哈馬拿騷市西灣街4914號)htm

這是一個地點,一個物理位置的標識符。它既像一條URL又像一個URI(由於URL即URI),又間接地確認我是一個住在西灣街4914號的居民。在這個案例中,個人居住地址惟一地標識了我,可是要是我有一個舍友的話就另當別論了。blog

我之因此用"像"是由於這些例子並不按照所需的語法。ip

常見的混淆

如下引自維基百科

在計算機中,一個統一資源定位符(URL)是統一資源標識符(URI)的子集,它指定了一個已標識的可
用資源及檢索機制。在流行的習慣用語、許多技術文檔以及口頭語言中,URL經常被錯誤地當成URI的同
義詞使用。...(我加上的重點)

因爲這兩個詞太容易混淆,許多產品及文檔都錯誤地使用其中一個詞代替另一個,指定他們本身的區別,或者把他們當同義詞使用。

URNs

除了那些更受管制,並打算在空間和時間也必須是惟一的這些狀況外,個人名字Roger Pate就能夠說是一個統一資源名稱(Uniform Resource Name)。


由於我如今與別人都使用這個叫作"Roger Pate"的名字,這個名字就不是全球惟一的了,也就不適合稱做一個URN了。然而,即便沒有其餘家庭使用此名字,我是以我祖父的名字命名的,那麼在時間上個人名字也就不是惟一的。即便事實上並不是如此,我以個人名字命名我後代的可能性也讓其不適合做爲一個URN。


URN有別於有着嚴格惟一性約束的URL,雖然兩者都遵循URI的語法。


2.Stephen Ostermiller網友

  • URI -- 統一資源標識符

URI是使用一小串數字、字母和符號來識別文檔的標準。它是在RFC 3986定義的:URI指的是通用句法。全部的URL、URN及URC都是URI。

  • URL -- 統一資源定位符

URL中包含了如何經過其位置來獲取資源的信息。例如:
http://example.com/mypage.html
ftp://example.com/download.zip
mailto:user@example.com
file:///home/user/file.txt
tel:1-888-555-5555
http://example.com/resource?foo=bar#fragment
/other/link.html (一個相對URL,只有在另一個完整的URL上下文中才有用)

URL老是以一個協議頭開始,一般包括諸如主機名(example.com)和一個文件路徑(/foo/mypage.html)。URL可能也會有查詢參數及片斷識別符。

  • URN -- 統一資源名稱

URN經過一個惟一及持續的名字來標識資源,但卻沒必要告訴你如何在網絡上定位到它。它一般是以一個urn前綴的開頭的。例如:
urn:isbn:0451450523 to identify a book by its ISBN number.
urn:uuid:6e8bc430-9c3a-11d9-9669-0800200c9a66 a globally unique identifier
urn:publishing:book - An XML namespace that identifies the document as a type of book.

URN能夠識別想法和概念。他們並不限於識別文件。當一個URN表明一個文件時,它能夠被一個解析器轉換成一條URL。而後這個文件就這個用轉換後的URL下載了。

  • URC -- 統一資源引用符

URC指的是一個文件的元數據,而不是文件自己。URC的一個例子是一個指定HTML網頁的源代碼,如:view-source:http://example.com/

  • Data URI

咱們能夠直接將數據放到一個URI中,而不是在互聯網上定位或命名它。一個數據URI:data:,Hello%20World

3.幾張圖表帶你更進一步理解三者關係

wKioL1jFCtahHsYcAAGIzNbW2yc512.png

wKioL1jFDHDgq3uOAAAR_pghk58744.jpg

wKioL1jFDOng6MY3AABEkJJpOls405.jpg

相關文章
相關標籤/搜索