當(dāng)我們打開瀏覽器,要訪問一個(gè)網(wǎng)站或者一個(gè)ftp服務(wù)器的時(shí)候,一定要輸入一串字符串,
比如:
https://blog.csdn.net/
或者:
ftp://192.168.0.111/
這樣我們就可以得到一個(gè)html格式的頁面或者一個(gè)文件。
那么這個(gè)地址是什么意思呢?
就必須要從URI、URL、URN
講起。
一、URI、URL、URN概念
- URI = Uniform Resource Identifier 統(tǒng)一資源標(biāo)志符
- URL = Uniform Resource Locator 統(tǒng)一資源定位符
- URN = Uniform Resource Name 統(tǒng)一資源名稱
看了這個(gè)概念相信大家還是不明白什么意思,
簡(jiǎn)單來說,就是URI是抽象的定義,不管用什么方法表示,只要能定位一個(gè)資源,就叫URI。
本來設(shè)想的的使用兩種方法定位:1,URL,用地址定位;2,URN 用名稱定位。
舉個(gè)例子:去村子找個(gè)具體的人(URI),如果用地址:某村多少號(hào)房子第幾間房的主人 就是URL, 如果用身份證號(hào)+名字 去找就是URN了。
原來uri包括url和urn,后來urn沒流行起來,導(dǎo)致幾乎目前所有的uri都是url。
三者之間幾何關(guān)系如下:
其實(shí)一直有個(gè)誤解,很多人以為URI是URL的子集,其實(shí)應(yīng)該反過來。URL是URI的子集才對(duì)。
URI
RFC 3986
URL是什么
URL代表著是統(tǒng)一資源定位符(UniformResourceLocator)。
作用是為了告訴使用者 某個(gè)資源在 Web 上的地址。
這個(gè)資源可以是一個(gè) HTML 頁面,一個(gè) CSS 文檔,一幅圖像或一個(gè)貓片等等。
比如:
用HTTP協(xié)議訪問Web服務(wù)器:
用FTP協(xié)議下載和上傳文件時(shí)
讀取客戶端計(jì)算機(jī)本地文件時(shí)
這里面細(xì)分,又可以分為好幾個(gè)部分。
協(xié)議
盡管 URL 有各種不同的寫法, 但它們有一個(gè)共同點(diǎn), 開頭部分的內(nèi)容必須是協(xié)議類型,
可以是http、ftp、mailto或者h(yuǎn)ttps,這部分文字都表示瀏覽器應(yīng)當(dāng)使用的訪問方法。,會(huì)用//為分隔符。
決定了后面部分的寫法, 因此并不會(huì)造成混亂。
用戶名/密碼
用戶名密碼通常可以省略。
域名
域名是www.,在發(fā)送請(qǐng)求前,會(huì)向DNS服務(wù)器解析IP。如果已經(jīng)知道ip,還可以跳過DNS解析那一步,直接把IP當(dāng)做域名部分使用。
端口
域名后面有些時(shí)候會(huì)帶有端口,和域名之間用:
分隔,端口不是一個(gè)URL的必須的部分。當(dāng)網(wǎng)址為http://時(shí),默認(rèn)端口為80,
https://時(shí),默認(rèn)端口是443,
ftp://時(shí),默認(rèn)端口是21。
文件路徑/文件名
從域名的第一個(gè)/開始到最后一個(gè)/為止,是虛擬目錄的部分。虛擬目錄也不是URL必須的部分,上述實(shí)例http協(xié)議url中的虛擬目錄是/yikoulinux/chat/blob/master/
從域名最后一個(gè)/
開始到?
為止,是文件名部分;如果沒有?
,則是從域名最后一個(gè)/
開始到#
為止,是文件名部分;如果沒有?
和#
,那么就從域名的最后一個(gè)/從開始到結(jié)束,都是文件名部分。
比如前面的http url實(shí)例,其中文件chat.h
在gitee服務(wù)器/yikoulinux/chat/blob/master/
下:
文件名也不是一個(gè)URL的必須部分。
文件名省略情況如下:
我們可以這樣理解, 以“/” 結(jié)尾代表 /dir/ 后面本來應(yīng)該有的文件名被省略了。根據(jù) URL 的規(guī)則, 文件名可以像前面這樣省略。不過, 沒有文件名, 服務(wù)器怎么知道要訪問哪個(gè)文件呢?其實(shí), 我們會(huì)在服務(wù)器上事先設(shè)置好文件名省略時(shí)要訪問的默認(rèn)文件名。這個(gè)設(shè)置根據(jù)服務(wù)器不同而不同, 大多數(shù)情況下是 index.html 或者 default.htm 之類的文件名。
因此, 像前面這樣省略文件名時(shí), 服務(wù)器就會(huì)訪問 /dir/index.html
或者 /dir/default.htm
[由web服務(wù)器配置]。
http://www./
這個(gè) URL 也是以“/” 結(jié)尾的, 也就是說它表示訪問一個(gè)名叫“/” 的目錄 。而且, 由于省略了文件名, 所以結(jié)果就是訪問 /index.html 或者/default.htm 這樣的文件了。
http://www.
這次連結(jié)尾的“/” 都省略了。像這樣連目錄名都省略時(shí), 真不知道到底在請(qǐng)求哪個(gè)文件了, 實(shí)在有些過分。不過, 這種寫法也是允許的。當(dāng)沒有路徑名時(shí), 就代表訪問根目錄下事先設(shè)置的默認(rèn)文件 , 也就是 /index.html 或者 /default.htm 這些文件, 這樣就不會(huì)發(fā)生混亂了。
一般來說, 這種情況會(huì)按照下面的慣例進(jìn)行處理:如果Web 服務(wù)器上存在名為 yikoupeng的文件, 則將 yikoupeng作為文件名來處
理;如果存在名為 yikoupeng的目錄, 則將 yikoupeng作為目錄名來處理 。
rfc
關(guān)于協(xié)議的說明文檔,可以登錄下面網(wǎng)站查詢:
https://www./
搜索URL協(xié)議的說明,就有25個(gè)結(jié)果。
我們想查看某個(gè)協(xié)議,點(diǎn)擊即可。
可以以任意一種格式查看該文檔:
下面只拷貝第一頁內(nèi)容:
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./URI/archive/uri-archive.index.html>