Http報(bào)文結(jié)構(gòu)及http,https,http1.0,http1.1,http2.0區(qū)別

Http請(qǐng)求報(bào)文結(jié)構(gòu)

u=2478327317,466272130&fm=27&gp=0.jpg

常用字段描述

請(qǐng)求行

請(qǐng)求行由方法字段漩氨、URL 字段 和HTTP 協(xié)議版本字段 3 個(gè)部分組成,他們之間使用空格隔開(kāi)偶垮。常用的 HTTP 請(qǐng)求方法有 GET张咳、POST帝洪、HEAD、PUT脚猾、DELETE葱峡、OPTIONS、TRACE婚陪、CONNECT;

請(qǐng)求頭部

請(qǐng)求頭部由關(guān)鍵字/值對(duì)組成族沃,每行一對(duì)频祝,關(guān)鍵字和值用英文冒號(hào)“:”分隔泌参。請(qǐng)求頭部通知服務(wù)器有關(guān)于客戶端請(qǐng)求的信息

典型的請(qǐng)求頭有:

Accept:用于告訴服務(wù)器,客戶機(jī)支持的數(shù)據(jù)類型
Accept-Charset:用于告訴服務(wù)器常空,客戶機(jī)所采用的編碼
Accept-Encoding:用于告訴服務(wù)器沽一,客戶機(jī)支持的數(shù)據(jù)壓縮格式
Accept-Language:客戶機(jī)的語(yǔ)言環(huán)境
Host:客戶機(jī)通過(guò)這個(gè)頭告訴服務(wù)器,想訪問(wèn)的主機(jī)名
If-Modified-Since:客戶機(jī)通過(guò)這個(gè)頭告訴服務(wù)器漓糙,資源的緩存時(shí)間
Referer:客戶機(jī)通過(guò)這個(gè)頭告訴服務(wù)器铣缠,它是從哪個(gè)資源來(lái)訪問(wèn)服務(wù)器的(防盜鏈)
User-Agent:客戶機(jī)通過(guò)這個(gè)頭告訴服務(wù)器,客戶機(jī)的軟件環(huán)境
Cookie:客戶機(jī)通過(guò)這個(gè)頭可以向服務(wù)器帶數(shù)據(jù)

空行

最后一個(gè)請(qǐng)求頭之后是一個(gè)空行昆禽,發(fā)送回車符和換行符蝗蛙,通知服務(wù)器以下不再有請(qǐng)求頭;

請(qǐng)求包體

請(qǐng)求包體不在 GET 方法中使用,而是在POST 方法中使用醉鳖。POST 方法適用于需要客戶填寫表單的場(chǎng)合捡硅。與請(qǐng)求包體相關(guān)的最常使用的是包體類型 Content-Type 和包體長(zhǎng)度 Content-Length;

Http響應(yīng)報(bào)文結(jié)構(gòu)

u=3933338520,3321962169&fm=27&gp=0.jpg

常用字段描述

狀態(tài)行

狀態(tài)行由 HTTP 協(xié)議版本字段、狀態(tài)碼和狀態(tài)碼的描述文本 3 個(gè)部分組成盗棵,他們之間使用空格隔開(kāi);

狀態(tài)碼

由三位數(shù)字組成壮韭,第一位數(shù)字表示響應(yīng)的類型,常用的狀態(tài)碼有五大類如下所示:
  1xx:表示服務(wù)器已接收了客戶端請(qǐng)求纹因,客戶端可繼續(xù)發(fā)送請(qǐng)求;
  2xx:表示服務(wù)器已成功接收到請(qǐng)求并進(jìn)行處理;
  3xx:表示服務(wù)器要求客戶端重定向;
  4xx:表示客戶端的請(qǐng)求有非法內(nèi)容;
  5xx:表示服務(wù)器未能正常處理客戶端的請(qǐng)求而出現(xiàn)意外錯(cuò)誤;

響應(yīng)頭部:

典型的響應(yīng)頭部有:

Location:這個(gè)頭配合302狀態(tài)碼使用喷屋,用于告訴客戶找誰(shuí)
Server:服務(wù)器通過(guò)這個(gè)頭,告訴瀏覽器服務(wù)器的類型
Content-Encoding:服務(wù)器通過(guò)這個(gè)頭瞭恰,數(shù)據(jù)的壓縮格式
Content-Length:服務(wù)器通過(guò)這個(gè)頭屯曹,告訴瀏覽器回送數(shù)據(jù)的長(zhǎng)度
Content-Type:服務(wù)器通過(guò)這個(gè)頭,告訴瀏覽器回送數(shù)據(jù)的類型
Last-Modified:服務(wù)器通過(guò)這個(gè)頭惊畏,告訴瀏覽器當(dāng)前資源緩存時(shí)間
Refresh:服務(wù)器通過(guò)這個(gè)頭恶耽,告訴瀏覽器隔多長(zhǎng)時(shí)間刷新一次
Content-Disposition:服務(wù)器通過(guò)這個(gè)頭,告訴瀏覽器以下載方式打開(kāi)數(shù)據(jù)
Transfer-Encoding:服務(wù)器通過(guò)這個(gè)頭陕截,告訴瀏覽器數(shù)據(jù)的傳送格式
ETag:…
Expires:服務(wù)器通過(guò)這個(gè)頭驳棱,告訴瀏覽器把回送的資源緩存多長(zhǎng)時(shí)間,-1或0农曲,則是不緩存
Cache-Control:no-cache
Pragma:no-cache 服務(wù)器通過(guò)以上兩個(gè)頭社搅,也是控制瀏覽器不要緩存數(shù)據(jù)

響應(yīng)包體

服務(wù)器返回給客戶端的文本信息;

簡(jiǎn)述Http工作原理

HTTP 協(xié)議采用請(qǐng)求/響應(yīng)模型驻债。客戶端向服務(wù)器發(fā)送一個(gè)請(qǐng)求報(bào)文形葬,服務(wù)器以一個(gè)狀態(tài)作為響應(yīng)合呐。

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

1.客戶端連接到web服務(wù)器:HTTP 客戶端與web服務(wù)器建立一個(gè) TCP 連接;
2.客戶端向服務(wù)器發(fā)起 HTTP 請(qǐng)求:通過(guò)已建立的TCP 連接,客戶端向服務(wù)器發(fā)送一個(gè)請(qǐng)求報(bào)文;
3.服務(wù)器接收 HTTP 請(qǐng)求并返回 HTTP 響應(yīng):服務(wù)器解析請(qǐng)求笙以,定位請(qǐng)求資源淌实,服務(wù)器將資源副本寫到 TCP 連接,由客戶端讀取;
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)求;

例如:在瀏覽器地址欄鍵入U(xiǎn)RL,按下回車之后會(huì)經(jīng)歷以下流程:

1老玛、瀏覽器向DNS 服務(wù)器請(qǐng)求解析該 URL 中的域名所對(duì)應(yīng)的 IP 地址;
2淤年、解析出 IP 地址后,根據(jù)該 IP 地址和默認(rèn)端口 80蜡豹,和服務(wù)器建立 TCP 連接;
3麸粮、瀏覽器發(fā)出讀取文件(URL 中域名后面部分對(duì)應(yīng)的文件)的HTTP 請(qǐng)求,該請(qǐng)求報(bào)文作為 TCP 三次握手的第三個(gè)報(bào)文的數(shù)據(jù)發(fā)送給服務(wù)器;
4镜廉、服務(wù)器對(duì)瀏覽器請(qǐng)求作出響應(yīng)弄诲,并把對(duì)應(yīng)的 html 文本發(fā)送給瀏覽器;
5、釋放 TCP 連接;
6桨吊、瀏覽器將該 html 文本并顯示內(nèi)容;

HTTP,HTTP2.0,SPDY,HTTPS區(qū)別

詳情可以參考這篇文章

HTTP1.0和HTTP1.1的一些區(qū)別

1. 緩存處理

在HTTP1.0中主要使用header里的If-Modified-Since,Expires來(lái)做為緩存判斷的標(biāo)準(zhǔn)威根,HTTP1.1則引入了更多的緩存控制策略例如Entity tag,If-Unmodified-Since, If-Match, If-None-Match等更多可供選擇的緩存頭來(lái)控制緩存策略视乐。

2. 帶寬優(yōu)化及網(wǎng)絡(luò)連接的使用

HTTP1.0中洛搀,存在一些浪費(fèi)帶寬的現(xiàn)象,例如客戶端只是需要某個(gè)對(duì)象的一部分佑淀,而服務(wù)器卻將整個(gè)對(duì)象送過(guò)來(lái)了留美,并且不支持?jǐn)帱c(diǎn)續(xù)傳功能,HTTP1.1則在請(qǐng)求頭引入了range頭域伸刃,它允許只請(qǐng)求資源的某個(gè)部分谎砾,即返回碼是206(Partial Content),這樣就方便了開(kāi)發(fā)者自由的選擇以便于充分利用帶寬和連接捧颅。

3. 錯(cuò)誤通知的管理

在HTTP1.1中新增了24個(gè)錯(cuò)誤狀態(tài)響應(yīng)碼景图,如409(Conflict)表示請(qǐng)求的資源與資源的當(dāng)前狀態(tài)發(fā)生沖突;410(Gone)表示服務(wù)器上的某個(gè)資源被永久性的刪除碉哑。

4. 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地址。HTTP1.1的請(qǐng)求消息和響應(yīng)消息都應(yīng)支持Host頭域笛粘,且請(qǐng)求消息中如果沒(méi)有Host頭域會(huì)報(bào)告一個(gè)錯(cuò)誤(400 Bad Request)趁怔。

5. 長(zhǎng)連接

HTTP 1.1支持長(zhǎng)連接(PersistentConnection)和請(qǐng)求的流水線(Pipelining)處理,在一個(gè)TCP連接上可以傳送多個(gè)HTTP請(qǐng)求和響應(yīng)薪前,減少了建立和關(guān)閉連接的消耗和延遲润努,在HTTP1.1中默認(rèn)開(kāi)啟Connection: keep-alive,一定程度上彌補(bǔ)了HTTP1.0每次請(qǐng)求都要?jiǎng)?chuàng)建連接的缺點(diǎn)序六。

HTTPS與HTTP的一些區(qū)別

  1. HTTPS協(xié)議需要到ca申請(qǐng)證書
  2. HTTP是超文本傳輸協(xié)議任连,信息是明文傳輸,HTTPS 則是具有安全性的ssl加密傳輸協(xié)議例诀。
  3. HTTP和HTTPS使用的是完全不同的連接方式,用的端口也不一樣裁着,前者是80繁涂,后者是443。
  4. HTTPS的連接很簡(jiǎn)單二驰,HTTPS協(xié)議是由SSL+HTTP協(xié)議構(gòu)建的可進(jìn)行加密傳輸扔罪、身份認(rèn)證的網(wǎng)絡(luò)協(xié)議,比http協(xié)議安全桶雀。

SPDY和HTTP2.0

SPDY
  1. 降低延遲矿酵,針對(duì)HTTP高延遲的問(wèn)題,SPDY優(yōu)雅的采取了多路復(fù)用(multiplexing)矗积。多路復(fù)用通過(guò)多個(gè)請(qǐng)求stream共享一個(gè)tcp連接的方式
  2. 請(qǐng)求優(yōu)先級(jí)(request prioritization)全肮。多路復(fù)用帶來(lái)一個(gè)新的問(wèn)題是,在連接共享的基礎(chǔ)之上有可能會(huì)導(dǎo)致關(guān)鍵請(qǐng)求被阻塞棘捣。SPDY允許給每個(gè)request設(shè)置優(yōu)先級(jí)辜腺,這樣重要的請(qǐng)求就會(huì)優(yōu)先得到響應(yīng)。比如瀏覽器加載首頁(yè)乍恐,首頁(yè)的html內(nèi)容應(yīng)該優(yōu)先展示评疗,之后才是各種靜態(tài)資源文件,腳本文件等加載茵烈,這樣可以保證用戶能第一時(shí)間看到網(wǎng)頁(yè)內(nèi)容百匆。
  3. header壓縮。前面提到HTTP1.x的header很多時(shí)候都是重復(fù)多余的呜投。選擇合適的壓縮算法可以減小包的大小和數(shù)量加匈。
  4. 基于HTTPS的加密協(xié)議傳輸寄症,提高了傳輸數(shù)據(jù)的可靠性。
  5. 服務(wù)端(server push)矩动,采用了SPDY的網(wǎng)頁(yè)有巧,例如我的網(wǎng)頁(yè)有一個(gè)sytle.css的請(qǐng)求,在客戶端收到sytle.css數(shù)據(jù)的同時(shí)悲没,服務(wù)端會(huì)將sytle.js的文件**給客戶端篮迎,當(dāng)客戶端再次嘗試獲取sytle.js時(shí)就可以直接從緩存中獲取到,不用再發(fā)請(qǐng)求了.

HTTP2.0

HTTP2.0可以說(shuō)是SPDY的升級(jí)版(其實(shí)原本也是基于SPDY設(shè)計(jì)的)示姿,但是甜橱,HTTP2.0 跟 SPDY 仍有不同的地方,主要是以下兩點(diǎn):
? HTTP2.0 支持明文 HTTP 傳輸栈戳,而 SPDY 強(qiáng)制使用 HTTPS
? HTTP2.0 消息頭的壓縮算法采用 HPACK岂傲,而非 SPDY 采用的 DEFLATE

關(guān)于http1.1 和http2.0的詳細(xì)區(qū)別分析,可以參考這篇文章

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末子檀,一起剝皮案震驚了整個(gè)濱河市镊掖,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌褂痰,老刑警劉巖亩进,帶你破解...
    沈念sama閱讀 212,542評(píng)論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異缩歪,居然都是意外死亡归薛,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,596評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門匪蝙,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)主籍,“玉大人,你說(shuō)我怎么就攤上這事逛球∏г” “怎么了?”我有些...
    開(kāi)封第一講書人閱讀 158,021評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵需忿,是天一觀的道長(zhǎng)诅炉。 經(jīng)常有香客問(wèn)我,道長(zhǎng)屋厘,這世上最難降的妖魔是什么涕烧? 我笑而不...
    開(kāi)封第一講書人閱讀 56,682評(píng)論 1 284
  • 正文 為了忘掉前任,我火速辦了婚禮汗洒,結(jié)果婚禮上议纯,老公的妹妹穿的比我還像新娘。我一直安慰自己溢谤,他們只是感情好瞻凤,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,792評(píng)論 6 386
  • 文/花漫 我一把揭開(kāi)白布憨攒。 她就那樣靜靜地躺著,像睡著了一般阀参。 火紅的嫁衣襯著肌膚如雪肝集。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書人閱讀 49,985評(píng)論 1 291
  • 那天蛛壳,我揣著相機(jī)與錄音杏瞻,去河邊找鬼。 笑死衙荐,一個(gè)胖子當(dāng)著我的面吹牛捞挥,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播忧吟,決...
    沈念sama閱讀 39,107評(píng)論 3 410
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼砌函,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了溜族?” 一聲冷哼從身側(cè)響起讹俊,我...
    開(kāi)封第一講書人閱讀 37,845評(píng)論 0 268
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎斩祭,沒(méi)想到半個(gè)月后劣像,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,299評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡摧玫,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,612評(píng)論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了绑青。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片诬像。...
    茶點(diǎn)故事閱讀 38,747評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖闸婴,靈堂內(nèi)的尸體忽然破棺而出坏挠,到底是詐尸還是另有隱情,我是刑警寧澤邪乍,帶...
    沈念sama閱讀 34,441評(píng)論 4 333
  • 正文 年R本政府宣布降狠,位于F島的核電站,受9級(jí)特大地震影響庇楞,放射性物質(zhì)發(fā)生泄漏榜配。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,072評(píng)論 3 317
  • 文/蒙蒙 一吕晌、第九天 我趴在偏房一處隱蔽的房頂上張望蛋褥。 院中可真熱鬧,春花似錦睛驳、人聲如沸烙心。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 30,828評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)淫茵。三九已至爪瓜,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間匙瘪,已是汗流浹背铆铆。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 32,069評(píng)論 1 267
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留辆苔,地道東北人算灸。 一個(gè)月前我還...
    沈念sama閱讀 46,545評(píng)論 2 362
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像驻啤,于是被迫代替她去往敵國(guó)和親菲驴。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,658評(píng)論 2 350

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