1.瀏覽因特網(wǎng)資源
URL是統(tǒng)一資源定位符,它是瀏覽器尋找信息所需要的資源位置。通過URL人們才可以找到并共享英特網(wǎng)上的資源。
URI即統(tǒng)一資源標(biāo)識符,是一種比URL更為通用的資源標(biāo)識符,URL是它的一個子集,URI包括了;兩個子集,還有一個是URN。URL是根據(jù)資源的路徑來標(biāo)識資源,而URN是根據(jù)資源的名稱來標(biāo)識資源,與他們當(dāng)前所處的位置無關(guān)。
比方說如果我們想要獲取URL http://www.joes-hardware.com/seasonal/index-fall.html,那么URL分為以下三部分:
- 1.URL的第一部分是方案(scheme),方案告訴web客戶端用什么協(xié)議訪問資源,這個例子使用的是HTTP,其他的方案還有FTP,rtsp等等。
- 2.URL的第二部分是服務(wù)器的地址(www.joes-hardware.com),這部分告訴web客戶端資源位于何處。
- 3.URL的第三部分是資源路徑(seasonal/index-fall.html),相當(dāng)于是說服務(wù)器的地址是告訴了資源的大致位置,那么資源路徑則是告訴了我們資源的具體位置。
URL的語法
URL是描述這個資源在互聯(lián)網(wǎng)中的哪個位置,我們可以用不同的方案(http,ftp,smtp)來訪問因特網(wǎng)資源,因此URL語法會隨方案的不同而有所不同。即便如此,大部分的方案都遵從相似的語法。
大部分URL方案的URL語法都是由下列9個部分組成:
<scheme>://<user>:<password>@<host>:<port>/<path>;<params>?<query>#<frag>
幾乎沒有哪個URL包含了所有這9個部分。URL中最重要的是方案,主機(jī)地址,路徑。
1.方案-使用什么協(xié)議
方案規(guī)定了使用什么協(xié)議訪問資源。方案不分大小寫,所以HTTP和http是一樣的。方案和后面的服務(wù)器主機(jī)地址之間用:隔開。2.主機(jī)與端口
要想要在網(wǎng)絡(luò)上訪問資源,我們需要知道在哪個機(jī)器上裝載了資源,以及在那臺機(jī)器的什么地方能夠找到能對目標(biāo)資源進(jìn)行訪問的服務(wù)器。URL的主機(jī)和端口組件就提供了這兩組信息。
主機(jī)組件標(biāo)識了因特網(wǎng)上能夠訪問該資源的宿主機(jī)器,可以用前面例子的主機(jī)名www.joes-hardware.com或者IP地址來找到主機(jī)名。
端口組件標(biāo)識了服務(wù)器正在監(jiān)聽的網(wǎng)絡(luò)端口,對下層使用了TCP協(xié)議的HTTP來說,默認(rèn)端口號為80。3.用戶名和密碼
很多服務(wù)器要求用戶輸入用戶名和密碼才能訪問資源。這里有幾個例子:
ftp://ftp.prep.ai.mit.edu/pub/gnu
ftp://anonymous@ftp.prep.ai.mit.edu/pub/gnu
ftp://anonymous:my_passwd@ftp.prep.ai.mit.edu/pub/gnu
http://joe:joespasswd@www.joes-hardware.com/sales_info.txt
第一個例子沒有給出用戶名和密碼,只有標(biāo)準(zhǔn)的方案,主機(jī)和路徑。如果有的URL方案需要用戶輸入用戶名和密碼,比如FTP,但是用戶沒有輸入用戶名和密碼,那么瀏覽器會插入一個默認(rèn)的用戶名和密碼。
第二個例子給出了用戶名為anonymous,使用@將用戶名和密碼組件與其他部分分離開。
第三個例子加入了用戶名和密碼,中間用:隔開。4路徑
如果說網(wǎng)絡(luò)資源是一個人,那么服務(wù)器主機(jī)地址可以看做是一個村子,光有這個村子的地址還不足以找到這個人,我們還需要知道它在這個小區(qū)的哪個街道哪個小區(qū)哪個單元,這些信息就是網(wǎng)絡(luò)資源的路徑。我們可以使用/將HTTP路徑組件劃分為一些路徑段。每個路徑段都有自己的參數(shù)(param)組件。-
5.參數(shù)
為了向應(yīng)用程序提供它們所需的輸入?yún)?shù),以便正確的與服務(wù)器進(jìn)行交互,URL中有一個參數(shù)組件。這個組件就是URL中的名值對列表,由字符;將其與URL的其余部分(以及各名值對)分隔開。比如:
ftp://prep.ai.mit.edu/pub/gnu;type=d
在這個例子中有一個參數(shù)type=d,參數(shù)名為type,值為d。http://www.joes-hardware.com/hammers;sale=false/index.html;graphics=true
這個例子有兩個路徑段,hammers和index.html,每個路徑段都有一個參數(shù),
hammers路徑段的參數(shù)是sale=false,參數(shù)名為sale,值為false,index.html路徑段的參數(shù)是graphics=true,參數(shù)名為graphics,值為true。 -
6.查詢字符串
很多資源或者數(shù)據(jù)庫都是可以通過提出問題或者進(jìn)行查詢來縮小請求資源的范圍。
假設(shè)Joe的五金商店在數(shù)據(jù)庫中維護(hù)著一個未售貨物的清單,并可以對清單進(jìn)行查詢來判斷產(chǎn)品是否有貨,那就可以用下列URL來進(jìn)行查詢web數(shù)據(jù)庫,看看編號為12731的貨物是否有貨。http://www.joes-hardware.com/inventory-check.cgi?item=12731
只有問號右邊的內(nèi)容是新出現(xiàn)的,這部分被稱為查詢組件。 7.片段
有些資源類型,比如HTML,除了資源級之外,還可以做進(jìn)一步的劃分,比如對一個帶有章節(jié)的大型文本文檔來說,資源的URL會指向整個文本文檔。
為了引用部分資源或者資源的一個片段,URL支持使用片段組件(flag)來表示一個資源內(nèi)部的片段。比如URL可以指向HTML文檔中一個特定的小節(jié)或圖片。片段掛在URL的右手邊,最前面有一個字符#,比如:
http://www.joes-hardware.com/tools.html#drills
這個例子中,片段dirlls引用了web服務(wù)器上頁面/tools.html中的一個部分,這部分的名字叫dirlls。
HTTP服務(wù)器通常只處理整個對象,而不是對象的片段,客戶端不能將片段傳送給服務(wù)器,瀏覽器從服務(wù)器獲得整個資源后會根據(jù)片段來顯示你感興趣的那部分資源。
方案的世界
- 1.HTTP
超文本傳輸協(xié)議方案,除了沒有用戶名和密碼,與通用的URL格式相符,如果省略了端口,就默認(rèn)為80.
基本格式:
http://<host>:<port>/<path>?<query>#<frag>
示例:
http://www.joes-hardware.com/index.html http://www.joes-hardware.com:80/index.html - 2.HTTPS
HTTPS與HTTP實際是一致的,HTTPS為HTTP傳輸使用SSL提供端到端的加密傳輸,其語法與HTTP語法相同,默認(rèn)端口是443。
基本格式:
https://<host>:<port>/<path>?<query>#<frag>
示例:
https://www.joes-hardware.com/secure.html - 3.FTP
文件傳輸服務(wù)器可以從FTP服務(wù)器上下載或向其上傳文件,并獲取FTP服務(wù)器上的目錄結(jié)構(gòu)內(nèi)容的列表。
基本格式:
ftp //<user>:<password>@<host>:<port>/<path>;<params>
示例:
ftp //anonymous:joe%40joes-hardware.com@prep.ai.mit.edu:21/pub/gnu/