一什麼是HTTP協議
HTTP協議是一種應用層協議HTTP是HyperText Transfer Protocol(超文本傳輸協議)的英文縮寫HTTP可以通過傳輸層的TCP協議在客戶端和服務器之間傳輸數據HTTP協議主要用於Web浏覽器和Web服務器之間的數據交換我們在使用IE或Firefox浏覽網頁或下載Web資源時通過在地址欄中輸//hostport/path開頭的個字母http就相當於通知浏覽器使用HTTP協議來和host所確定的服務器進行通訊
HTTP協議誕生於上世紀年代初第一個被廣泛使用的版本是HTTP這個最初的版本非常簡陋它只向服務器發送一個非常簡單的請求而服務器也會返回一個很簡單的響應以及相應的HTML文本在隨後的HTTP中增加了很多在HTTP中沒有的特性如增加了資源重定位大量的狀態響應碼等在最新的HTTP中對HTTP做了更進一步的改進除了增加了一些請求方法外最大的改進就是可以使HTTP保持連接狀態這對於一些頻繁傳輸數據的應用是非常有益的由於HTTP協議已經達到了它的目標因此負責制定規范的WC已經停止了對HTTP的改進(和HTTP相關的協議或擴展並未停止)所以HTTP將是HTTP協議的最後一個版本
無論你是從事網絡程序開發還是Web開發或是網站的維護人員都必須對HTTP協議有一個比較深入的了解因此HTTP協議不僅是Internet上應用最為廣泛的協議也是應用協議家族中比較簡單的一種入門級協議而且所有的Web服務器無一例外地都支持HTTP協議這也充分地說明對於那些開發網絡程序尤其是開發各種類型的Web服務器的開發人員透徹地掌握HTTP協議將對你所開發的基於HTTP協議的系統產生直接的影響
由於本文的目的並不是講解HTTP協議因此只討論了HTTP協議的主要部分如果讀者對HTTP協議感性趣並想深入了解HTTP協議請查看RFC或通過來了解HTTP協議的詳情
二HTTP的工作方式
HTTP協議采用了請求/響應的工作方式基於HTTP協議的客戶端在每次向服務器發出請求後服務器就會向客戶端返回響應消息(包括請求是否正確以及所請求的數據)在確認客戶端已經收到響應消息後服務端就會關閉網絡連接(其實是關閉TCP連接)在這個數據傳輸過程中並不保存任何歷史信息和狀態信息因此HTTP協議也被認為是無狀態的協議圖描繪了HTTP協議的通訊過程
圖
HTTP
協議的通訊過程
在HTTP協議中當Web浏覽器發出請求時就意味著一個請求/響應會話已經開始在請求響應結束後服務器就會立刻關閉這個連接這種會話方式雖然簡便但它會帶來另外一個問題如果客戶端浏覽器訪問的某個HTML或其他類型的Web頁中包含有其他的Web資源如JavaScript文件圖像文件CSS文件等當浏覽器每遇到這樣一個Web資源就會建立一個HTTP會話如果這樣的資源很多的話就會加重服務器的負擔同時也會影響客戶端浏覽器加載HTML等Web資源的效率
在對上述的缺陷進行改進和完善後HTTP協議進入了我們的視線HTTP和HTTP相比較而言最大的區別就是增加了持久連接支持當客戶端使用HTTP協議連接到服務器後服務器就將關閉客戶端連接的主動權交還給客戶端也就是說在客戶端向服務器發送一個請求並接收以一個響應後只要不調用Socket類的close方法關閉網絡連接就可以繼續向服務器發送HTTP請求當HTML中含有其他的Web資源時浏覽器就可以使用同一個網絡連接向下載這些資源這樣就可以大大減輕服務器的壓力圖演示了這一過程
圖
HTTP
協議的通訊過程
HTTP除了支持持久連接外還將HTTP的請求方法從原來的三個(GETPOST和HEAD)擴展到了八個(OPTIONSGETHEADPOSTPUTDELETETRACE和CONNECT)而且還增加了很多請求和響應字段如上述的持久連接的字段Connection這個字段有兩個值Close和KeepAlive如果使用ConnectionClose則關閉HTTP的持久連接的功能要打開HTTP的持久連接的功能必須使用ConnectionKeepAlive或者不加Connection字段(因為HTTP在默認情況下就是持久連接的)除了這些還提供了身份認證狀態管理和緩存(Cache)等相關的請求頭和響應頭
From:http://tw.wingwit.com/Article/program/Java/hx/201311/26444.html