<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    隨筆 - 312, 文章 - 14, 評論 - 1393, 引用 - 0
    數據加載中……

    Java網絡編程從入門到精通(20):HTTP協議簡介

    本文為原創,如需轉載,請注明作者和出處,謝謝!


    上一篇:Java網絡編程從入門到精通(19):套接字(Socket)的異常

    一、
    什么是HTTP協議

    HTTP協議是一種應用層協議,HTTP是HyperText Transfer Protocol(超文本傳輸協議)的英文縮寫。HTTP可以通過傳輸層的TCP協議在客戶端和服務器之間傳輸數據。HTTP協議主要用于Web瀏覽器和Web服務器之間的數據交換。我們在使用IE或Firefox瀏覽網頁或下載Web資源時,通過在地址欄中輸入http://host:port/path,開頭的4個字母http就相當于通知瀏覽器使用HTTP協議來和host所確定的服務器進行通訊。

    HTTP協議誕生于上世紀90年代初;第一個被廣泛使用的版本是HTTP0.9。這個最初的版本非常簡陋,它只向服務器發送一個非常簡單的請求,而服務器也會返回一個很簡單的響應以及相應的HTML文本。在隨后的HTTP1.0中,增加了很多在HTTP0.9中沒有的特性,如增加了資源重定位,大量的狀態響應碼等。在最新的HTTP1.1中,對HTTP1.0做了更進一步的改進,除了增加了一些請求方法外,最大的改進就是可以使HTTP保持連接狀態。這對于一些頻繁傳輸數據的應用是非常有益的。由于HTTP協議已經達到了它的目標,因此,負責制定規范的W3C已經停止了對HTTP的改進(和HTTP相關的協議或擴展并未停止),所以,HTTP1.1將是HTTP協議的最后一個版本。

    無論你是從事網絡程序開發,還是Web開發,或是網站的維護人員;都必須對HTTP協議有一個比較深入的了解。因此,HTTP協議不僅是Internet上應用最為廣泛的協議,也是應用協議家族中比較簡單的一種入門級協議;而且所有的Web服務器無一例外地都支持HTTP協議。這也充分地說明,對于那些開發網絡程序,尤其是開發各種類型的Web服務器的開發人員,透徹地掌握HTTP協議將對你所開發的基于HTTP協議的系統產生直接的影響。

    由于本文的目的并不是講解HTTP協議,因此,只討論了HTTP協議的主要部分,如果讀者對HTTP協議感性趣,并想深入了解HTTP協議,請查看RFC2616或通過www.w3c.org來了解HTTP協議的詳情。

    二、HTTP的工作方式

    HTTP協議采用了請求/響應的工作方式。基于HTTP1.0協議的客戶端在每次向服務器發出請求后,服務器就會向客戶端返回響應消息(包括請求是否正確以及所請求的數據),在確認客戶端已經收到響應消息后,服務端就會關閉網絡連接(其實是關閉TCP連接)。在這個數據傳輸過程中,并不保存任何歷史信息和狀態信息,因此,HTTP協議也被認為是無狀態的協議,圖1描繪了HTTP1.0協議的通訊過程。

     

    圖1  HTTP1.0協議的通訊過程

    HTTP1.0協議中,當Web瀏覽器發出請求時,就意味著一個請求/響應會話已經開始。在請求、響應結束后,服務器就會立刻關閉這個連接。這種會話方式雖然簡便,但它會帶來另外一個問題。如果客戶端瀏覽器訪問的某個HTML或其他類型的Web頁中包含有其他的Web資源,如JavaScript文件、圖像文件、CSS文件等;當瀏覽器每遇到這樣一個Web資源,就會建立一個HTTP會話。如果這樣的資源很多的話,就會加重服務器的負擔,同時也會影響客戶端瀏覽器加載HTMLWeb資源的效率。

    在對上述的缺陷進行改進和完善后,HTTP1.1協議進入了我們的視線。HTTP1.1和HTTP1.0相比較而言,最大的區別就是增加了持久連接支持。當客戶端使用HTTP1.1協議連接到服務器后,服務器就將關閉客戶端連接的主動權交還給客戶端;也就是說,在客戶端向服務器發送一個請求并接收以一個響應后,只要不調用Socket類的close方法關閉網絡連接,就可以繼續向服務器發送HTTP請求。當HTML中含有其他的Web資源時,瀏覽器就可以使用同一個網絡連接向下載這些資源,這樣就可以大大減輕服務器的壓力。圖2演示了這一過程。

     

    圖2  HTTP1.1協議的通訊過程

    HTTP1.1除了支持持久連接外,還將HTTP1.0的請求方法從原來的三個(GET、POST和HEAD)擴展到了八個(OPTIONS、GET、HEAD、POST、PUT、DELETE、TRACE和CONNECT)。而且還增加了很多請求和響應字段,如上述的持久連接的字段Connection。這個字段有兩個值,Close和Keep-Alive。如果使用Connection:Close,則關閉HTTP1.1的持久連接的功能,要打開HTTP1.1的持久連接的功能,必須使用Connection:Keep-Alive,或者不加Connection字段(因為HTTP1.1在默認情況下就是持久連接的)。除了這些,還提供了身份認證、狀態管理和緩存(Cache)等相關的請求頭和響應頭。

    下一篇:
    Java網絡編程從入門到精通(21):HTTP消息的格式





    Android開發完全講義(第2版)(本書版權已輸出到臺灣)

    http://product.dangdang.com/product.aspx?product_id=22741502



    Android高薪之路:Android程序員面試寶典 http://book.360buy.com/10970314.html


    新浪微博:http://t.sina.com.cn/androidguy   昵稱:李寧_Lining

    posted on 2009-06-07 09:38 銀河使者 閱讀(4616) 評論(2)  編輯  收藏 所屬分類: java 原創網絡編程

    評論

    # re: Java網絡編程從入門到精通(20):HTTP協議簡介  回復  更多評論   

    都到20了還講基礎
    http://xiaoshuo.bobamboo.org/
    2009-06-07 09:52 | 網絡小說

    # re: Java網絡編程從入門到精通(20):HTTP協議簡介  回復  更多評論   

    還有很多個20呢,哈哈,一點點來
    2009-06-07 09:56 | 銀河使者
    主站蜘蛛池模板: 国产啪精品视频网站免费尤物| 四虎在线免费视频| 99人中文字幕亚洲区 | 性xxxx视频播放免费| 色多多A级毛片免费看| 亚洲AV成人片色在线观看| 91香蕉成人免费网站| 边摸边吃奶边做爽免费视频99| 国产成人亚洲综合色影视 | 久久亚洲精品成人综合| 毛片免费观看网址| 中文在线观看国语高清免费| 亚洲最大视频网站| 久久久久亚洲AV成人网人人软件| 中文字幕免费在线| 永久免费无码网站在线观看个| 亚洲国产精品成人综合色在线婷婷 | 亚洲日韩乱码中文无码蜜桃臀网站| AV无码免费永久在线观看| 特级无码毛片免费视频| 亚洲欧洲中文日产| 久久久久亚洲AV综合波多野结衣| 无码少妇一区二区浪潮免费| 成在人线av无码免费高潮喷水 | 久久亚洲国产欧洲精品一| 色视频色露露永久免费观看| 久久精品乱子伦免费| 老司机福利在线免费观看| 亚洲天堂中文字幕在线观看| 亚洲午夜久久久久妓女影院| 国产jizzjizz免费看jizz| 亚洲免费在线视频观看| 免费观看大片毛片| 日本免费A级毛一片| 一区二区三区视频免费| 亚洲色成人网站WWW永久四虎 | 亚洲日本在线观看视频| 在线精品免费视频| 97视频免费在线| 91免费在线播放| 免费无码一区二区三区|