計(jì)算機(jī)網(wǎng)絡(luò)學(xué)習(xí)(三)----HTTP、SSL椿肩、HTTPS

HTTP協(xié)議簡(jiǎn)介:

HTTP是超文本傳輸協(xié)議瞻颂,是一種無(wú)狀態(tài)的協(xié)議,是常見(jiàn)的一種應(yīng)用層協(xié)議郑象。HTTP是一個(gè)通信規(guī)則贡这,規(guī)定了客戶端發(fā)送給服務(wù)器的內(nèi)容格式,也規(guī)定了服務(wù)器發(fā)送給客戶端的內(nèi)容格式厂榛。

HTTP請(qǐng)求信息:HTTP請(qǐng)求頭中可以看到當(dāng)前請(qǐng)求支持的語(yǔ)言盖矫,壓縮格式丽惭,編碼格式以及何種類(lèi)型的返回文件,Connection以及Cookie辈双,Content-Type等信息责掏。

HTTP返回信息:HTTP返回信息中包括響應(yīng)協(xié)議,HTTP Code以及Content-Type湃望,時(shí)間和Cookie等信息拷橘。

瀏覽網(wǎng)頁(yè)是HTTP的主要應(yīng)用,但是這并不代表HTTP就只能應(yīng)用于網(wǎng)頁(yè)的瀏覽喜爷。HTTP是一種協(xié)議,只要通信的雙方都遵守這個(gè)協(xié)議萄唇,HTTP就能有用武之地檩帐。比如咱們常用的QQ,迅雷這些軟件另萤,都會(huì)使用HTTP協(xié)議(還包括其他的協(xié)議)湃密。

HTTP的特點(diǎn)

1、簡(jiǎn)單快速:客戶向服務(wù)器請(qǐng)求服務(wù)時(shí)四敞,只需傳送請(qǐng)求方法路徑泛源。由于HTTP協(xié)議簡(jiǎn)單,使得HTTP服務(wù)器的程序規(guī)模小忿危,因而通信速度很快达箍。

2、靈活:HTTP允許傳輸任意類(lèi)型的數(shù)據(jù)對(duì)象铺厨。正在傳輸?shù)念?lèi)型由Content-Type加以標(biāo)記缎玫。

3、HTTP 0.9和1.0使用非持續(xù)連接:限制每次連接只處理一個(gè)請(qǐng)求解滓,服務(wù)器處理完客戶的請(qǐng)求赃磨,并收到客戶的應(yīng)答后,即斷開(kāi)連接洼裤。HTTP 1.1使用持續(xù)連接:不必為每個(gè)web對(duì)象創(chuàng)建一個(gè)新的連接邻辉,一個(gè)連接可以傳送多個(gè)對(duì)象,采用這種方式可以節(jié)省傳輸時(shí)間腮鞍。

4值骇、無(wú)狀態(tài):HTTP協(xié)議是無(wú)狀態(tài)協(xié)議無(wú)狀態(tài)是指協(xié)議對(duì)于事務(wù)處理沒(méi)有記憶能力移国。缺少狀態(tài)意味著如果后續(xù)處理需要前面的信息雷客,則它必須重傳,這樣可能導(dǎo)致每次連接傳送的數(shù)據(jù)量增大桥狡。另一方面搅裙,在服務(wù)器不需要先前信息時(shí)它的應(yīng)答就較快皱卓。

5、支持B/S及C/S模式部逮。

HTTP工作流程

一次HTTP操作稱為一個(gè)事務(wù)娜汁,其工作過(guò)程可分為四步:

1.首先客戶機(jī)與服務(wù)器需要建立連接。只要單擊某個(gè)超級(jí)鏈接兄朋,HTTP的工作開(kāi)始掐禁。

2.建立連接后,客戶機(jī)發(fā)送一個(gè)請(qǐng)求給服務(wù)器颅和,請(qǐng)求方式的格式為:統(tǒng)一資源標(biāo)識(shí)符(URL)傅事、協(xié)議版本號(hào),后邊是MIME信息包括請(qǐng)求修飾符峡扩、客戶機(jī)信息和可能的內(nèi)容蹭越。

3.服務(wù)器接到請(qǐng)求后,給予相應(yīng)的響應(yīng)信息教届,其格式為一個(gè)狀態(tài)行响鹃,包括信息的協(xié)議版本號(hào)、一個(gè)成功或錯(cuò)誤的代碼案训,后邊是MIME信息包括服務(wù)器信息买置、實(shí)體信息和可能的內(nèi)容。

4.客戶端接收服務(wù)器所返回的信息通過(guò)瀏覽器顯示在用戶的顯示屏上强霎,然后客戶機(jī)與服務(wù)器斷開(kāi)連接忿项。

如果在以上過(guò)程中的某一步出現(xiàn)錯(cuò)誤,那么產(chǎn)生錯(cuò)誤的信息將返回到客戶端城舞,有顯示屏輸出倦卖。對(duì)于用戶來(lái)說(shuō),這些過(guò)程是由HTTP自己完成的椿争,用戶只要用鼠標(biāo)點(diǎn)擊怕膛,等待信息顯示就可以了。

HTTP之請(qǐng)求消息Request

客戶端發(fā)送一個(gè)HTTP請(qǐng)求到服務(wù)器的請(qǐng)求消息包括以下格式:

?請(qǐng)求行秦踪、請(qǐng)求頭部褐捻、空行請(qǐng)求數(shù)據(jù)四個(gè)部分組成。

(1)Get請(qǐng)求例子

第一部分:請(qǐng)求行椅邓,用來(lái)說(shuō)明請(qǐng)求類(lèi)型,要訪問(wèn)的資源以及所使用的HTTP版本.

GET說(shuō)明請(qǐng)求類(lèi)型為GET,[/562f25980001b1b106000338.jpg]為要訪問(wèn)的資源柠逞,該行的最后一部分說(shuō)明使用的是HTTP1.1版本。

第二部分:請(qǐng)求頭部景馁,緊接著請(qǐng)求行(即第一行)之后的部分板壮,用來(lái)說(shuō)明服務(wù)器要使用的附加信息

從第二行起為請(qǐng)求頭部,HOST將指出請(qǐng)求的目的地.User-Agent,服務(wù)器端和客戶端腳本都能訪問(wèn)它,它是瀏覽器類(lèi)型檢測(cè)邏輯的重要基礎(chǔ).該信息由你的瀏覽器來(lái)定義,并且在每個(gè)請(qǐng)求中自動(dòng)發(fā)送等等

第三部分:空行合住,請(qǐng)求頭部后面的空行是必須的

即使第四部分的請(qǐng)求數(shù)據(jù)為空绰精,也必須有空行撒璧。

第四部分:請(qǐng)求數(shù)據(jù)也叫主體,可以添加任意的其他數(shù)據(jù)笨使。

這個(gè)例子的請(qǐng)求數(shù)據(jù)為空卿樱。

POST請(qǐng)求例子

第一部分:請(qǐng)求行,第一行明了是post請(qǐng)求硫椰,以及http1.1版本繁调。

第二部分:請(qǐng)求頭部,第二行至第六行靶草。

第三部分:空行蹄胰,第七行的空行。

第四部分:請(qǐng)求數(shù)據(jù)奕翔,第八行裕寨。


?HTTP之響應(yīng)消息Response

一般情況下,服務(wù)器接收并處理客戶端發(fā)過(guò)來(lái)的請(qǐng)求后會(huì)返回一個(gè)HTTP的響應(yīng)消息糠悯。

HTTP響應(yīng)也由四個(gè)部分組成,分別是:狀態(tài)行妻往、消息報(bào)頭互艾、空行響應(yīng)正文

第一部分:狀態(tài)行讯泣,由HTTP協(xié)議版本號(hào)纫普, 狀態(tài)碼, 狀態(tài)消息 三部分組成好渠。

第一行為狀態(tài)行昨稼,(HTTP/1.1)表明HTTP版本為1.1版本,狀態(tài)碼為200拳锚,狀態(tài)消息為(ok)

第二部分:消息報(bào)頭假栓,用來(lái)說(shuō)明客戶端要使用的一些附加信息

第二行和第三行和第四行為消息報(bào)頭,

Date:生成響應(yīng)的日期和時(shí)間霍掺;Content-Type:指定了MIME類(lèi)型的HTML(text/html),編碼類(lèi)型是ISO-8859-1

第三部分:空行匾荆,消息報(bào)頭后面的空行是必須的

第四部分:響應(yīng)正文,服務(wù)器返回給客戶端的文本信息杆烁。

空行后面的html部分為響應(yīng)正文牙丽。

?HTTP之狀態(tài)碼 ? ? ? ? ? ? ? ? ??

狀態(tài)代碼有三位數(shù)字組成,第一個(gè)數(shù)字定義了響應(yīng)的類(lèi)別兔魂,共分五種類(lèi)別:

1xx:指示信息--表示請(qǐng)求已接收烤芦,繼續(xù)處理

2xx:成功--表示請(qǐng)求已被成功接收、理解析校、接受

3xx:重定向--要完成請(qǐng)求必須進(jìn)行更進(jìn)一步的操作

4xx:客戶端錯(cuò)誤--請(qǐng)求有語(yǔ)法錯(cuò)誤或請(qǐng)求無(wú)法實(shí)現(xiàn)

5xx:服務(wù)器端錯(cuò)誤--服務(wù)器未能實(shí)現(xiàn)合法的請(qǐng)求

常見(jiàn)狀態(tài)碼:

200(成功)

302 (重定向):請(qǐng)求重定向到指定網(wǎng)頁(yè)

304(未修改):自從上次請(qǐng)求后构罗,請(qǐng)求的網(wǎng)頁(yè)未修改過(guò)铜涉。服務(wù)器返回此響應(yīng)時(shí),不會(huì)返回網(wǎng)頁(yè)內(nèi)容

401(未授權(quán)):請(qǐng)求要求身份驗(yàn)證

403(禁止):服務(wù)器拒絕請(qǐng)求(比如死循環(huán)了绰播,一直訪問(wèn))

404(未找到):服務(wù)器找不到請(qǐng)求的網(wǎng)頁(yè)

405 (方法禁用):Post請(qǐng)求當(dāng)成了Get請(qǐng)求直接訪問(wèn)

500 (服務(wù)器內(nèi)部錯(cuò)誤):有bug導(dǎo)致程序嗝屁了

502 (錯(cuò)誤網(wǎng)關(guān)):服務(wù)器從上游接到了無(wú)效響應(yīng)

504 ( 網(wǎng)關(guān)超時(shí)):nginx請(qǐng)求超時(shí)骄噪,請(qǐng)求一直沒(méi)有返回

HTTP請(qǐng)求方法 ? ? ? ? ? ? ? ? ?

根據(jù)HTTP標(biāo)準(zhǔn),HTTP請(qǐng)求可以使用多種請(qǐng)求方法蠢箩。

HTTP1.0定義了三種請(qǐng)求方法:GET,POSTHEAD方法链蕊。

HTTP1.1新增了五種請(qǐng)求方法:OPTIONS,PUT,DELETE,TRACE和CONNECT 方法。

HTTP工作原理 ? ? ? ? ? ? ? ? ? ?

HTTP協(xié)議定義Web客戶端如何從Web服務(wù)器請(qǐng)求Web頁(yè)面谬泌,以及服務(wù)器如何把Web頁(yè)面?zhèn)魉徒o客戶端滔韵。HTTP協(xié)議采用了請(qǐng)求/響應(yīng)模型≌剖担客戶端向服務(wù)器發(fā)送一個(gè)請(qǐng)求報(bào)文陪蜻,請(qǐng)求報(bào)文包含請(qǐng)求的方法、URL贱鼻、協(xié)議版本宴卖、請(qǐng)求頭部和請(qǐng)求數(shù)據(jù)。服務(wù)器以一個(gè)狀態(tài)行作為響應(yīng)邻悬,響應(yīng)的內(nèi)容包括協(xié)議的版本症昏、成功或者錯(cuò)誤代碼、服務(wù)器信息父丰、響應(yīng)頭部和響應(yīng)數(shù)據(jù)肝谭。

以下是 HTTP 請(qǐng)求/響應(yīng)的步驟:

1、客戶端連接到Web服務(wù)器

一個(gè)HTTP客戶端蛾扇,通常是瀏覽器攘烛,與Web服務(wù)器的HTTP端口(默認(rèn)為80)建立一個(gè)TCP套接字連接。例如镀首,http://www.oakcms.cn坟漱。

2、發(fā)送HTTP請(qǐng)求

通過(guò)TCP套接字更哄,客戶端向Web服務(wù)器發(fā)送一個(gè)文本的請(qǐng)求報(bào)文靖秩,一個(gè)請(qǐng)求報(bào)文由請(qǐng)求行、請(qǐng)求頭部竖瘾、空行和請(qǐng)求數(shù)據(jù)4部分組成沟突。

3、服務(wù)器接受請(qǐng)求并返回HTTP響應(yīng)

Web服務(wù)器解析請(qǐng)求捕传,定位請(qǐng)求資源惠拭。服務(wù)器將資源復(fù)本寫(xiě)到TCP套接字,由客戶端讀取。一個(gè)響應(yīng)由狀態(tài)行职辅、響應(yīng)頭部棒呛、空行和響應(yīng)數(shù)據(jù)4部分組成。

4域携、釋放連接TCP連接

若connection 模式為close簇秒,則服務(wù)器主動(dòng)關(guān)閉TCP連接,客戶端被動(dòng)關(guān)閉連接秀鞭,釋放TCP連接;若connection 模式為keepalive趋观,則該連接會(huì)保持一段時(shí)間,在該時(shí)間內(nèi)可以繼續(xù)接收請(qǐng)求;

5锋边、客戶端瀏覽器解析HTML內(nèi)容

客戶端瀏覽器首先解析狀態(tài)行皱坛,查看表明請(qǐng)求是否成功的狀態(tài)代碼。然后解析每一個(gè)響應(yīng)頭豆巨,響應(yīng)頭告知以下為若干字節(jié)的HTML文檔和文檔的字符集剩辟。客戶端瀏覽器讀取響應(yīng)數(shù)據(jù)HTML往扔,根據(jù)HTML的語(yǔ)法對(duì)其進(jìn)行格式化贩猎,并在瀏覽器窗口中顯示。

?GET和POST的區(qū)別 ? ? ?

? ? ?1萍膛、GET提交的數(shù)據(jù)會(huì)放在URL之后吭服,以?分割URL和傳輸數(shù)據(jù),參數(shù)之間以&相連卦羡,如EditPosts.aspx?name=test1&id=123456. POST方法是把提交的數(shù)據(jù)放在HTTP包的Body中.

? ? ?2噪馏、GET提交的數(shù)據(jù)大小有限制(因?yàn)闉g覽器對(duì)URL的長(zhǎng)度有限制),而POST方法提交的數(shù)據(jù)沒(méi)有限制.

? ? ?3、GET方式需要使用Request.QueryString來(lái)取得變量的值惠窄,而POST方式通過(guò)Request.Form來(lái)獲取變量的值鄙煤。

? ? ?4、GET方式提交數(shù)據(jù)匣吊,會(huì)帶來(lái)安全問(wèn)題,比如一個(gè)登錄頁(yè)面,通過(guò)GET方式提交數(shù)據(jù)時(shí)吸祟,用戶名和密碼將出現(xiàn)在URL上,如果頁(yè)面可以被緩存或者其他人可以訪問(wèn)這臺(tái)機(jī)器桃移,就可以從歷史記錄獲得該用戶的賬號(hào)和密碼.

SSL協(xié)議:

HTTPS協(xié)議在HTTP的基礎(chǔ)上加入了SSL(安全套接字層)協(xié)議屋匕,SSL逐漸演變?yōu)榱薚LS協(xié)議,但是業(yè)界習(xí)慣仍然稱其為SSL協(xié)議借杰。

SSL協(xié)議在傳輸控制層的基礎(chǔ)上建立了安全的連接过吻,它作為一種通用可靠的安全解決方案,可與多種應(yīng)用層協(xié)議結(jié)合使用,實(shí)現(xiàn)應(yīng)用數(shù)據(jù)的安全傳輸纤虽。SSL協(xié)議分為記錄協(xié)議乳绕,握手協(xié)議,警告協(xié)議和密碼規(guī)范改變協(xié)議

記錄協(xié)議:接收上層協(xié)議或下層協(xié)議的消息并進(jìn)行一系列的處理逼纸,然后再將處理后的消息繼續(xù)向下或向上傳遞洋措。主要包括對(duì)消息進(jìn)行加解密,壓縮解壓縮杰刽,分段或者重組等操作菠发。

握手協(xié)議:建立在三次握手之后,為通信雙方確立安全連接所需要的安全參數(shù)专缠,通常也會(huì)在此階段對(duì)通信雙方身份的真實(shí)性進(jìn)行驗(yàn)證雷酪。

警告協(xié)議:無(wú)論是在握手階段還是在對(duì)應(yīng)用層數(shù)據(jù)的傳輸階段,都有可能出現(xiàn)差錯(cuò)涝婉。警告協(xié)議規(guī)定了在SSL協(xié)議工作過(guò)程中可能出現(xiàn)的差錯(cuò)哥力、錯(cuò)誤的嚴(yán)重等級(jí)以及相應(yīng)的處理方式。

密碼規(guī)范改變協(xié)議:在SSL握手剛開(kāi)始的時(shí)候墩弯,加密參數(shù)還沒(méi)確定吩跋,消息都是明文傳送的。雙方協(xié)商好加密參數(shù)之后渔工,在發(fā)送握手結(jié)束消息之前锌钮,需要發(fā)送一個(gè)密碼規(guī)范改變消息(Change Cipher Message)來(lái)通知對(duì)方隨后的消息都使用剛剛協(xié)商好的加密算法和加密密鑰進(jìn)行加密。

一.為什么需要https ?

1.HTTP是明文傳輸的引矩,也就意味著,介于發(fā)送端旺韭、接收端中間的任意節(jié)點(diǎn)都可以知道你們傳輸?shù)膬?nèi)容是什么。這些節(jié)點(diǎn)可能是路由器值漫、代理等。

舉個(gè)最常見(jiàn)的例子杨何,用戶登陸沥邻。用戶輸入賬號(hào)危虱,密碼,采用HTTP的話唐全,只要在代理服務(wù)器上做點(diǎn)手腳就可以拿到你的密碼了埃跷。

? ? ? ?用戶登陸 --> 代理服務(wù)器(做手腳)--> 實(shí)際授權(quán)服務(wù)器

? ? ?2.在發(fā)送端對(duì)密碼進(jìn)行加密?沒(méi)用的,雖然別人不知道你原始密碼是多少捌蚊,但能夠拿到加密后的賬號(hào)密碼集畅,照樣能登陸。(這也是很多人覺(jué)得前端加密并沒(méi)有啥軟用)

二.HTTPS是如何保障安全的 ?

? ? ?稍微了解網(wǎng)絡(luò)基礎(chǔ)的同學(xué)都知道缅糟,HTTP是應(yīng)用層協(xié)議挺智,位于HTTP協(xié)議之下是傳輸協(xié)議TCP。TCP負(fù)責(zé)傳輸窗宦,HTTP則定義了數(shù)據(jù)如何進(jìn)行包裝赦颇。

? ? ? ? 從上面圖中我們可以看出:HTTPS相對(duì)于HTTP有哪些不同呢?其實(shí)就是在HTTP跟TCP中間加多了一層加密層TLS/SSL赴涵。

神馬是TLS/SSL媒怯?

? ? ? ?通俗的講,TLS髓窜、SSL其實(shí)是類(lèi)似的東西扇苞,SSL中文叫做“安全套接層”,SSL是個(gè)加密套件寄纵,負(fù)責(zé)對(duì)HTTP的數(shù)據(jù)進(jìn)行加密鳖敷。TLS是SSL的升級(jí)版。現(xiàn)在提到HTTPS程拭,加密套件基本指的是TLS定踱。

傳輸加密的流程

? ? ? 原先是應(yīng)用層將數(shù)據(jù)直接給到TCP進(jìn)行傳輸,現(xiàn)在改成應(yīng)用層將數(shù)據(jù)給到TLS/SSL恃鞋,將數(shù)據(jù)加密后崖媚,再給到TCP進(jìn)行傳輸。

? ? ? 就是這么回事恤浪。將數(shù)據(jù)加密后再傳輸畅哑,而不是任由數(shù)據(jù)在復(fù)雜而又充滿危險(xiǎn)的網(wǎng)絡(luò)上明文裸奔,在很大程度上確保了數(shù)據(jù)的安全资锰。這樣的話敢课,即使數(shù)據(jù)被中間節(jié)點(diǎn)截獲,壞人也看不懂濒募。

三.HTTPS是如何加密數(shù)據(jù)的 ??

一般來(lái)說(shuō)齿诉,加密分為對(duì)稱加密粤剧、非對(duì)稱加密(也叫公開(kāi)密鑰加密)抵恋。

對(duì)稱加密的意思就是弧关,加密數(shù)據(jù)用的密鑰别瞭,跟解密數(shù)據(jù)用的密鑰是一樣的蝙寨。

? ? ? ?對(duì)稱內(nèi)容加密強(qiáng)度非常高籽慢,一般破解不了箱亿。但存在一個(gè)很大的問(wèn)題就是無(wú)法安全地生成和保管密鑰届惋。假如客戶端軟件和服務(wù)器之間每次會(huì)話都使用固定的脑豹,相同的密鑰加密和解密瘩欺,肯定存在很大的安全隱患俱饿。如果

有人從客戶端端獲取到了對(duì)稱密鑰塌忽,整個(gè)內(nèi)容就不存在安全性了枣购,而且管理海量的客戶端密鑰也是一件很復(fù)雜的事情。

非對(duì)稱加密的意思就是涩堤,加密數(shù)據(jù)用的密鑰(公鑰)定躏,跟解密數(shù)據(jù)用的密鑰(私鑰)是不一樣的痊远。

? 什么叫做公鑰呢碧聪?其實(shí)就是字面上的意思——公開(kāi)的密鑰逞姿,誰(shuí)都可以查到。因此非對(duì)稱加密也叫做公開(kāi)密鑰加密栋烤。

相對(duì)應(yīng)的明郭,私鑰就是非公開(kāi)的密鑰始绍,一般是由網(wǎng)站的管理員持有话侄。

? 公鑰吞杭、私鑰兩個(gè)有什么聯(lián)系呢篇亭?

? 簡(jiǎn)單的說(shuō)就是锄贷,通過(guò)公鑰加密的數(shù)據(jù)柔昼,只能通過(guò)私鑰解開(kāi)炎辨。通過(guò)私鑰加密的數(shù)據(jù)乙嘀,只能通過(guò)公鑰解開(kāi)。

? 很多同學(xué)都知道用私鑰能解開(kāi)公鑰加密的數(shù)據(jù)曹质,但忽略了一點(diǎn)羽德,私鑰加密的數(shù)據(jù)宅静,同樣可以用公鑰解密出來(lái)究驴。而這點(diǎn)對(duì)于理解HTTPS的整套加密洒忧、授權(quán)體系非常關(guān)鍵熙侍。

? 非對(duì)稱密鑰交換很安全蛉抓,但同時(shí)也是 HTTPS 性能和速度降低的“罪魁禍?zhǔn)住薄?/p>

HTTP和HTTPS的區(qū)別有哪些?

Http協(xié)議運(yùn)行在TCP之上笑跛,明文傳輸,客戶端與服務(wù)器端都無(wú)法驗(yàn)證對(duì)方的身份几苍;Https是身披SSL(Secure Socket Layer)外殼的Http,運(yùn)行于SSL上刽宪,SSL運(yùn)行于TCP之上纠屋,是添加了加密和認(rèn)證機(jī)制的HTTP。二者之間存在如下不同:

端口不同:Http與Http使用不同的連接方式署辉,用的端口也不一樣哥攘,前者是80材鹦,后者是443逝淹;

資源消耗:和HTTP通信相比,Https通信會(huì)由于加減密處理消耗更多的CPU和內(nèi)存資源桶唐;

開(kāi)銷(xiāo):Https通信需要證書(shū)栅葡,而證書(shū)一般需要向認(rèn)證機(jī)構(gòu)購(gòu)買(mǎi);

Https的加密機(jī)制是一種共享密鑰加密和公開(kāi)密鑰加密并用的混合加密機(jī)制尤泽。

HTTP1.0欣簇,HTTP1.1以及HTTP2.0協(xié)議的區(qū)別:

答:主要區(qū)別和特點(diǎn)可以概括如下:

HTTP1.0:

HTTP1.0是一種無(wú)狀態(tài),無(wú)連接的協(xié)議坯约。瀏覽器的每次請(qǐng)求都需要與服務(wù)器建立一個(gè)TCP連接熊咽,服務(wù)器處理完成后立即斷開(kāi)TCP連接(無(wú)連接)闹丐,服務(wù)器不跟蹤每個(gè)客戶端也不記錄過(guò)去的請(qǐng)求(無(wú)狀態(tài))。也就是默認(rèn)使用Connection: close

HTTP1.1:

HTTP/1.1中默認(rèn)使用Connection: keep-alive如贷,避免了連接建立和釋放的開(kāi)銷(xiāo)楣富。但服務(wù)器必須按照客戶端請(qǐng)求的先后順序依次回送相應(yīng)的結(jié)果塘安,以保證客戶端能夠區(qū)分出每次請(qǐng)求的響應(yīng)內(nèi)容切黔。通過(guò)Content-Length字段來(lái)判斷當(dāng)前請(qǐng)求的數(shù)據(jù)是否已經(jīng)全部接收。不允許同時(shí)存在兩個(gè)并行的響應(yīng)。

HTTP2.0:

HTTP2.0協(xié)議新增了二進(jìn)制分幀叙淌,多路復(fù)用,頭部壓縮和服務(wù)器推送等功能,進(jìn)一步提高了傳輸效率次询。

Cookie+Session

HTTP協(xié)議是一種無(wú)狀態(tài)的協(xié)議盒卸,我們可以使用cookie和session來(lái)保持會(huì)話狀態(tài)谷朝。用戶發(fā)起請(qǐng)求,服務(wù)端收到請(qǐng)求處理后可以生成一個(gè)sessionId娃兽,并且將sessionId存入cookie中返回給客戶端呕寝,將session的內(nèi)容存儲(chǔ)在服務(wù)器上嚼酝。在下一次的請(qǐng)求中洼冻,客戶端帶著cookie來(lái)請(qǐng)求服務(wù)器,服務(wù)端從cookie中取出sessionId华糖,實(shí)現(xiàn)了用戶會(huì)話狀態(tài)的保持。

這樣做有一個(gè)缺點(diǎn)就是將一些東西存在了服務(wù)器上秀撇,在用戶量較大的情況下呵燕,服務(wù)器容量會(huì)不足紊撕。實(shí)際情況中笼才,經(jīng)常是將所需要的會(huì)話狀態(tài)潜支,比如說(shuō)登錄態(tài)直接存入cookie并且返回給客戶端柿汛,下次請(qǐng)求時(shí)冗酿,服務(wù)端直接取出cookie中的信息和參數(shù)信息進(jìn)行比較埠对,保持HTTP會(huì)話狀態(tài)。

總結(jié):session保存在服務(wù)端裁替。cookie保存在客戶端,并且cookie有大小限制项玛。

Session 與 Cookie 的對(duì)比

實(shí)現(xiàn)機(jī)制:Session的實(shí)現(xiàn)常常依賴于Cookie機(jī)制,通過(guò)Cookie機(jī)制回傳SessionID弱判;

大小限制:Cookie有大小限制并且瀏覽器對(duì)每個(gè)站點(diǎn)也有cookie的個(gè)數(shù)限制襟沮,Session沒(méi)有大小限制,理論上只與服務(wù)器的內(nèi)存大小有關(guān)昌腰;

安全性:Cookie存在安全隱患开伏,通過(guò)攔截或本地文件找得到cookie后可以進(jìn)行攻擊,而Session由于保存在服務(wù)器端遭商,相對(duì)更加安全固灵;

服務(wù)器資源消耗:Session是保存在服務(wù)器端上會(huì)存在一段時(shí)間才會(huì)消失,如果session過(guò)多會(huì)增加服務(wù)器的壓力劫流。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末巫玻,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子困介,更是在濱河造成了極大的恐慌大审,老刑警劉巖蘸际,帶你破解...
    沈念sama閱讀 217,826評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件座哩,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡粮彤,警方通過(guò)查閱死者的電腦和手機(jī)根穷,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,968評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)导坟,“玉大人屿良,你說(shuō)我怎么就攤上這事”怪埽” “怎么了尘惧?”我有些...
    開(kāi)封第一講書(shū)人閱讀 164,234評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)递递。 經(jīng)常有香客問(wèn)我喷橙,道長(zhǎng),這世上最難降的妖魔是什么登舞? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,562評(píng)論 1 293
  • 正文 為了忘掉前任贰逾,我火速辦了婚禮,結(jié)果婚禮上菠秒,老公的妹妹穿的比我還像新娘疙剑。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,611評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布言缤。 她就那樣靜靜地躺著嚼蚀,像睡著了一般。 火紅的嫁衣襯著肌膚如雪管挟。 梳的紋絲不亂的頭發(fā)上驰坊,一...
    開(kāi)封第一講書(shū)人閱讀 51,482評(píng)論 1 302
  • 那天,我揣著相機(jī)與錄音哮独,去河邊找鬼拳芙。 笑死,一個(gè)胖子當(dāng)著我的面吹牛皮璧,可吹牛的內(nèi)容都是我干的舟扎。 我是一名探鬼主播,決...
    沈念sama閱讀 40,271評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼悴务,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼睹限!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起讯檐,我...
    開(kāi)封第一講書(shū)人閱讀 39,166評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤羡疗,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后别洪,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體叨恨,經(jīng)...
    沈念sama閱讀 45,608評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,814評(píng)論 3 336
  • 正文 我和宋清朗相戀三年挖垛,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了痒钝。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,926評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡痢毒,死狀恐怖送矩,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情哪替,我是刑警寧澤栋荸,帶...
    沈念sama閱讀 35,644評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站凭舶,受9級(jí)特大地震影響晌块,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜库快,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,249評(píng)論 3 329
  • 文/蒙蒙 一摸袁、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧义屏,春花似錦靠汁、人聲如沸蜂大。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,866評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)奶浦。三九已至,卻和暖如春踢星,著一層夾襖步出監(jiān)牢的瞬間澳叉,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,991評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工沐悦, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留成洗,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,063評(píng)論 3 370
  • 正文 我出身青樓藏否,卻偏偏與公主長(zhǎng)得像瓶殃,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子副签,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,871評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容