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