計(jì)算機(jī)網(wǎng)絡(luò):HTTP協(xié)議總結(jié)

本文為學(xué)習(xí)總結(jié)篇秘案,原文出自公眾號(hào):Hollis砰苍,感謝閱讀~

一潦匈、HTTP協(xié)議簡介

超文本傳輸協(xié)議(英文:HyperText Transfer Protocol,縮寫:HTTP)是一種用于分布式赚导、協(xié)作式和超媒體信息系統(tǒng)的應(yīng)用層協(xié)議茬缩。設(shè)計(jì)HTTP最初的目的是為了提供一種發(fā)布和接收HTML頁面的方法。通過HTTP或者HTTPS協(xié)議請(qǐng)求的資源由統(tǒng)一資源標(biāo)識(shí)符(Uniform Resource Identifiers吼旧,URI)來標(biāo)識(shí)凰锡。

HTTP 協(xié)議是以 ASCII 碼傳輸,基于請(qǐng)求與響應(yīng)模式的圈暗、無狀態(tài)的掂为,建立在 TCP/IP 協(xié)議之上的應(yīng)用層規(guī)范。它不涉及數(shù)據(jù)包(packet)傳輸(不直接傳輸數(shù)據(jù)報(bào))员串,主要規(guī)定了客戶端和服務(wù)器之間的通信格式勇哗,默認(rèn)使用80端口。

image

HTTP協(xié)議主要的版本有3個(gè)昵济,分別是HTTP/1.0智绸、HTTP/1.1和HTTP/2。HTTPS是另外一個(gè)協(xié)議访忿,簡單講是HTTP的安全版瞧栗。

二、HTTP/1.0與HTTP/1.1

1996年5月海铆,HTTP/1.0 版本發(fā)布迹恐,為了提高系統(tǒng)的效率,HTTP/1.0規(guī)定瀏覽器與服務(wù)器只保持短暫的連接卧斟,瀏覽器的每次請(qǐng)求都需要與服務(wù)器建立一個(gè)TCP連接殴边,服務(wù)器完成請(qǐng)求處理后立即斷開TCP連接,服務(wù)器不跟蹤每個(gè)客戶也不記錄過去的請(qǐng)求。

請(qǐng)注意上面提到的HTTP/1.0中瀏覽器與服務(wù)器只保持短暫的連接,連接無法復(fù)用合呐。也就是說每個(gè)TCP連接只能發(fā)送一個(gè)請(qǐng)求。發(fā)送數(shù)據(jù)完畢是偷,連接就關(guān)閉,如果還要請(qǐng)求其他資源募逞,就必須再新建一個(gè)連接蛋铆。

我們知道TCP連接的建立需要三次握手,是很耗費(fèi)時(shí)間的一個(gè)過程放接。所以刺啦,HTTP/1.0版本的性能比較差。現(xiàn)在纠脾,隨便打開一個(gè)網(wǎng)頁玛瘸,上面都會(huì)有很多圖片蜕青、視頻等資源,HTTP/1.0顯然無法滿足性能要求捧韵。

為了解決HTTP/1.0存在的缺陷市咆,HTTP/1.1于1999年誕生。相比較于HTTP/1.0來說再来,最主要的改進(jìn)就是引入了持久連接。所謂的持久連接就是:在一個(gè)TCP連接上可以傳送多個(gè)HTTP請(qǐng)求和響應(yīng)磷瘤,減少了建立和關(guān)閉連接的消耗和延遲芒篷。

image

引入了持久連接之后,在性能方面采缚,HTTP協(xié)議有了明顯的提升针炉,基本可以用于日常使用,這也是這一版本一直延用至今的原因扳抽。當(dāng)然還是有些力不從心的篡帕,后面會(huì)詳細(xì)介紹。

三贸呢、HTTP/2.0

下圖是Akamai 公司建立的一個(gè)官方的演示镰烧,主要用來說明在性能上HTTP/1.1和HTTP/2在性能升的差別。同時(shí)請(qǐng)求 379 張圖片楞陷,HTTP/1.1加載用時(shí)4.54s怔鳖,HTTP/2加載用時(shí)1.47s。

image

HTTP/2 是 HTTP 協(xié)議自 1999 年 HTTP 1.1 發(fā)布后的首個(gè)更新固蛾,主要基于 SPDY 協(xié)議结执。由互聯(lián)網(wǎng)工程任務(wù)組(IETF)的 Hypertext Transfer Protocol Bis(httpbis)工作小組進(jìn)行開發(fā)。該組織于2014年12月將HTTP/2標(biāo)準(zhǔn)提議遞交至IESG進(jìn)行討論艾凯,于2015年2月17日被批準(zhǔn)献幔。HTTP/2標(biāo)準(zhǔn)于2015年5月以RFC 7540正式發(fā)表。

HTTP/2相對(duì)于HTTP/1.1的改進(jìn)主要如下:

二進(jìn)制分幀

在HTTP/2中趾诗,在應(yīng)用層(HTTP2.0)和傳輸層(TCP或者UDP)之間加了一層:二進(jìn)制分幀層蜡感。這是HTTP2中最大的改變。HTTP2之所以性能會(huì)比HTTP1.1有那么大的提高沧竟,很大程度上正是由于這一層的引入铸敏。

image

在二進(jìn)制分幀層中, HTTP/2 會(huì)將所有傳輸?shù)男畔⒎指顬楦〉南⒑蛶╢rame),并對(duì)它們采用二進(jìn)制格式的編碼悟泵。

這種單連接多資源的方式杈笔,減少了服務(wù)端的壓力,使得內(nèi)存占用更少糕非,連接吞吐量更大蒙具。而且球榆,TCP連接數(shù)的減少使得網(wǎng)絡(luò)擁塞狀況得以改善,同時(shí)慢啟動(dòng)時(shí)間的減少禁筏,使擁塞和丟包恢復(fù)速度更快持钉。

多路復(fù)用

多路復(fù)用允許同時(shí)通過單一的HTTP/2.0連接發(fā)起多重的請(qǐng)求-響應(yīng)消息。在HTTP1.1協(xié)議中篱昔,瀏覽器客戶端在同一時(shí)間每强,針對(duì)同一域名下的請(qǐng)求有一定數(shù)量的限制,超過了這個(gè)限制的請(qǐng)求就會(huì)被阻塞州刽。而多路復(fù)用允許同時(shí)通過單一的 HTTP2.0 連接發(fā)起多重的“請(qǐng)求-響應(yīng)”消息空执。

image

HTTP2的請(qǐng)求的TCP的connection一旦建立,后續(xù)請(qǐng)求以stream的方式發(fā)送穗椅。每個(gè)stream的基本組成單位是frame(二進(jìn)制幀)辨绊。客戶端和服務(wù)器可以把 HTTP 消息分解為互不依賴的幀匹表,然后亂序發(fā)送门坷,最后再在另一端把它們重新組合起來。

image

也就是說袍镀, HTTP2.0 通信都在一個(gè)連接上完成默蚌,這個(gè)連接可以承載任意數(shù)量的雙向數(shù)據(jù)流流椒。就好比,請(qǐng)求一個(gè)頁面 http://www.hollischuang.com 宣虾。頁面上所有的資源請(qǐng)求都是客戶端與服務(wù)器上的一條 TCP 上請(qǐng)求和響應(yīng)的惯裕!

header壓縮

HTTP/1.1的header帶有大量信息,而且每次都要重復(fù)發(fā)送绣硝。HTTP/2 為了減少這部分開銷蜻势,采用了HPACK 頭部壓縮算法對(duì)Header進(jìn)行壓縮。

image

服務(wù)端推送

簡單來講就是當(dāng)用戶的瀏覽器和服務(wù)器在建立連接后鹉胖,服務(wù)器主動(dòng)將一些資源推送給瀏覽器并緩存起來的機(jī)制握玛。有了緩存,當(dāng)瀏覽器想要訪問已緩存的資源的時(shí)候就可以直接從緩存中讀取了甫菠。

image

備注:更多關(guān)于HTTP協(xié)議的資料請(qǐng)參考網(wǎng)上其他博文喔~

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末挠铲,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子寂诱,更是在濱河造成了極大的恐慌拂苹,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,682評(píng)論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件痰洒,死亡現(xiàn)場離奇詭異瓢棒,居然都是意外死亡浴韭,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,277評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門脯宿,熙熙樓的掌柜王于貴愁眉苦臉地迎上來念颈,“玉大人,你說我怎么就攤上這事连霉×穹迹” “怎么了翠语?”我有些...
    開封第一講書人閱讀 165,083評(píng)論 0 355
  • 文/不壞的土叔 我叫張陵点骑,是天一觀的道長。 經(jīng)常有香客問我黑滴,道長菜谣,這世上最難降的妖魔是什么尾膊? 我笑而不...
    開封第一講書人閱讀 58,763評(píng)論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮抓谴,結(jié)果婚禮上癌压,老公的妹妹穿的比我還像新娘滩届。我一直安慰自己丐吓,他們只是感情好术健,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,785評(píng)論 6 392
  • 文/花漫 我一把揭開白布荞估。 她就那樣靜靜地躺著,像睡著了一般飞醉。 火紅的嫁衣襯著肌膚如雪缅帘。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,624評(píng)論 1 305
  • 那天失暂,我揣著相機(jī)與錄音弟塞,去河邊找鬼。 笑死霉涨,一個(gè)胖子當(dāng)著我的面吹牛笙瑟,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播错洁,決...
    沈念sama閱讀 40,358評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼描睦,長吁一口氣:“原來是場噩夢啊……” “哼忱叭!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起虚缎,我...
    開封第一講書人閱讀 39,261評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后值桩,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體携栋,經(jīng)...
    沈念sama閱讀 45,722評(píng)論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,900評(píng)論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片咽筋。...
    茶點(diǎn)故事閱讀 40,030評(píng)論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡虱痕,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出略就,到底是詐尸還是另有隱情表牢,我是刑警寧澤崔兴,帶...
    沈念sama閱讀 35,737評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站堰燎,受9級(jí)特大地震影響秆剪,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜钾挟,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,360評(píng)論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望罐栈。 院中可真熱鬧,春花似錦泥畅、人聲如沸荠诬。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,941評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽柑贞。三九已至方椎,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間钧嘶,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,057評(píng)論 1 270
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,237評(píng)論 3 371
  • 正文 我出身青樓,卻偏偏與公主長得像抱怔,于是被迫代替她去往敵國和親康二。 傳聞我的和親對(duì)象是個(gè)殘疾皇子产雹,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,976評(píng)論 2 355

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