一文帶你理解 URI 和 URL 有什麼區別?
當我們打開瀏覽器,要訪問一個網站或者一個 ftp 服務器的時候,一定要輸入一串字符串, 比如:
https://blog.csdn.net/
或者:
ftp://192.168.0.111/
這樣我們就可以得到一個 html 格式的頁面或者一個文件。
那麼這個地址是什麼意思呢?
就必須要從URI、URL、URN
講起。
一、URI、URL、URN 概念
-
URI = Uniform Resource Identifier 統一資源標誌符
-
URL = Uniform Resource Locator 統一資源定位符
-
URN = Uniform Resource Name 統一資源名稱
看了這個概念相信大家還是不明白什麼意思,
簡單來說,就是 URI 是抽象的定義,不管用什麼方法表示,只要能定位一個資源,就叫 URI。
本來設想的的使用兩種方法定位:1,URL,用地址定位;2,URN 用名稱定位。
舉個例子:去村子找個具體的人(URI),如果用地址:某村多少號房子第幾間房的主人 就是 URL, 如果用身份證號 + 名字 去找就是 URN 了。
原來 uri 包括 url 和 urn,後來 urn 沒流行起來,導致幾乎目前所有的 uri 都是 url。
三者之間幾何關係如下:
URI RFC 3986
URL 是什麼
URL 代表着是統一資源定位符(UniformResourceLocator)。
作用是爲了告訴使用者 某個資源在 Web 上的地址。
這個資源可以是一個 HTML 頁面,一個 CSS 文檔,一幅圖像或一個貓片等等。
比如:
用 HTTP 協議訪問 Web 服務器:
用 FTP 協議下載和上傳文件時
讀取客戶端計算機本地文件時
這裏面細分,又可以分爲好幾個部分。
協議
儘管 URL 有各種不同的寫法, 但它們有一個共同點, 開頭部分的內容必須是協議類型,
可以是 http、ftp、mailto 或者 https,這部分文字都表示瀏覽器應當使用的訪問方法。, 會用 // 爲分隔符。
決定了後面部分的寫法, 因此並不會造成混亂。
用戶名 / 密碼
用戶名密碼通常可以省略。
域名
域名是 www.gitee.com,在發送請求前,會向 DNS 服務器解析 IP。如果已經知道 ip,還可以跳過 DNS 解析那一步,直接把 IP 當做域名部分使用。
端口
域名後面有些時候會帶有端口,和域名之間用:
分隔,端口不是一個 URL 的必須的部分。當網址爲 http:// 時,默認端口爲 80, https:// 時,默認端口是 443, ftp:// 時,默認端口是 21。
文件路徑 / 文件名
從域名的第一個 / 開始到最後一個 / 爲止,是虛擬目錄的部分。虛擬目錄也不是 URL 必須的部分,上述實例 http 協議 url 中的虛擬目錄是/yikoulinux/chat/blob/master/
從域名最後一個/
開始到?
爲止,是文件名部分;如果沒有?
,則是從域名最後一個/
開始到#
爲止,是文件名部分;如果沒有?
和#
,那麼就從域名的最後一個 / 從開始到結束,都是文件名部分。
比如前面的 http url 實例,其中文件chat.h
在 gitee 服務器/yikoulinux/chat/blob/master/
下:
文件名省略情況如下:
- http://www.gitee.com/dir/
我們可以這樣理解, 以 “/” 結尾代表 /dir/ 後面本來應該有的文件名被省略了。根據 URL 的規則, 文件名可以像前面這樣省略。不過, 沒有文件名, 服務器怎麼知道要訪問哪個文件呢?其實, 我們會在服務器上事先設置好文件名省略時要訪問的默認文件名。這個設置根據服務器不同而不同, 大多數情況下是 index.html 或者 default.htm 之類的文件名。
因此, 像前面這樣省略文件名時, 服務器就會訪問 /dir/index.html
或者 /dir/default.htm
[由 web 服務器配置]。
-
http://www.gitee.com/ 這個 URL 也是以 “/” 結尾的, 也就是說它表示訪問一個名叫 “/” 的目錄 。而且, 由於省略了文件名, 所以結果就是訪問 /index.html 或者 / default.htm 這樣的文件了。
-
http://www.gitee.com 這次連結尾的 “/” 都省略了。像這樣連目錄名都省略時, 真不知道到底在請求哪個文件了, 實在有些過分。不過, 這種寫法也是允許的。當沒有路徑名時, 就代表訪問根目錄下事先設置的默認文件 , 也就是 /index.html 或者 /default.htm 這些文件, 這樣就不會發生混亂了。
-
http://www.gitee.com/yikoupeng
一般來說, 這種情況會按照下面的慣例進行處理:如果 Web 服務器上存在名爲 yikoupeng 的文件, 則將 yikoupeng 作爲文件名來處 理;如果存在名爲 yikoupeng 的目錄, 則將 yikoupeng 作爲目錄名來處理 。
rfc
關於協議的說明文檔,可以登錄下面網站查詢:
https://www.rfc-editor.org/
搜索 URL 協議的說明,就有 25 個結果。
下面只拷貝第一頁內容:
Network Working Group T. Berners-Lee
Request for Comments: 1738 CERN
Category: Standards Track L. Masinter
Xerox Corporation
M. McCahill
University of Minnesota
Editors
December 1994
Uniform Resource Locators (URL)
Status of this Memo
This document specifies an Internet standards track protocol for the
Internet community, and requests discussion and suggestions for
improvements. Please refer to the current edition of the "Internet
Official Protocol Standards" (STD 1) for the standardization state
and status of this protocol. Distribution of this memo is unlimited.
Abstract
This document specifies a Uniform Resource Locator (URL), the syntax
and semantics of formalized information for location and access of
resources via the Internet.
1. Introduction
This document describes the syntax and semantics for a compact string
representation for a resource available via the Internet. These
strings are called "Uniform Resource Locators" (URLs).
The specification is derived from concepts introduced by the World-
Wide Web global information initiative, whose use of such objects
dates from 1990 and is described in "Universal Resource Identifiers
in WWW", RFC 1630. The specification of URLs is designed to meet the
requirements laid out in "Functional Requirements for Internet
Resource Locators" [12].
This document was written by the URI working group of the Internet
Engineering Task Force. Comments may be addressed to the editors, or
to the URI-WG <uri@bunyip.com>. Discussions of the group are archived
at <URL:http://www.acl.lanl.gov/URI/archive/uri-archive.index.html>
本文由 Readfog 進行 AMP 轉碼,版權歸原作者所有。
來源:https://mp.weixin.qq.com/s/nuwYGdVLhi3hWq25o9kvuA