--- title: URI、URL 與 URN date: 2023-12-06 is_modified: false disqus: cynthiahackmd categories: - "硬體系統 › 計算機系統" tags: - "計算機概論" --- {%hackmd @CynthiaChuang/Github-Page-Theme %} <br> 在學習網路相關知識的過程中,URI、URL 和 URN 這三個術語會反覆出現。好吧,主要是 URI 和 URL 使用得比較多,反而是 URN 比較少被提及。這篇網誌就簡單整理這三個術語的定義與差異。 是說,寫完後一直沒發出來,導致我都有點忘了當初我為啥會寫這篇筆記了。好像是命名變數時,經常在 URI、URL 和 URN 之間拿不定主意吧?🤔但如果你也對這些術語感到困惑,這篇可以賞光一下~ <!--more--> <p class="illustration"> <img src="https://i.imgur.com/LOUwjvI.png" alt="URI 可以是 URL 或 URN,甚至同時具備兩者的特性。" width="450px"> URI 可以是 URL 或 URN,甚至同時具備兩者的特性。(圖片來源: <a href="https://zh.wikipedia.org/zh-tw/统一资源名称">維基百科</a>) </p> ## URI (Uniform Resource Identifier,統一資源標識符) URI,即統一資源標識符,呃...算了,先別管這個拗口詞,反正我平時也沒怎麼用這個詞。我們還是來看看它的英文定義好了,在 [RFC2396](https://datatracker.ietf.org/doc/html/rfc2396) 這份文件中,對 [URI 的定義是](https://datatracker.ietf.org/doc/html/rfc2396#section-1.1): - **Uniform** 允許在同一上下文中使用不同類型的資源標識符,並統一解釋常見的語法規則。這樣可以讓協議方案的增擴變得更加容易。 - **Resource** 資源指的是可以被識別的任何事物,像是文件、圖像、服務...等,不僅限於具體物理實體,也可以是虛擬資源,甚至是一組實體的集合。 - **Identifier** 標識符,用來表明可識別的資源。 寫的超複雜的有沒有!!其實只要記住,==URI 就是用來標示資源的字串,無論是抽象的還是實體的都可以== 就好,像是網路上的各種資源(HTML 文件、圖像、音檔、影片、程序等)都可以用 URI 來定位。 換句話說,**URI 是資源的抽象定義**,而要進行實際定位,通常有兩種方法: 1. URL (Uniform Resource Locator,統一資源定位符) 2. URN (Uniform Resource Name,統一資源名稱) <p class="illustration"> <img src="https://i.imgur.com/JdMhaCu.png" alt="URI 是資源的抽象定義,其中包含了兩種實際定位方式 URL 與 URN" width="400px"> URI 是資源的抽象定義,其中包含了兩種實際定位方式 URL 與 URN(圖片來源: <a href="https://www.readfog.com/a/1660187374166052864">閱坊</a>) </p> ## URL (Uniform Resource Locator,統一資源定位符) URL 就是我們常說的**網址**,用來描述是網際網路上資源的位址,它是==具體的定位方法,告訴我們如何到達資源==。有點像是網路上的**門牌號碼**,可以直接把你導航到網站的特定頁面。 例如,定位 HTML 資源的 URL 可能是: ```html= https://www.example.com.tw https://www.example.com/index.html ``` 然而,並非所有的 URL 都是以 HTTP/HTTPS 開頭,還有許多其他協議可用,比如:ftp、mailto、telnet、file...等。 ```html= ftp://user:password@ftp.gitee.com:21/code/chat/chat.py file://localhost/code/chat/chat.py ``` <br class="big"> 一般來說,URL 由三個部分組成: 1. 協議(或稱服務方式) 2. 資源所在伺服器的名稱或 IP 地址(有時也包括埠號) 3. 主機資源的具體地址,如目錄和檔名等。 <p class="illustration"> <img src="https://i.imgur.com/BBzwTm1.png" alt="URL 是由協議、伺服器地址、檔名地址所組成"> URL 是由協議、伺服器地址、檔名地址所組成 </p> ## URN (Uniform Resource Name,統一資源名稱) 接下來,我們來看看最後一個術語 URN。說個有趣的插曲,我在查資料時,Google 搜尋結果的第一項居然是骨灰罈...不過在這邊 URN 是指==某個特定資源的名稱==,它不關心資源在何處,只關心資源是誰。 跟 URL 一樣,URN 也是由三個部份組成: ```bash= <URN> ::= "urn:" <NID> ":" <NSS> ``` 1. URN:表示這是一個 URN 方案標識。 2. NID: 註冊於 [IANA](https://www.iana.org/)的命名空間標識符。 3. NSS:具體的命名空間字串。 <br class="big"> **ISBN(國際標準書號)** 是一個常見的 URN 例子,ISBN 可以用來表示特定書籍,即便我把書本從書局帶回我家,它的 ISBN 依然能唯一識別這本書,就像是牛被牽到北京,它還是牛。 如果將書籍的 ISBN `ISBN 10 :9780132350884`,寫成 URN 的格式,就是: ```bash= URN:ISSN:9780132350884 ``` <br class="big"> 最後舉個例子,如果今天要在台灣找到某個具體的人(URI),比如用地址來描述:例如臺北市中正區龍福里重慶南路二段永和寓所的主人,那就是 URL。如果用身份證號碼加上姓名(例如:賴清德),那就是 URN 了。 簡而言之,==URI 是對資源的定義,它既可以是抽象的描述,也可以是具體的表達==。這些描述方式可以通過 URN 來標識某個事物的身份,或通過 URL 來提供尋找該事物的具體方法。簡單來說,URI、URL 和 URN 在網路資源定位中各自扮演著不同的角色,彼此協作,幫助我們準確地找到所需的資源。 ## 參考資料 1. GreedIsGood (2021-09-20)。[URL / URN / URI 的定義](https://ithelp.ithome.com.tw/articles/10266610?sc=pt)。檢自 iT 邦幫忙 (2023-07-05)。 2. 蜗牛蒲哥 (2022-07-30)。[URL与URI,有联系有区别?](https://zhuanlan.zhihu.com/p/38120321)。檢自 知乎 (2023-07-05)。 3. [一文帶你理解 URI 和 URL 有什麼區別?](https://www.readfog.com/a/1660187374166052864)。檢自 閱坊 (2023-07-05)。 4. 刘Java (2021-08-04)。[URI和URL的概念和区别](https://juejin.cn/post/6992383657340551204)。檢自 掘金 (2023-07-05)。 5. 協同撰寫。[統一資源標識符](https://zh.wikipedia.org/zh-tw/统一资源标志符)。檢自 維基百科 (2023-07-05)。 6. 協同撰寫。[統一資源定位符](https://zh.wikipedia.org/zh-tw/统一资源定位符 )。檢自 維基百科 (2023-07-05)。 7. 協同撰寫。[統一資源名稱](https://zh.wikipedia.org/zh-tw/统一资源名称)。檢自 維基百科 (2023-07-05)。 8. [URN](https://www.issn.org/zh-hans/services-et-prestations/services-en-ligne/urn/)。檢自 ISSN (2023-07-05)。 ## 更新紀錄 :::spoiler 最後更新日期:2023-12-06 - 2023-12-06 發布 - 2023-07-06 完稿 - 2023-07-05 起稿 ::: {%hackmd @CynthiaChuang/Github-Page-Footer %}
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up