HTTP工作原理及案例解析
當(dāng)在 Web 瀏覽器中輸入一個(gè) Web 地址或統(tǒng)一資源定位符 (URL) 時(shí),Web 瀏覽器將通過 HTTP 協(xié)議建立與服務(wù)器上的 Web 服務(wù)之間的連接。URL 和統(tǒng)一資源標(biāo)識(shí)符 (URI) 是大多數(shù)人認(rèn)為與 Web 地址相關(guān)聯(lián)的名稱。
http://www.cisco.com/index.html URL 是指向特定資源的一個(gè) URL 示例;是服務(wù)器上名為 index.html 的一個(gè)網(wǎng)頁,標(biāo)識(shí)為 cisco.com。 單擊各圖查看 HTTP 使用的步驟。
Web 瀏覽器是計(jì)算機(jī)所使用的客戶端應(yīng)用程序類型,用來連接到萬維網(wǎng)并訪問 Web 服務(wù)器上存儲(chǔ)的資源。 與大多數(shù)服務(wù)器進(jìn)程一樣,Web 服務(wù)器以后臺(tái)服務(wù)的方式運(yùn)行,并支持不同類型的文件。
Web 客戶端首先連接服務(wù)器,然后發(fā)送資源請(qǐng)求,從而訪問需要的資源內(nèi)容。 服務(wù)器響應(yīng)資源請(qǐng)求。瀏覽器對(duì)收到的資源進(jìn)行解釋,并將解釋后的數(shù)據(jù)呈現(xiàn)給用戶。
瀏覽器可以解釋并顯示很多種數(shù)據(jù)類型,如純文本或構(gòu)建網(wǎng)頁的超文本標(biāo)記語言。 但是,除此之外的其他數(shù)據(jù)類型需要其他服務(wù)或程序的支持,即我們常說的插件。 為便于瀏覽器識(shí)別所接受文件的類型,服務(wù)器應(yīng)指定文件中包含的數(shù)據(jù)類型。
為了更好地理解 Web 瀏覽器和 Web 客戶端的交互原理,我們可以研究一下瀏覽器是如何打開網(wǎng)頁的。
在本示例中,請(qǐng)使用http://www.cisco.com/index.html URL。
首先,如圖 1 所示,瀏覽器對(duì) URL 地址的三個(gè)組成部分進(jìn)行分析:
- http(協(xié)議或方案)
- www.cisco.com(服務(wù)器名稱)
- index.html(所請(qǐng)求的指定文件名)
然后,如圖 2 所示,瀏覽器將通過域名服務(wù)器將 www.cisco.com 轉(zhuǎn)換成到數(shù)字地址,用它連接到該服務(wù)器。 根據(jù) HTTP 協(xié)議的要求,瀏覽器向該服務(wù)器發(fā)送 GET 請(qǐng)求并請(qǐng)求 index.html 文件。 服務(wù)器,如圖 3 所示,將該網(wǎng)頁的 HTML 代碼發(fā)送到瀏覽器。 最后,如圖 4 所示,瀏覽器解密 HTML 代碼并為瀏覽器窗口格式化頁面。
在萬維網(wǎng)中,HTTP 是一種數(shù)據(jù)傳輸協(xié)議。同時(shí),它還是現(xiàn)在最常用的應(yīng)用程序協(xié)議。 最初它的開發(fā)只是為了發(fā)布和檢索 HTML 頁面;但是 HTTP 的靈活性使其成為分布式、協(xié)作型信息系統(tǒng)中一個(gè)至關(guān)重要的應(yīng)用程序。
HTTP 是一種請(qǐng)求/響應(yīng)協(xié)議。 當(dāng)客戶端,尤其是 Web 瀏覽器,發(fā)送請(qǐng)求到 Web 服務(wù)器時(shí),HTTP 將指定用于該通信的消息類型。 常用的三種消息類型包括 GET、POST 和 PUT(如圖所示)。
GET 是一種客戶端數(shù)據(jù)請(qǐng)求消息。 客戶端(Web 瀏覽器)向 Web 服務(wù)器發(fā)送 GET 消息以請(qǐng)求 HTML 頁面。 當(dāng)服務(wù)器收到 GET 請(qǐng)求時(shí),會(huì)以一個(gè)狀態(tài)行(如 HTTP/1.1 200 OK)和自己的一條消息做出響應(yīng)。 來自服務(wù)器的消息可能包含所請(qǐng)求的 HTML 文件(如果存在),或者可能包含一個(gè)錯(cuò)誤或信息性消息,比如“所請(qǐng)求文件的位置已更改”。
POST 和 PUT 消息用于向 Web 服務(wù)器上傳數(shù)據(jù)文件。 例如,當(dāng)用戶將數(shù)據(jù)輸入到嵌入網(wǎng)頁的表單中時(shí)(比如在完成一個(gè)命令請(qǐng)求時(shí)),會(huì)發(fā)送 POST 消息到 Web 服務(wù)器。POST 消息中包含的是用戶在表單中提交的數(shù)據(jù)。
PUT 用于向 Web 服務(wù)器上傳資源或內(nèi)容。 例如,如果用戶嘗試上傳一個(gè)文件或圖像到網(wǎng)站,一個(gè)附加了該文件或圖像的 PUT 信息將從客戶端發(fā)送到服務(wù)器。
雖然 HTTP 相當(dāng)靈活,但不是一個(gè)安全協(xié)議。 由于消息以明文形式向服務(wù)器發(fā)送消息,它非常容易被攔截和解讀。 與之相同的是,服務(wù)器的響應(yīng)(通常是 HTML 頁面)也不加密。
為了在 Internet 中進(jìn)行安全通信,人們使用安全超文本傳輸 (HTTPS) 協(xié)議來訪問或發(fā)布 Web 服務(wù)器信息。HTTPS 借助驗(yàn)證和加密來保護(hù)數(shù)據(jù),使數(shù)據(jù)得以安全地在客戶端與服務(wù)器之間傳輸。HTTPS 中還指定了應(yīng)用層和傳輸層之間數(shù)據(jù)通信的附加規(guī)則。HTTPS 使用的客戶端請(qǐng)求服務(wù)器響應(yīng)過程與 HTTP 相同,但在數(shù)據(jù)流通過網(wǎng)絡(luò)傳輸以前會(huì)使用安全套接字層 (SSL) 加密。 由于要對(duì)流量進(jìn)行加密和解密,HTTPS 會(huì)在服務(wù)器上產(chǎn)生額外的負(fù)載和處理時(shí)間。