你需要掌握的http知識(shí)

零炬丸、為什么要學(xué)

回答這個(gè)問(wèn)題很簡(jiǎn)單秆麸,因?yàn)槊嬖嚬贂?huì)問(wèn)初嘹,而且還問(wèn)的不少及汉!相信經(jīng)歷過(guò)面試的同學(xué)基本都被問(wèn)過(guò)http緩存沮趣,并由此展開(kāi)一些列問(wèn)答。當(dāng)然學(xué)習(xí)好http還可以 幫你快速排查一些問(wèn)題坷随,比如安全問(wèn)題房铭。本文將羅列一系列知識(shí)點(diǎn),盡量覆蓋各個(gè)方面温眉,對(duì)每個(gè)點(diǎn)不會(huì)詳細(xì)講解缸匪,但是會(huì)提供一些優(yōu)秀的文章鏈接供大家深入學(xué)習(xí)。此外大家可以查看http技能圖譜來(lái)更直觀的查看相關(guān)知識(shí)點(diǎn)类溢。

一凌蔬、基礎(chǔ)知識(shí)

與http相關(guān)的TCP、IP闯冷、DNS砂心、url、uri

1.IP

IP地址是我們很熟悉的東西蛇耀,最常見(jiàn)的的就是127.0.0.1辩诞。我們都知道連接網(wǎng)絡(luò)后,每臺(tái)機(jī)器都會(huì)有不同的IP地址纺涤,也有自己的mac地址(這個(gè)地址是硬件寫(xiě)死的)译暂,那么我們傳輸信息的時(shí)候只要知道對(duì)方的IP地址,然后再和mac地址配對(duì)就基本可以確定接受信息方撩炊;而傳輸過(guò)程中我們肯定是希望信息高效傳遞過(guò)去外永,那么傳輸方式以及傳輸路徑就要找到最好的方式。IP協(xié)議就是做這些事情的拧咳,IP是指IP協(xié)議而不是我們常常說(shuō)的IP地址伯顶,它位于網(wǎng)絡(luò)層,所要做的事情主要是以下三點(diǎn):
1)尋址和路由;
2)傳遞服務(wù)砾淌;
3)數(shù)據(jù)包的分片和重組啦撮;

2.TCP

首先按照分層,TCP位于傳輸層汪厨,提供字節(jié)流服務(wù)赃春。那么什么是字節(jié)流呢?網(wǎng)絡(luò)傳輸數(shù)據(jù)就像汽車運(yùn)輸貨物一樣劫乱,比如我們運(yùn)輸?shù)氖切盘?hào)塔织中,這么大不可能一下子運(yùn)到目的地,這時(shí)候就需要一部分一部分運(yùn)過(guò)去衷戈,再組裝起來(lái)狭吼。而TCP確保數(shù)據(jù)能到達(dá)目的地。運(yùn)輸貨物我們打個(gè)就可以通知是否送到了殖妇,TCP要用什么方式呢刁笙?看圖說(shuō)話


tcp三次握手.png

還有四次揮手

3.DNS

我們要訪問(wèn)一臺(tái)服務(wù)器的東西,需要知道它的地址谦趣,IP地址可以作為一個(gè)標(biāo)識(shí)疲吸,但是四個(gè)數(shù)字是很不好記的,因此誕生了域名這個(gè)東西前鹅,比如www.qq.com摘悴,我們可以訪問(wèn)到騰訊主頁(yè),但這個(gè)是怎么找到對(duì)應(yīng)到騰訊的服務(wù)器呢舰绘?DNS服務(wù)就是干這個(gè)的蹂喻,它處于應(yīng)用層,當(dāng)然它也可以通過(guò)IP來(lái)查找對(duì)應(yīng)的域名捂寿。

4.URL和URI

URL: 統(tǒng)一資源定位符
URI: 統(tǒng)計(jì)資源標(biāo)識(shí)符
URI用來(lái)標(biāo)識(shí)某個(gè)互聯(lián)網(wǎng)資源口四,而URL是資源的位置,所以URL是URI的子集者蠕。這里知道簡(jiǎn)單區(qū)別即可窃祝。

二、http報(bào)文

http報(bào)文分為請(qǐng)求報(bào)文和響應(yīng)報(bào)文踱侣,HTTP請(qǐng)求報(bào)文:一個(gè)HTTP請(qǐng)求報(bào)文由請(qǐng)求行粪小、請(qǐng)求頭部、空行和請(qǐng)求數(shù)據(jù)4部分組成抡句。HTTP響應(yīng)報(bào)文:由三部分組成:狀態(tài)行探膊、消息報(bào)頭、響應(yīng)正文待榔。綜合兩種報(bào)文逞壁,我們把報(bào)文分為一下結(jié)構(gòu)


image.png
1.請(qǐng)求行

主要呈現(xiàn)請(qǐng)求的基本信息流济,包括請(qǐng)求的目標(biāo),協(xié)議版本腌闯,以及請(qǐng)求方法绳瘟。目標(biāo)就是一個(gè)url,比如我們要請(qǐng)求的網(wǎng)址或者跟后端協(xié)定好的接口地址姿骏。協(xié)議版本指http1.0糖声、http1.1等。請(qǐng)求方法最常見(jiàn)的GET分瘦、POST蘸泻,在http1.1總共有八種,這里不再一一闡述嘲玫,最常見(jiàn)的GET悦施、POST區(qū)別可以參考這篇文章

2.狀態(tài)行

狀態(tài)行就主要表示請(qǐng)求結(jié)果了,這里主要涉及狀態(tài)碼后面第三部分會(huì)說(shuō)到

3.首部字段

這里首部字段就有通用首部字段去团、請(qǐng)求首部字段以及響應(yīng)首部字段三種抡诞。
常用的首部字段比如Date(日期),Pragma渗勘、cache-control(緩存相關(guān))沐绒,Upgrade(協(xié)議升級(jí)俩莽,比如使用websocket)等旺坠。
請(qǐng)求首部字段比如Accept-*系列(表示優(yōu)先級(jí)的,Charset字符集扮超,Encoding編碼取刃,Language語(yǔ)言等),緩存類的(Etag和modified相關(guān))出刷,referer(請(qǐng)求方)等璧疗。
相應(yīng)首部字段比如緩存相關(guān)(Etag和modified相關(guān)),服務(wù)器信息(Server)馁龟,重定向(Location)等崩侠。

4.其他

http中未定義的一些字段,比如cookie

5.報(bào)文主體

請(qǐng)求報(bào)文主要是請(qǐng)求信息坷檩,query却音、body參數(shù)等。響應(yīng)報(bào)文主要是服務(wù)器返回的信息矢炼。

三系瓢、狀態(tài)碼

1xx:

信息類型,表示在處理了句灌。

2xx:

成功類型夷陋。比如常見(jiàn)的200,服務(wù)器處理成功但是不返回實(shí)體信息的204等。

3xx:

需要附加操作的骗绕,比如重定向(301永久重定向藐窄,302臨時(shí)重定向)和使用緩存(304,這里結(jié)合幾個(gè)首部字段使用酬土,具體可以參考http緩存

4xx:

客戶端錯(cuò)誤枷邪,比如參數(shù)錯(cuò)誤(400),認(rèn)證失敗(401)诺凡,沒(méi)有訪問(wèn)權(quán)限(403)东揣,資源不存在(404)等

5xx:

服務(wù)器錯(cuò)誤,比如服務(wù)端執(zhí)行錯(cuò)誤或者故障(500)腹泌,服務(wù)器暫時(shí)無(wú)法處理(503)嘶卧,超時(shí)(504),協(xié)議有問(wèn)題(505)等

三凉袱、身份認(rèn)證

身份認(rèn)證主要有以下五種方式
1.承載用戶身份信息的HTTP首部(比如referer)
2.客戶端IP地址跟蹤芥吟,通過(guò)用戶的IP地址對(duì)其進(jìn)行識(shí)別
3.用戶登錄,用認(rèn)證方式來(lái)識(shí)別用戶(這里需要了解token機(jī)制)
4.胖URL专甩,一種在URL中嵌入識(shí)別信息的技術(shù)
5.cookie钟鸵,一種功能強(qiáng)大且高效的持久身份識(shí)別技術(shù)
詳細(xì)了解

四、安全

1.請(qǐng)求頭中的安全機(jī)制

CSP策略
可以采用請(qǐng)求頭設(shè)置方式
Content-Security-Policy: policy
Content-Security-Policy: default-src 'self'(自定義)
當(dāng)然也可以在meta標(biāo)簽中設(shè)置涤躲,比如<meta http-equiv="Content-Security-Policy" content="default-src 'self'; img-src https://*; child-src 'none';">(來(lái)自mdn)棺耍。
X-Frame-Options
防止點(diǎn)擊劫持
X-XSS-Protection
控制瀏覽器XSS防止的開(kāi)關(guān)

2.cookie安全

比如cookie加密,設(shè)置HttpOnly和secure

五种樱、其他

https:四次握手蒙袍,ssl/tls協(xié)議,加密等嫩挤。
http2:優(yōu)勢(shì)害幅,多路復(fù)用、頭部壓縮岂昭、流的優(yōu)先級(jí)等以现。詳細(xì)
http3: 可以了解下。詳細(xì)

六约啊、總結(jié)

這里只針對(duì)http我們需要掌握的基本信息做一個(gè)大概的總結(jié)邑遏,具體的某方面知識(shí)建議查看書(shū)籍去了解,雖然我們?cè)诰帉?xiě)代碼(寫(xiě)bug中)過(guò)程中幾乎不會(huì)用到http棍苹,但是我們的項(xiàng)目運(yùn)行卻是離不開(kāi)它无宿,因此掌握基本的http對(duì)性能優(yōu)化,安全等都是很有幫助的枢里。有書(shū)寫(xiě)錯(cuò)誤或者解釋錯(cuò)誤的歡迎指出孽鸡!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末蹂午,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子彬碱,更是在濱河造成了極大的恐慌豆胸,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,968評(píng)論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件巷疼,死亡現(xiàn)場(chǎng)離奇詭異晚胡,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)嚼沿,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,601評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門(mén)估盘,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人骡尽,你說(shuō)我怎么就攤上這事遣妥。” “怎么了攀细?”我有些...
    開(kāi)封第一講書(shū)人閱讀 153,220評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵箫踩,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我谭贪,道長(zhǎng)境钟,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 55,416評(píng)論 1 279
  • 正文 為了忘掉前任俭识,我火速辦了婚禮慨削,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘鱼的。我一直安慰自己理盆,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,425評(píng)論 5 374
  • 文/花漫 我一把揭開(kāi)白布凑阶。 她就那樣靜靜地躺著,像睡著了一般衷快。 火紅的嫁衣襯著肌膚如雪宙橱。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 49,144評(píng)論 1 285
  • 那天蘸拔,我揣著相機(jī)與錄音师郑,去河邊找鬼。 笑死调窍,一個(gè)胖子當(dāng)著我的面吹牛宝冕,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播邓萨,決...
    沈念sama閱讀 38,432評(píng)論 3 401
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼地梨,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼菊卷!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起宝剖,我...
    開(kāi)封第一講書(shū)人閱讀 37,088評(píng)論 0 261
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤洁闰,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后万细,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體扑眉,經(jīng)...
    沈念sama閱讀 43,586評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,028評(píng)論 2 325
  • 正文 我和宋清朗相戀三年赖钞,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了腰素。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,137評(píng)論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡雪营,死狀恐怖耸弄,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情卓缰,我是刑警寧澤计呈,帶...
    沈念sama閱讀 33,783評(píng)論 4 324
  • 正文 年R本政府宣布,位于F島的核電站征唬,受9級(jí)特大地震影響捌显,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜总寒,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,343評(píng)論 3 307
  • 文/蒙蒙 一扶歪、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧摄闸,春花似錦善镰、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,333評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至熏兄,卻和暖如春品洛,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背摩桶。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,559評(píng)論 1 262
  • 我被黑心中介騙來(lái)泰國(guó)打工桥状, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人硝清。 一個(gè)月前我還...
    沈念sama閱讀 45,595評(píng)論 2 355
  • 正文 我出身青樓辅斟,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親芦拿。 傳聞我的和親對(duì)象是個(gè)殘疾皇子士飒,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,901評(píng)論 2 345

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