HTTP協議是一種應用層協議,HTTP是HyperText Transfer Protocol(超文本傳輸協議)的英文縮寫。HTTP可以通過傳輸層的TCP協議在客戶端和服務器之間傳輸數據。HTTP協議主要用於Web瀏覽器和Web服務器之間的數據交換。我們在使用IE或Firefox瀏覽網頁或下載Web資源時,通過在地址欄中輸入,開頭的4個字母http就相當於通知瀏覽器使用HTTP協議來和host所確定的服務器進行通訊。
HTTP協議誕生於上世紀90年代初;第一個被廣泛使用的版本是HTTP0.9。這個最初的版本非常簡陋,它只向服務器發送一個非常簡單的請求,而服務器也會返回一個很簡單的響應以及相應的HTML文本。在隨後的HTTP1.0中,增加了很多在HTTP0.9中沒有的特性,如增加了資源重定位,大量的狀態響應碼等。在最新的HTTP1.1中,對HTTP1.0做了更進一步的改進,除了增加了一些請求方法外,最大的改進就是可以使HTTP保持連接狀態。這對於一些頻繁傳輸數據的應用是非常有益的。由於HTTP協議已經達到了它的目標,因此,負責制定規範的W3C已經停止了對HTTP的改進,所以,HTTP1.1將是HTTP協議的最後一個版本。
無論你是從事網絡程序開發,還是Web開發,或是網站的維護人員;都必須對HTTP協議有一個比較深入的瞭解。因此,HTTP協議不僅是Internet上應用最爲廣泛的協議,也是應用協議家族中比較簡單的一種入門級協議;而且所有的Web服務器無一例外地都支持HTTP協議。這也充分地說明,對於那些開發網絡程序,尤其是開發各種類型的Web服務器的開發人員,透徹地掌握HTTP協議將對你所開發的基於HTTP協議的系統產生直接的影響。
二、HTTP的工作方式
HTTP協議採用了請求/響應的工作方式。基於HTTP1.0協議的客戶端在每次向服務器發出請求後,服務器就會向客戶端返回響應消息(包括請求是否正確以及所請求的數據),在確認客戶端已經收到響應消息後,服務端就會關閉網絡連接(其實是關閉TCP連接)。在這個數據傳輸過程中,並不保存任何歷史信息和狀態信息,因此,HTTP協議也被認爲是無狀態的協議,圖1描繪了HTTP1.0協議的通訊過程。
在HTTP1.0協議中,當Web瀏覽器發出請求時,就意味着一個請求/響應會話已經開始。在請求、響應結束後,服務器就會立刻關閉這個連接。這種會話方式雖然簡便,但它會帶來另外一個問題。如果客戶端瀏覽器訪問的某個HTML或其他類型的Web頁中包含有其他的Web資源,如JavaScript文件、圖像文件、CSS文件等;當瀏覽器每遇到這樣一個Web資源,就會建立一個HTTP會話。如果這樣的資源很多的話,就會加重服務器的負擔,同時也會影響客戶端瀏覽器加載HTML等Web資源的效率。