HTTP協(xié)議幾個(gè)版本的比較

HTTP協(xié)議是如今互聯(lián)網(wǎng)與服務(wù)端技術(shù)的基石岖常,HTTP協(xié)議的演進(jìn)也從側(cè)面反應(yīng)了互聯(lián)網(wǎng)技術(shù)的快速發(fā)展驯镊。這兩天在準(zhǔn)備一次關(guān)于HTTP1.1協(xié)議特性的技術(shù)分享過(guò)程中,順 便了解了下各版本HTTP協(xié)議的特點(diǎn)竭鞍,在這里做個(gè)簡(jiǎn)單的總結(jié)板惑。

HTTP協(xié)議到現(xiàn)在為止總共經(jīng)歷了3個(gè)版本的演化,第一個(gè)HTTP協(xié)議誕生于1989年3月偎快。

1冯乘、HTTP 0.9

HTTP 0.9是第一個(gè)版本的HTTP協(xié)議,已過(guò)時(shí)晒夹。它的組成極其簡(jiǎn)單裆馒,只允許客戶(hù)端發(fā)送GET這一種請(qǐng)求,且不支持請(qǐng)求頭丐怯。由于沒(méi)有協(xié)議頭喷好,造成了HTTP 0.9協(xié)議只支持一種內(nèi)容,即純文本读跷。不過(guò)網(wǎng)頁(yè)仍然支持用HTML語(yǔ)言格式化梗搅,同時(shí)無(wú)法插入圖片。

HTTP 0.9具有典型的無(wú)狀態(tài)性效览,每個(gè)事務(wù)獨(dú)立進(jìn)行處理无切,事務(wù)結(jié)束時(shí)就釋放這個(gè)連接。由此可見(jiàn)钦铺,HTTP協(xié)議的無(wú)狀態(tài)特點(diǎn)在其第一個(gè)版本0.9中已經(jīng)成型订雾。一次HTTP 0.9的傳輸首先要建立一個(gè)由客戶(hù)端到Web服務(wù)器的TCP連接,由客戶(hù)端發(fā)起一個(gè)請(qǐng)求矛洞,然后由Web服務(wù)器返回頁(yè)面內(nèi)容洼哎,然后連接會(huì)關(guān)閉烫映。如果請(qǐng)求的頁(yè)面不存在,也不會(huì)返回任何錯(cuò)誤碼噩峦。

2锭沟、HTTP 1.0

HTTP協(xié)議的第二個(gè)版本,第一個(gè)在通訊中指定版本號(hào)的HTTP協(xié)議版本识补,至今仍被廣泛采用族淮。相對(duì)于HTTP 0.9 增加了如下主要特性:

請(qǐng)求與響應(yīng)支持頭域

響應(yīng)對(duì)象以一個(gè)響應(yīng)狀態(tài)行開(kāi)始

響應(yīng)對(duì)象不只限于超文本

開(kāi)始支持客戶(hù)端通過(guò)POST方法向Web服務(wù)器提交數(shù)據(jù),支持GET凭涂、HEAD祝辣、POST方法

(短連接)每一個(gè)請(qǐng)求建立一個(gè)TCP連接,請(qǐng)求完成后立馬斷開(kāi)連接切油。這將會(huì)導(dǎo)致2個(gè)問(wèn)題:連接無(wú)法復(fù)用蝙斜,head of line blocking。連接無(wú)法復(fù)用會(huì)導(dǎo)致每次請(qǐng)求都經(jīng)歷三次握手和慢啟動(dòng)澎胡。三次握手在高延遲的場(chǎng)景下影響較明顯孕荠,慢啟動(dòng)則對(duì)文件類(lèi)請(qǐng)求影響較大。head of line blocking會(huì)導(dǎo)致帶寬無(wú)法被充分利用攻谁,以及后續(xù)健康請(qǐng)求被阻塞稚伍。

3、HTTP 1.1

HTTP協(xié)議的第三個(gè)版本是HTTP 1.1戚宦,是目前使用最廣泛的協(xié)議版本 个曙。HTTP 1.1是目前主流的HTTP協(xié)議版本,因此這里就多花一些筆墨介紹一下HTTP 1.1的特性阁苞。

HTTP 1.1引入了許多關(guān)鍵性能優(yōu)化:keepalive連接困檩,chunked編碼傳輸,字節(jié)范圍請(qǐng)求那槽,請(qǐng)求流水線等

Persistent Connection(keepalive連接):允許HTTP設(shè)備在事務(wù)處理結(jié)束之后將TCP連接保持在打開(kāi)的狀態(tài)悼沿,以便未來(lái)的HTTP請(qǐng)求重用現(xiàn)在的連接,直到客戶(hù)端或服務(wù)器端決定將其關(guān)閉為止骚灸。在HTTP1.0中使用長(zhǎng)連接需要添加請(qǐng)求頭 Connection: Keep-Alive糟趾,而在HTTP 1.1 所有的連接默認(rèn)都是長(zhǎng)連接,除非特殊聲明不支持( HTTP請(qǐng)求報(bào)文首部加上Connection: close )甚牲。服務(wù)器端按照FIFO原則來(lái)處理不同的Request义郑。

chunked編碼傳輸:該編碼將實(shí)體分塊傳送并逐塊標(biāo)明長(zhǎng)度,直到長(zhǎng)度為0塊表示傳輸結(jié)束丈钙,這在實(shí)體長(zhǎng)度未知時(shí)特別有用(比如由數(shù)據(jù)庫(kù)動(dòng)態(tài)產(chǎn)生的數(shù)據(jù))

字節(jié)范圍請(qǐng)求:HTTP1.1支持傳送內(nèi)容的一部分非驮。比方說(shuō),當(dāng)客戶(hù)端已經(jīng)有內(nèi)容的一部分雏赦,為了節(jié)省帶寬劫笙,可以只向服務(wù)器請(qǐng)求一部分芙扎。該功能通過(guò)在請(qǐng)求消息中引入了range頭域來(lái)實(shí)現(xiàn),它允許只請(qǐng)求資源的某個(gè)部分填大。在響應(yīng)消息中Content-Range頭域聲明了返回的這部分對(duì)象的偏移值和長(zhǎng)度戒洼。如果服務(wù)器相應(yīng)地返回了對(duì)象所請(qǐng)求范圍的內(nèi)容,則響應(yīng)碼206(Partial Content)

Pipelining(請(qǐng)求流水線)

另外允华,HTTP 1.1還新增了如下特性:

請(qǐng)求消息和響應(yīng)消息都支持Host頭域:在HTTP1.0中認(rèn)為每臺(tái)服務(wù)器都綁定一個(gè)唯一的IP地址圈浇,因此,請(qǐng)求消息中的URL并沒(méi)有傳遞主機(jī)名(hostname)靴寂。但隨著虛擬主機(jī)技術(shù)的發(fā)展磷蜀,在一臺(tái)物理服務(wù)器上可以存在多個(gè)虛擬主機(jī)(Multi-homed Web Servers),并且它們共享一個(gè)IP地址榨汤。因此蠕搜,Host頭的引入就很有必要了怎茫。

新增了一批Request method:HTTP1.1增加了OPTIONS,PUT, DELETE, TRACE, CONNECT方法

緩存處理:HTTP/1.1在1.0的基礎(chǔ)上加入了一些cache的新特性收壕,引入了實(shí)體標(biāo)簽,一般被稱(chēng)為e-tags轨蛤,新增更為強(qiáng)大的Cache-Control頭蜜宪。?

4、HTTP 2.0

HTTP 2.0是下一代HTTP協(xié)議祥山,目前應(yīng)用還非常少圃验。主要特點(diǎn)有:

多路復(fù)用(二進(jìn)制分幀)。HTTP 2.0最大的特點(diǎn):不會(huì)改動(dòng)HTTP 的語(yǔ)義缝呕,HTTP 方法澳窑、狀態(tài)碼、URI 及首部字段供常,等等這些核心概念上一如往常摊聋,卻能致力于突破上一代標(biāo)準(zhǔn)的性能限制,改進(jìn)傳輸性能栈暇,實(shí)現(xiàn)低延遲和高吞吐量麻裁。而之所以叫2.0,是在于新增的二進(jìn)制分幀層源祈。在二進(jìn)制分幀層上煎源, HTTP 2.0 會(huì)將所有傳輸?shù)男畔⒎指顬楦〉南⒑蛶?duì)它們采用二進(jìn)制格式的編碼 香缺,其中HTTP1.x的首部信息會(huì)被封裝到Headers幀手销,而我們的request body則封裝到Data幀里面。

HTTP 2.0 通信都在一個(gè)連接上完成图张,這個(gè)連接可以承載任意數(shù)量的雙向數(shù)據(jù)流锋拖。相應(yīng)地馏慨,每個(gè)數(shù)據(jù)流以消息的形式發(fā)送,而消息由一或多個(gè)幀組成姑隅,這些幀可以亂序發(fā)送写隶,然后再根據(jù)每個(gè)幀首部的流標(biāo)識(shí)符重新組裝。

頭部壓縮:當(dāng)一個(gè)客戶(hù)端向相同服務(wù)器請(qǐng)求許多資源時(shí)讲仰,像來(lái)自同一個(gè)網(wǎng)頁(yè)的圖像慕趴,將會(huì)有大量的請(qǐng)求看上去幾乎同樣的,這就需要壓縮技術(shù)對(duì)付這種幾乎相同的信息鄙陡。

隨時(shí)復(fù)位:HTTP1.1一個(gè)缺點(diǎn)是當(dāng)HTTP信息有一定長(zhǎng)度大小數(shù)據(jù)傳輸時(shí)冕房,你不能方便地隨時(shí)停止它,中斷TCP連接的代價(jià)是昂貴的趁矾。使用HTTP2的RST_STREAM將能方便停止一個(gè)信息傳輸耙册,啟動(dòng)新的信息,在不中斷連接的情況下提高帶寬利用效率毫捣。

服務(wù)器端推流:Server Push详拙。客戶(hù)端請(qǐng)求一個(gè)資源X蔓同,服務(wù)器端判斷也許客戶(hù)端還需要資源Z饶辙,在無(wú)需事先詢(xún)問(wèn)客戶(hù)端情況下將資源Z推送到客戶(hù)端,客戶(hù)端接受到后斑粱,可以緩存起來(lái)以備后用弃揽。

優(yōu)先權(quán)和依賴(lài):每個(gè)流都有自己的優(yōu)先級(jí)別,會(huì)表明哪個(gè)流是最重要的则北,客戶(hù)端會(huì)指定哪個(gè)流是最重要的矿微,有一些依賴(lài)參數(shù),這樣一個(gè)流可以依賴(lài)另外一個(gè)流尚揣。優(yōu)先級(jí)別可以在運(yùn)行時(shí)動(dòng)態(tài)改變涌矢,當(dāng)用戶(hù)滾動(dòng)頁(yè)面時(shí),可以告訴瀏覽器哪個(gè)圖像是最重要的惑艇,你也可以在一組流中進(jìn)行優(yōu)先篩選蒿辙,能夠突然抓住重點(diǎn)流。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末滨巴,一起剝皮案震驚了整個(gè)濱河市思灌,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌恭取,老刑警劉巖泰偿,帶你破解...
    沈念sama閱讀 216,591評(píng)論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異蜈垮,居然都是意外死亡耗跛,警方通過(guò)查閱死者的電腦和手機(jī)裕照,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,448評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)调塌,“玉大人晋南,你說(shuō)我怎么就攤上這事「崂” “怎么了负间?”我有些...
    開(kāi)封第一講書(shū)人閱讀 162,823評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)姜凄。 經(jīng)常有香客問(wèn)我政溃,道長(zhǎng),這世上最難降的妖魔是什么态秧? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,204評(píng)論 1 292
  • 正文 為了忘掉前任董虱,我火速辦了婚禮,結(jié)果婚禮上申鱼,老公的妹妹穿的比我還像新娘愤诱。我一直安慰自己,他們只是感情好润讥,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,228評(píng)論 6 388
  • 文/花漫 我一把揭開(kāi)白布转锈。 她就那樣靜靜地躺著,像睡著了一般楚殿。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上竿痰,一...
    開(kāi)封第一講書(shū)人閱讀 51,190評(píng)論 1 299
  • 那天脆粥,我揣著相機(jī)與錄音,去河邊找鬼影涉。 笑死变隔,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的蟹倾。 我是一名探鬼主播匣缘,決...
    沈念sama閱讀 40,078評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼鲜棠!你這毒婦竟也來(lái)了肌厨?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 38,923評(píng)論 0 274
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤豁陆,失蹤者是張志新(化名)和其女友劉穎柑爸,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,334評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡神僵,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,550評(píng)論 2 333
  • 正文 我和宋清朗相戀三年家制,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了夺欲。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片灌砖。...
    茶點(diǎn)故事閱讀 39,727評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡浦旱,死狀恐怖痢掠,靈堂內(nèi)的尸體忽然破棺而出产还,到底是詐尸還是另有隱情厘熟,我是刑警寧澤偎血,帶...
    沈念sama閱讀 35,428評(píng)論 5 343
  • 正文 年R本政府宣布,位于F島的核電站盯漂,受9級(jí)特大地震影響颇玷,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜就缆,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,022評(píng)論 3 326
  • 文/蒙蒙 一帖渠、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧竭宰,春花似錦空郊、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,672評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至廓旬,卻和暖如春哼审,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背孕豹。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,826評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工涩盾, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人励背。 一個(gè)月前我還...
    沈念sama閱讀 47,734評(píng)論 2 368
  • 正文 我出身青樓春霍,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親叶眉。 傳聞我的和親對(duì)象是個(gè)殘疾皇子址儒,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,619評(píng)論 2 354

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