Http1.0/Http1.1/Http2.0的區(qū)別

Http1.0

Http1.0是一種無(wú)狀態(tài)厨相、無(wú)連接的應(yīng)用層協(xié)議领曼。

HTTP1.0規(guī)定瀏覽器和服務(wù)器保持短暫的連接鸥鹉,瀏覽器的每次請(qǐng)求都需要與服務(wù)器建立一個(gè)TCP連接,服務(wù)器處理完成后立即斷開(kāi)TCP連接(無(wú)連接)悯森,服務(wù)器不跟蹤每個(gè)客戶端也不記錄過(guò)去的請(qǐng)求(無(wú)狀態(tài))宋舷。

Http1.0的導(dǎo)致的問(wèn)題
  1. 無(wú)復(fù)用連接

每發(fā)送一次網(wǎng)絡(luò)請(qǐng)求都要進(jìn)行一次TCP連接;而TCP得連接和釋放又比較耗費(fèi)時(shí)間(每次都需要三次握手和四次揮手)瓢姻;這種無(wú)連接的特性會(huì)使得網(wǎng)絡(luò)的利用率非常低祝蝠。

  1. 隊(duì)頭阻塞

HTTP1.0規(guī)定下一個(gè)請(qǐng)求必須在前一個(gè)請(qǐng)求響應(yīng)到達(dá)之后才能發(fā)送。假設(shè)前一個(gè)請(qǐng)求響應(yīng)一直不到達(dá)幻碱,那么下一個(gè)請(qǐng)求就不發(fā)送绎狭,同樣的后面的請(qǐng)求也給阻塞了。

Http1.1

為了解決Http1.0的一些問(wèn)題褥傍,Http1.1出現(xiàn)了儡嘶;
對(duì)于 HTTP/1.1,不僅繼承了 HTTP1.0簡(jiǎn)單的特點(diǎn)恍风,還克服了諸多 HTTP1.0性能上的問(wèn)題蹦狂。

Http1.1的新增特點(diǎn)
  1. 持久化連接
    通過(guò)設(shè)置 Connection:keep-alive 來(lái)實(shí)現(xiàn)持久化連接(長(zhǎng)連接),即多個(gè)請(qǐng)求和響應(yīng)可以利用同一個(gè) TCP 連接朋贬,而不是每一次請(qǐng)求響應(yīng)都要新建一個(gè)TCP連接凯楔。
  2. 增加管道機(jī)制
    管道化使得請(qǐng)求能夠“并行”傳輸。而‘響應(yīng)’依舊是一個(gè)一個(gè)返回锦募。并沒(méi)有真正意義上的解決隊(duì)頭阻塞問(wèn)題摆屯;
    但是,當(dāng)出現(xiàn)隊(duì)頭阻塞時(shí)糠亩,瀏覽器會(huì)建立多個(gè)TCP連接虐骑;
管道機(jī)制
  1. 分塊傳輸
    在 HTTP/1.1 版本中,可以不必等待數(shù)據(jù)完全處理完畢再返回赎线,服務(wù)器產(chǎn)生部分?jǐn)?shù)據(jù)廷没,那么就發(fā)送部分?jǐn)?shù)據(jù),很明此種方式更加優(yōu)秀一些垂寥,可以節(jié)省很多等待時(shí)間腕柜。

  2. 增加 host 字段
    使得一個(gè)服務(wù)器能夠用來(lái)創(chuàng)建多個(gè) Web 站點(diǎn)。

  3. 錯(cuò)誤提示
    HTTP/1.1 引入了一個(gè) Warning 頭域矫废,增加對(duì)錯(cuò)誤或警告信息的描述,此外砰蠢,在 HTTP/1.1 中新增了24個(gè)狀態(tài)響應(yīng)碼(100蓖扑,101,203台舱,205律杠,206潭流,301,305… )柜去。

  4. 帶寬優(yōu)化
    HTTP1.1支持只發(fā)送header信息(不帶任何body信息)灰嫉,如果服務(wù)器認(rèn)為客戶端有權(quán)限請(qǐng)求服務(wù)器,則返回100嗓奢,客戶端接收到100才開(kāi)始把請(qǐng)求body發(fā)送到服務(wù)器讼撒;如果返回401,客戶端就可以不用發(fā)送請(qǐng)求body了節(jié)約了帶寬股耽。

  5. 緩存處理
    HTTP1.1還加入了緩存處理(強(qiáng)緩存和協(xié)商緩存[傳送門(mén)])新的字段如cache-control

Http2.0

HTTP 2.0的目標(biāo):改進(jìn)傳輸性能

HTTP 2.0 的主要目標(biāo)是改進(jìn)傳輸性能根盒,實(shí)現(xiàn)低延遲和高吞吐量。從另一方面看物蝙,HTTP 的高層協(xié)議語(yǔ)義并不會(huì)因?yàn)檫@次版本升級(jí)而受影響炎滞。所有HTTP 首部、值诬乞,以及它們的使用場(chǎng)景都不會(huì)變册赛。

Http2.0新增特點(diǎn)

1. 多路復(fù)用(連接共享)

多路復(fù)用的一些概念:

  • 流(stream):已建立連接上的雙向字節(jié)流。
  • 消息:與邏輯消息對(duì)應(yīng)的完整的一系列數(shù)據(jù)幀震嫉。
  • 幀(frame):HTTP2.0通信的最小單位森瘪,每個(gè)幀包含幀頭部,至少也會(huì)標(biāo)識(shí)出當(dāng)前幀所屬的流(stream id)责掏。

一次Http請(qǐng)求響應(yīng)對(duì)應(yīng)會(huì)建立一個(gè)雙向字節(jié)流柜砾;每一流有自己的 Stream ID
每個(gè)數(shù)據(jù)流以消息的形式發(fā)送,而消息由一或多個(gè)幀組成换衬。這些幀可以亂序發(fā)送痰驱,然后再根據(jù)每個(gè)幀頭部的流標(biāo)識(shí)符(stream id)重新組裝。

所有的HTTP2.0通信都在一個(gè)TCP連接上完成瞳浦,這個(gè)連接可以承載任意數(shù)量的雙向數(shù)據(jù)流担映。

另外,多路復(fù)用(連接共享)可能會(huì)導(dǎo)致關(guān)鍵請(qǐng)求被阻塞叫潦。HTTP2.0里每個(gè)數(shù)據(jù)流都可以設(shè)置優(yōu)先級(jí)和依賴蝇完,優(yōu)先級(jí)高的數(shù)據(jù)流會(huì)被服務(wù)器優(yōu)先處理和返回給客戶端,數(shù)據(jù)流還可以依賴其他的子數(shù)據(jù)流矗蕊。

2. 頭部壓縮

HTTP1.1 不支持 header 數(shù)據(jù)的壓縮短蜕,HTTP/2.0 使用 HPACK 算法對(duì) header 的數(shù)據(jù)進(jìn)行壓縮,這樣數(shù)據(jù)體積小了傻咖,在網(wǎng)絡(luò)上傳輸就會(huì)更快朋魔。高效的壓縮算法可以很大的壓縮 header ,減少發(fā)送包的數(shù)量從而降低延遲卿操。

3. 服務(wù)器推送

在 HTTP/2 中警检,服務(wù)器可以對(duì)客戶端的一個(gè)請(qǐng)求發(fā)送多個(gè)響應(yīng)孙援,即服務(wù)器可以額外的向客戶端推送資源,而無(wú)需客戶端明確的請(qǐng)求扇雕。

總結(jié)

HTTP1.1

  • 持久連接
  • 請(qǐng)求管道化
  • 增加緩存處理(新的字段如cache-control)
  • 增加Host字段拓售、支持?jǐn)帱c(diǎn)傳輸?shù)?/li>

HTTP2.0

  • 多路復(fù)用(或連接共享)(基于二進(jìn)制分幀)
  • 頭部壓縮
  • 服務(wù)器推送
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市镶奉,隨后出現(xiàn)的幾起案子础淤,更是在濱河造成了極大的恐慌,老刑警劉巖腮鞍,帶你破解...
    沈念sama閱讀 216,651評(píng)論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件值骇,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡移国,警方通過(guò)查閱死者的電腦和手機(jī)吱瘩,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,468評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)迹缀,“玉大人使碾,你說(shuō)我怎么就攤上這事∽6” “怎么了票摇?”我有些...
    開(kāi)封第一講書(shū)人閱讀 162,931評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)砚蓬。 經(jīng)常有香客問(wèn)我矢门,道長(zhǎng),這世上最難降的妖魔是什么灰蛙? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,218評(píng)論 1 292
  • 正文 為了忘掉前任祟剔,我火速辦了婚禮,結(jié)果婚禮上摩梧,老公的妹妹穿的比我還像新娘物延。我一直安慰自己,他們只是感情好仅父,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,234評(píng)論 6 388
  • 文/花漫 我一把揭開(kāi)白布叛薯。 她就那樣靜靜地躺著,像睡著了一般笙纤。 火紅的嫁衣襯著肌膚如雪耗溜。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 51,198評(píng)論 1 299
  • 那天省容,我揣著相機(jī)與錄音抖拴,去河邊找鬼。 笑死蓉冈,一個(gè)胖子當(dāng)著我的面吹牛城舞,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播寞酿,決...
    沈念sama閱讀 40,084評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼家夺,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了伐弹?” 一聲冷哼從身側(cè)響起拉馋,我...
    開(kāi)封第一講書(shū)人閱讀 38,926評(píng)論 0 274
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎惨好,沒(méi)想到半個(gè)月后煌茴,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,341評(píng)論 1 311
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡日川,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,563評(píng)論 2 333
  • 正文 我和宋清朗相戀三年蔓腐,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片龄句。...
    茶點(diǎn)故事閱讀 39,731評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡回论,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出分歇,到底是詐尸還是另有隱情傀蓉,我是刑警寧澤,帶...
    沈念sama閱讀 35,430評(píng)論 5 343
  • 正文 年R本政府宣布职抡,位于F島的核電站葬燎,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏缚甩。R本人自食惡果不足惜谱净,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,036評(píng)論 3 326
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望蹄胰。 院中可真熱鬧岳遥,春花似錦、人聲如沸裕寨。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,676評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)宾袜。三九已至捻艳,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間庆猫,已是汗流浹背认轨。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,829評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留月培,地道東北人嘁字。 一個(gè)月前我還...
    沈念sama閱讀 47,743評(píng)論 2 368
  • 正文 我出身青樓恩急,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親纪蜒。 傳聞我的和親對(duì)象是個(gè)殘疾皇子衷恭,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,629評(píng)論 2 354