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

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

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

    秋風(fēng)的蕭瑟 又見(jiàn)湖邊木葉飛

    歡迎來(lái)到梁良 | LonBlog,這里記錄下了我生活點(diǎn)點(diǎn)滴滴。

    [ZT]http協(xié)議學(xué)習(xí)和總結(jié)系列——深入了解篇

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

    3.1 CookieSession

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

    Session可以用Cookie來(lái)實(shí)現(xiàn),也可以用URL回寫(xiě)的機(jī)制來(lái)實(shí)現(xiàn)。用Cookie來(lái)實(shí)現(xiàn)的Session可以認(rèn)為是對(duì)Cookie更高級(jí)的應(yīng)用。

    3.1.1兩者比較

    CookieSession有以下明顯的不同點(diǎn):

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

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

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

    4)就安全性來(lái)說(shuō):當(dāng)你訪問(wèn)一個(gè)使用session 的站點(diǎn),同時(shí)在自己機(jī)子上建立一個(gè)cookie,建議在服務(wù)器端的SESSION機(jī)制更安全些.因?yàn)樗粫?huì)任意讀取客戶存儲(chǔ)的信息。

    3.1.2 Session機(jī)制

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

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

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

    3.1.6.1  使用Cookie來(lái)實(shí)現(xiàn)

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

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

    流程如下圖所示:
       

    3.1.6.2  使用URL回顯來(lái)實(shí)現(xiàn)

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

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

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

    3.1.3J2EE項(xiàng)目中Session失效的幾種情況

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

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

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

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

    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)容回送給客戶端,客戶端在新的請(qǐng)求中將相同的內(nèi)容攜帶在Cookie頭中發(fā)送給服務(wù)器。從而實(shí)現(xiàn)會(huì)話的保持。

    流程如下圖所示:

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

    3.2.1什么是Web緩存

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

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

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

    3.2.2緩存的優(yōu)點(diǎn)

    q      減少相應(yīng)延遲:因?yàn)檎?qǐng)求從緩存服務(wù)器(離客戶端更近)而不是源服務(wù)器被相應(yīng),這個(gè)過(guò)程耗時(shí)更少,讓web服務(wù)器看上去相應(yīng)更快。

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

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

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

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

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

    q      ETag:響應(yīng)中資源的校驗(yàn)值,在服務(wù)器上某個(gè)時(shí)段是唯一標(biāo)識(shí)的。

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

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

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

    3.2.4客戶端緩存生效的常見(jiàn)流程

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

    3.2.5 Web緩存機(jī)制

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

    HTTP定義了3種緩存機(jī)制:

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

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

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

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

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

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

    q      Range 請(qǐng)求的資源范圍;

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

    q      在連接斷開(kāi)重連時(shí),客戶端只請(qǐng)求該資源未下載的部分,而不是重新請(qǐng)求整個(gè)資源,來(lái)實(shí)現(xiàn)斷點(diǎn)續(xù)傳。

    分塊請(qǐng)求資源實(shí)例:

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

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

    客戶端通過(guò)并發(fā)的請(qǐng)求相同資源的不同片段,來(lái)實(shí)現(xiàn)對(duì)某個(gè)資源的并發(fā)分塊下載。從而達(dá)到快速下載的目的。目前流行的FlashGet和迅雷基本都是這個(gè)原理。

    多線程下載的原理:

    q      下載工具開(kāi)啟多個(gè)發(fā)出HTTP請(qǐng)求的線程;

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

    q      合并每個(gè)線程下載的文件。

    3.4 https通信過(guò)程

    3.4.1什么是https

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

    見(jiàn)下圖:
       

    https所用的端口號(hào)是443

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

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

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

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

    下面看一下https的通信過(guò)程:
      

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

    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ò)信息。形象的說(shuō):它是網(wǎng)絡(luò)信息的中轉(zhuǎn)站。

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

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

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

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

    主要功能如下:

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

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

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

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

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

    3.5.3 http代理圖示

    http代理的圖示見(jiàn)下圖:
      

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

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

    3.6 虛擬主機(jī)的實(shí)現(xiàn)

    3.6.1什么是虛擬主機(jī)

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

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

    3.6.2虛擬主機(jī)的實(shí)現(xiàn)原理

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

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

    例如:Host: www.baidu.com

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

    附錄:參考資料

    《理解CookieSession機(jī)制》:

    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

    《虛擬主機(jī)_百度百科》:

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

    https_百度百科》:http://baike.baidu.com/view/14121.htm

    posted on 2010-06-09 11:25 梁良 閱讀(394) 評(píng)論(0)  編輯  收藏 所屬分類: HTML

    <2010年6月>
    303112345
    6789101112
    13141516171819
    20212223242526
    27282930123
    45678910

    導(dǎo)航

    公告

        歡迎光臨

    常用鏈接

    隨筆分類

    隨筆檔案

    相冊(cè)

    .我的網(wǎng)站.

    友情博客

    開(kāi)源社區(qū)

    科技博客

    資料網(wǎng)站

    最新隨筆

    搜索

    最新評(píng)論

    閱讀排行榜

    Powered by:
    LonLeung
    Copyright © 梁良

    本頁(yè)生成時(shí)間:毫秒

    主站蜘蛛池模板: 国产免费福利体检区久久| 亚洲日本久久一区二区va| 国产午夜亚洲精品不卡| 国产一卡2卡3卡4卡无卡免费视频| 亚洲一区二区三区首页| 中文字幕免费在线| 亚洲网址在线观看| 69视频在线是免费观看| 亚洲成电影在线观看青青| 亚洲免费网站观看视频| 中文字幕精品三区无码亚洲| 在线精品一卡乱码免费| 亚洲国产中文在线视频| 国产成人免费高清激情视频| 亚洲熟妇无码av另类vr影视| 性一交一乱一视频免费看| 亚洲av色香蕉一区二区三区| 亚洲成AV人在线观看网址| 一区在线免费观看| 在线观看亚洲av每日更新| 久9久9精品免费观看| 亚洲成aⅴ人片在线影院八| 毛片a级毛片免费观看品善网 | 亚洲精品成人片在线观看精品字幕 | 亚洲一区二区三区乱码在线欧洲| 四虎免费在线观看| 日本免费精品一区二区三区| 精品亚洲一区二区| 成人免费福利视频| 羞羞视频免费观看| 亚洲成av人在线视| 美女被cao免费看在线看网站| 亚洲av无码成人精品区一本二本| 亚洲精品高清在线| **真实毛片免费观看| 国产精品亚洲专区一区| 久久亚洲精品AB无码播放| 拍拍拍又黄又爽无挡视频免费| 人人爽人人爽人人片A免费 | 亚洲伊人成无码综合网| 1000部拍拍拍18免费网站|