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

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

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

    posts - 297,  comments - 1618,  trackbacks - 0

      本系列下載地址:http://www.tkk7.com/Files/amigoxie/http協(xié)議學習系列-阿蜜果.rar
      下一篇:協(xié)議詳解篇
    蜜果私塾:http協(xié)議學習和總結(jié)系列
    --深入了解篇

    文:阿蜜果

    日期:2009-12-3

          這篇開篇的時候,要感謝一下我的老大,他看到我在寫這個系列,給我提供了一個他以前做內(nèi)部培訓時,寫得很贊的兩個ppt,被我拿來為我所用,(*^__^*) 嘻嘻……。另外感謝下網(wǎng)上提供各種資料的IT同仁們。
    3. 
    深入了解篇

    3.1 CookieSession

    CookieSession都為了用來保存狀態(tài)信息,都是保存客戶端狀態(tài)的機制,它們都是為了解決HTTP無狀態(tài)的問題而所做的努力。

    Session可以用Cookie來實現(xiàn),也可以用URL回寫的機制來實現(xiàn)。用Cookie來實現(xiàn)的Session可以認為是對Cookie更高級的應(yīng)用。

    3.1.1兩者比較

    CookieSession有以下明顯的不同點:

    1Cookie將狀態(tài)保存在客戶端,Session將狀態(tài)保存在服務(wù)器端;

    2Cookies是服務(wù)器在本地機器上存儲的小段文本并隨每一個請求發(fā)送至同一個服務(wù)器。Cookie最早在RFC2109中實現(xiàn),后續(xù)RFC2965做了增強。網(wǎng)絡(luò)服務(wù)器用HTTP頭向客戶端發(fā)送cookies,在客戶終端,瀏覽器解析這些cookies并將它們保存為一個本地文件,它會自動將同一服務(wù)器的任何請求縛上這些cookiesSession并沒有在HTTP的協(xié)議中定義;

    3Session是針對每一個用戶的,變量的值保存在服務(wù)器上,用一個sessionID來區(qū)分是哪個用戶session變量,這個值是通過用戶的瀏覽器在訪問的時候返回給服務(wù)器,當客戶禁用cookie時,這個值也可能設(shè)置為由get來返回給服務(wù)器;

    4)就安全性來說:當你訪問一個使用session 的站點,同時在自己機子上建立一個cookie,建議在服務(wù)器端的SESSION機制更安全些.因為它不會任意讀取客戶存儲的信息。

    3.1.2 Session機制

    Session機制是一種服務(wù)器端的機制,服務(wù)器使用一種類似于散列表的結(jié)構(gòu)(也可能就是使用散列表)來保存信息。

    當程序需要為某個客戶端的請求創(chuàng)建一個session的時候,服務(wù)器首先檢查這個客戶端的請求里是否已包含了一個session標識 - 稱為 session id,如果已包含一個session id則說明以前已經(jīng)為此客戶端創(chuàng)建過session,服務(wù)器就按照session id把這個 session檢索出來使用(如果檢索不到,可能會新建一個),如果客戶端請求不包含session id,則為此客戶端創(chuàng)建一個session并且生成一個與此session相關(guān)聯(lián)的session idsession id的值應(yīng)該是一個既不會重復(fù),又不容易被找到規(guī)律以仿造的字符串,這個 session id將被在本次響應(yīng)中返回給客戶端保存。

    3.1.6 Session的實現(xiàn)方式

    3.1.6.1  使用Cookie來實現(xiàn)

    服務(wù)器給每個Session分配一個唯一的JSESSIONID并通過Cookie發(fā)送給客戶端。

    當客戶端發(fā)起新的請求的時候,將在Cookie頭中攜帶這個JSESSIONID。這樣服務(wù)器能夠找到這個客戶端對應(yīng)的Session

    流程如下圖所示:
       

    3.1.6.2  使用URL回顯來實現(xiàn)

    URL回寫是指服務(wù)器在發(fā)送給瀏覽器頁面的所有鏈接中都攜帶JSESSIONID的參數(shù),這樣客戶端點擊任何一個鏈接都會把JSESSIONID帶會服務(wù)器。

    如果直接在瀏覽器輸入服務(wù)端資源的url來請求該資源,那么Session是匹配不到的。

    TomcatSession的實現(xiàn),是一開始同時使用CookieURL回寫機制,如果發(fā)現(xiàn)客戶端支持Cookie,就繼續(xù)使用Cookie,停止使用URL回寫。如果發(fā)現(xiàn)Cookie被禁用,就一直使用URL回寫。jsp開發(fā)處理到Session的時候,對頁面中的鏈接記得使用response.encodeURL()

    3.1.3J2EE項目中Session失效的幾種情況

    1Session超時:Session在指定時間內(nèi)失效,例如30分鐘,若在30分鐘內(nèi)沒有操作,則Session會失效,例如在web.xml中進行了如下設(shè)置:

    <session-config>
            <session-timeout>30</session-timeout> //單位:分鐘
        </session-config>

    2使用session.invalidate()明確的去掉Session

    3.1.4Cookie相關(guān)的HTTP擴展頭

    1Cookie客戶端將服務(wù)器設(shè)置的Cookie返回到服務(wù)器

    2Set-Cookie服務(wù)器向客戶端設(shè)置Cookie

    3Cookie2 (RFC2965)):客戶端指示服務(wù)器支持Cookie的版本

    4Set-Cookie2 (RFC2965)服務(wù)器向客戶端設(shè)置Cookie

    3.1.5Cookie的流程

    服務(wù)器在響應(yīng)消息中用Set-Cookie頭將Cookie的內(nèi)容回送給客戶端,客戶端在新的請求中將相同的內(nèi)容攜帶在Cookie頭中發(fā)送給服務(wù)器。從而實現(xiàn)會話的保持。

    流程如下圖所示:

    3.2 緩存的實現(xiàn)原理

    3.2.1什么是Web緩存

    WEB緩存(cache)位于Web服務(wù)器和客戶端之間。

    緩存會根據(jù)請求保存輸出內(nèi)容的副本,例如html頁面,圖片,文件,當下一個請求來到的時候:如果是相同的URL,緩存直接使用副本響應(yīng)訪問請求,而不是向源服務(wù)器再次發(fā)送請求。

    HTTP協(xié)議定義了相關(guān)的消息頭來使WEB緩存盡可能好的工作。

    3.2.2緩存的優(yōu)點

    q      減少相應(yīng)延遲:因為請求從緩存服務(wù)器(離客戶端更近)而不是源服務(wù)器被相應(yīng),這個過程耗時更少,讓web服務(wù)器看上去相應(yīng)更快。

    q      減少網(wǎng)絡(luò)帶寬消耗:當副本被重用時會減低客戶端的帶寬消耗;客戶可以節(jié)省帶寬費用,控制帶寬的需求的增長并更易于管理。

    3.2.3與緩存相關(guān)的HTTP擴展消息頭

    q      Expires:指示響應(yīng)內(nèi)容過期的時間,格林威治時間GMT

    q      Cache-Control:更細致的控制緩存的內(nèi)容

    q      Last-Modified:響應(yīng)中資源最后一次修改的時間

    q      ETag:響應(yīng)中資源的校驗值,在服務(wù)器上某個時段是唯一標識的。

    q      Date:服務(wù)器的時間

    q      If-Modified-Since:客戶端存取的該資源最后一次修改的時間,同Last-Modified

    q      If-None-Match:客戶端存取的該資源的檢驗值,同ETag

    3.2.4客戶端緩存生效的常見流程

    服務(wù)器收到請求時,會在200OK中回送該資源的Last-ModifiedETag頭,客戶端將該資源保存在cache中,并記錄這兩個屬性。當客戶端需要發(fā)送相同的請求時,會在請求中攜帶If-Modified-SinceIf-None-Match兩個頭。兩個頭的值分別是響應(yīng)中Last-ModifiedETag頭的值。服務(wù)器通過這兩個頭判斷本地資源未發(fā)生變化,客戶端不需要重新下載,返回304響應(yīng)。常見流程如下圖所示:

    3.2.5 Web緩存機制

    HTTP/1.1中緩存的目的是為了在很多情況下減少發(fā)送請求,同時在許多情況下可以不需要發(fā)送完整響應(yīng)。前者減少了網(wǎng)絡(luò)回路的數(shù)量;HTTP利用一個“過期(expiration)”機制來為此目的。后者減少了網(wǎng)絡(luò)應(yīng)用的帶寬;HTTP用“驗證(validation)”機制來為此目的。

    HTTP定義了3種緩存機制:

    1Freshness:允許一個回應(yīng)消息可以在源服務(wù)器不被重新檢查,并且可以由服務(wù)器和客戶端來控制。例如,Expires回應(yīng)頭給了一個文檔不可用的時間。Cache-Control中的max-age標識指明了緩存的最長時間;

    2Validation:用來檢查以一個緩存的回應(yīng)是否仍然可用。例如,如果一個回應(yīng)有一個Last-Modified回應(yīng)頭,緩存能夠使用If-Modified-Since來判斷是否已改變,以便判斷根據(jù)情況發(fā)送請求;

    3Invalidation 在另一個請求通過緩存的時候,常常有一個副作用。例如,如果一個URL關(guān)聯(lián)到一個緩存回應(yīng),但是其后跟著POSTPUTDELETE的請求的話,緩存就會過期。

    3.3 斷點續(xù)傳和多線程下載的實現(xiàn)原理

    q      HTTP協(xié)議的GET方法,支持只請求某個資源的某一部分;

    q      206 Partial Content 部分內(nèi)容響應(yīng);

    q      Range 請求的資源范圍;

    q      Content-Range 響應(yīng)的資源范圍;

    q      在連接斷開重連時,客戶端只請求該資源未下載的部分,而不是重新請求整個資源,來實現(xiàn)斷點續(xù)傳。

    分塊請求資源實例:

    Eg1Range: bytes=306302- :請求這個資源從306302個字節(jié)到末尾的部分;

    Eg2Content-Range: bytes 306302-604047/604048:響應(yīng)中指示攜帶的是該資源的第306302-604047的字節(jié),該資源共604048個字節(jié);

    客戶端通過并發(fā)的請求相同資源的不同片段,來實現(xiàn)對某個資源的并發(fā)分塊下載。從而達到快速下載的目的。目前流行的FlashGet和迅雷基本都是這個原理。

    多線程下載的原理:

    q      下載工具開啟多個發(fā)出HTTP請求的線程;

    q      每個http請求只請求資源文件的一部分:Content-Range: bytes 20000-40000/47000

    q      合并每個線程下載的文件。

    3.4 https通信過程

    3.4.1什么是https

    HTTPS(全稱:Hypertext Transfer Protocol over Secure Socket Layer),是以安全為目標的HTTP通道,簡單講是HTTP的安全版。即HTTP下加入SSL層,HTTPS的安全基礎(chǔ)是SSL,因此加密的詳細內(nèi)容請看SSL

    見下圖:
       

    https所用的端口號是443

    3.4.2 https的實現(xiàn)原理

    有兩種基本的加解密算法類型:

    1對稱加密:密鑰只有一個,加密解密為同一個密碼,且加解密速度快,典型的對稱加密算法有DESAES等;

    2非對稱加密:密鑰成對出現(xiàn)(且根據(jù)公鑰無法推知私鑰,根據(jù)私鑰也無法推知公鑰),加密解密使用不同密鑰(公鑰加密需要私鑰解密,私鑰加密需要公鑰解密),相對對稱加密速度較慢,典型的非對稱加密算法有RSADSA等。

    下面看一下https的通信過程:
      

    https通信的優(yōu)點:

    1)客戶端產(chǎn)生的密鑰只有客戶端和服務(wù)器端能得到;

    2)加密的數(shù)據(jù)只有客戶端和服務(wù)器端才能得到明文;

    3)客戶端到服務(wù)端的通信是安全的。

    3.5 http代理

    3.5.1 http代理服務(wù)器

    代理服務(wù)器英文全稱是Proxy Server,其功能就是代理網(wǎng)絡(luò)用戶去取得網(wǎng)絡(luò)信息。形象的說:它是網(wǎng)絡(luò)信息的中轉(zhuǎn)站。

    代理服務(wù)器是介于瀏覽器和Web服務(wù)器之間的一臺服務(wù)器,有了它之后,瀏覽器不是直接到Web服務(wù)器去取回網(wǎng)頁而是向代理服務(wù)器發(fā)出請求,Request信號會先送到代理服務(wù)器,由代理服務(wù)器來取回瀏覽器所需要的信息并傳送給你的瀏覽器。

    而且,大部分代理服務(wù)器都具有緩沖的功能,就好象一個大的Cache,它有很大的存儲空間,它不斷將新取得數(shù)據(jù)儲存到它本機的存儲器上,如果瀏覽器所請求的數(shù)據(jù)在它本機的存儲器上已經(jīng)存在而且是最新的,那么它就不重新從Web服務(wù)器取數(shù)據(jù),而直接將存儲器上的數(shù)據(jù)傳送給用戶的瀏覽器,這樣就能顯著提高瀏覽速度和效率。

    更重要的是:Proxy Server(代理服務(wù)器)Internet鏈路級網(wǎng)關(guān)所提供的一種重要的安全功能,它的工作主要在開放系統(tǒng)互聯(lián)(OSI)模型的對話層。

    3.5.2 http代理服務(wù)器的主要功能

    主要功能如下:

    1)突破自身IP訪問限制,訪問國外站點。如:教育網(wǎng)、169網(wǎng)等網(wǎng)絡(luò)用戶可以通過代理訪問國外網(wǎng)站;

    2)訪問一些單位或團體內(nèi)部資源,如某大學FTP(前提是該代理地址在該資源的允許訪問范圍之內(nèi)),使用教育網(wǎng)內(nèi)地址段免費代理服務(wù)器,就可以用于對教育 網(wǎng)開放的各類FTP下載上傳,以及各類資料查詢共享等服務(wù);

    3)突破中國電信的IP封鎖:中國電信用戶有很多網(wǎng)站是被限制訪問的,這種限制是人為的,不同Serve對地址的封鎖是不同的。所以不能訪問時可以換一個國 外的代理服務(wù)器試試;

    4)提高訪問速度:通常代理服務(wù)器都設(shè)置一個較大的硬盤緩沖區(qū),當有外界的信息通過時,同時也將其保存到緩沖區(qū)中,當其他用戶再訪問相同的信息時, 則直接由緩沖區(qū)中取出信息,傳給用戶,以提高訪問速度;

    5)隱藏真實IP:上網(wǎng)者也可以通過這種方法隱藏自己的IP,免受攻擊。

    3.5.3 http代理圖示

    http代理的圖示見下圖:
      

    對于客戶端瀏覽器而言,http代理服務(wù)器相當于服務(wù)器。

    而對于Web服務(wù)器而言,http代理服務(wù)器又擔當了客戶端的角色。

    3.6 虛擬主機的實現(xiàn)

    3.6.1什么是虛擬主機

    虛擬主機:是在網(wǎng)絡(luò)服務(wù)器上劃分出一定的磁盤空間供用戶放置站點、應(yīng)用組件等,提供必要的站點功能與數(shù)據(jù)存放、傳輸功能。  

    所謂虛擬主機,也叫網(wǎng)站空間就是把一臺運行在互聯(lián)網(wǎng)上的服務(wù)器劃分成多個虛擬的服務(wù)器,每一個虛擬主機都具有獨立的域名和完整的Internet服務(wù)器(支持WWWFTPE-mail等)功能。一臺服務(wù)器上的不同虛擬主機是各自獨立的,并由用戶自行管理。但一臺服務(wù)器主機只能夠支持一定數(shù)量的虛擬主機,當超過這個數(shù)量時,用戶將會感到性能急劇下降。

    3.6.2虛擬主機的實現(xiàn)原理

    虛擬主機是用同一個WEB服務(wù)器,為不同域名網(wǎng)站提供服務(wù)的技術(shù)。ApacheTomcat等均可通過配置實現(xiàn)這個功能。

    相關(guān)的HTTP消息頭:Host

    例如:Host: www.baidu.com

    客戶端發(fā)送HTTP請求的時候,會攜帶Host頭,Host頭記錄的是客戶端輸入的域名。這樣服務(wù)器可以根據(jù)Host頭確認客戶要訪問的是哪一個域名。

    附錄:參考資料

    《理解CookieSession機制》:

    http://sumongh.javaeye.com/blog/82498

    《淺析HTTP協(xié)議》:

    http://203.208.39.132/search?q=cache:CdXly_88gjIJ:www.cnblogs.com/gpcuster/archive/2009/05/25/1488749.html+http%E5%8D%8F%E8%AE%AE+web%E7%BC%93%E5%AD%98&cd=27&hl=zh-CN&ct=clnk&gl=cn&st_usg=ALhdy2-vzOcP8XTG1h7lcRr2GJrkTbH2Cg

    http代理_百度百科》:

    http://baike.baidu.com/view/1159398.htm

    《虛擬主機_百度百科》:

    http://baike.baidu.com/view/7383.htm

    https_百度百科》:

    http://baike.baidu.com/view/14121.htm

    posted on 2009-12-03 15:22 阿蜜果 閱讀(6359) 評論(11)  編輯  收藏 所屬分類: Web協(xié)議


    FeedBack:
    # re: http協(xié)議學習和總結(jié)系列——深入了解篇
    2009-12-03 15:24 | 張曉楓
    博主你好,博文字體的顯示在Firefox下有點亂。  回復(fù)  更多評論
      
    # re: http協(xié)議學習和總結(jié)系列——深入了解篇
    2009-12-03 15:31 | 阿蜜果
    @張曉楓
    我從doc上直接拷貝下來的,等我寫完最后一篇提供一個doc的下載吧。嘻嘻  回復(fù)  更多評論
      
    # re: http協(xié)議學習和總結(jié)系列——深入了解篇
    2009-12-03 21:46 | fantasybei@gmail.com
    - -!,mm留個手機號吧,哈哈  回復(fù)  更多評論
      
    # re: http協(xié)議學習和總結(jié)系列——深入了解篇
    2009-12-06 18:38 | session
    session是一種會話狀態(tài)的規(guī)范,有很多種實現(xiàn)方式。
    常用就是我們通常所說的持久化到應(yīng)用服務(wù)器的內(nèi)存里。
    為了和客戶端關(guān)聯(lián)起來,還需要cookie或url輔助。
    其實還有持久化到cookie,持久化到高速緩存,持久化到數(shù)據(jù)庫
    等多種實現(xiàn)方式。
      回復(fù)  更多評論
      
    # re: http協(xié)議學習和總結(jié)系列——深入了解篇
    2009-12-10 16:44 | 鹿
    很好,受益匪淺  回復(fù)  更多評論
      
    # re: http協(xié)議學習和總結(jié)系列——深入了解篇
    2010-03-25 21:09 | 林風
    樓主大才  回復(fù)  更多評論
      
    # re: http協(xié)議學習和總結(jié)系列——深入了解篇[未登錄]
    2010-03-29 16:19 | 小魚
    很好!!!!!!!!  回復(fù)  更多評論
      
    # re: http協(xié)議學習和總結(jié)系列——深入了解篇
    2010-06-08 17:01 | 風騷的小野豬
    嗯,對請求這個概念又清晰了不少...  回復(fù)  更多評論
      
    # re: http協(xié)議學習和總結(jié)系列——深入了解篇
    2010-08-25 17:26 | waddy
    寫的很棒,學習了  回復(fù)  更多評論
      
    # re: http協(xié)議學習和總結(jié)系列——深入了解篇
    2010-12-27 16:14 | fates
    寫的太好了,受益了,非常感謝O(∩_∩)O哈哈~  回復(fù)  更多評論
      
    # re: 蜜果私塾:http協(xié)議學習和總結(jié)系列——深入了解篇
    2012-09-24 10:06 | ikillmeba
    有點意思啊  回復(fù)  更多評論
      
    <2009年12月>
    293012345
    6789101112
    13141516171819
    20212223242526
    272829303112
    3456789

          生活將我們磨圓,是為了讓我們滾得更遠——“圓”來如此。
          我的作品:
          玩轉(zhuǎn)Axure RP  (2015年12月出版)
          

          Power Designer系統(tǒng)分析與建模實戰(zhàn)  (2015年7月出版)
          
         Struts2+Hibernate3+Spring2   (2010年5月出版)
         

    留言簿(263)

    隨筆分類

    隨筆檔案

    文章分類

    相冊

    關(guān)注blog

    積分與排名

    • 積分 - 2294296
    • 排名 - 3

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 最近中文字幕大全中文字幕免费 | 四虎1515hm免费国产| 国产做国产爱免费视频| 亚洲国产精品成人综合色在线| 亚洲av无码av制服另类专区| 免费中文字幕一级毛片| 91视频国产免费| 久久国产精品成人片免费| 国产JIZZ中国JIZZ免费看| 亚洲成熟丰满熟妇高潮XXXXX| 亚洲精品美女久久久久| 久久亚洲精品无码| 亚洲人成无码网站| 亚洲精品人成无码中文毛片| 精品国产免费观看一区| 久久精品网站免费观看| 国产男女爽爽爽爽爽免费视频| 国产白丝无码免费视频| 精品国产污污免费网站| 国产午夜无码片免费| 中文字幕在线成人免费看| eeuss影院www天堂免费| 九一在线完整视频免费观看| 色妞www精品视频免费看| 日韩色视频一区二区三区亚洲| 亚洲熟女www一区二区三区| 亚洲高清一区二区三区| 最新亚洲精品国偷自产在线| 亚洲综合中文字幕无线码| 亚洲av无码不卡久久| 亚洲国产乱码最新视频| 亚洲aⅴ无码专区在线观看| jizzjizz亚洲日本少妇| 深夜a级毛片免费无码| 一本久久A久久免费精品不卡| 有码人妻在线免费看片| 成人自慰女黄网站免费大全| 日本免费中文视频| 久热中文字幕在线精品免费| 亚洲免费福利在线视频| 免费看片免费播放|