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