圖解HTTP(讀書筆記)

HTTP超文本傳輸協(xié)議

總綱如下(自整理,比較不重要的章節(jié)省略):


圖解HTTP總綱


第一章?了解Web及網(wǎng)絡(luò)基礎(chǔ)

關(guān)于部分概念

?通常我們使用的網(wǎng)絡(luò)是在TCP/IP協(xié)議族的基礎(chǔ)上運(yùn)行的液荸,HTTP屬于它內(nèi)部的一個子集。在這邊就不多介紹TCP/IP了,關(guān)于它,可以看更詳實的專業(yè)書屁商,如謝希仁老師所著的《計算機(jī)網(wǎng)絡(luò)》(第七版)

FTP(File Transfer Protocol)文件傳輸協(xié)議

DNS(Domain Name System)服務(wù)提供域名到IP地址之間的解析服務(wù)

URI(Uniform Resource Identifier)統(tǒng)一資源標(biāo)識符绢彤,URI用字符串標(biāo)識某一互聯(lián)網(wǎng)資源

URL(Uniform Resourcem Locator)統(tǒng)一資源定位符七问,URL表示資源的地點(互聯(lián)網(wǎng)上所處的位置)。URL是URI的子集茫舶。

絕對URI的格式:

絕對URI格式

第二章?簡單的HTTP協(xié)議

HTTP協(xié)議規(guī)定械巡,請求從客戶端發(fā)出,最后服務(wù)器端響應(yīng)該請求并返回饶氏。換句話說讥耗,肯定是從客戶端開始建立通信的,服務(wù)器端在沒有收到接收到請求之前不會發(fā)送響應(yīng)疹启。

HTTP是一種無狀態(tài)協(xié)議古程,即自身不對請求和響應(yīng)之間的通信狀態(tài)進(jìn)行保存(優(yōu)點是服務(wù)器不必保存狀態(tài),可以減少服務(wù)器的CPU及內(nèi)存資源的消耗)喊崖。后面為了實現(xiàn)期望的保持狀態(tài)功能引入了Cookie技術(shù)挣磨。

HTTP請求報文的組成:請求方法,請求URI荤懂,協(xié)議版本茁裙,可選的請求首字段,內(nèi)容實體

響應(yīng)報文的組成:協(xié)議版本节仿,狀態(tài)碼晤锥,用以解釋狀態(tài)碼的原因短語,可選的響應(yīng)首部字段廊宪,實體主體

HTTP方法:

? ? ①GET:獲取資源

? ? ②POST:傳輸實體主體

? ? ③PUT:傳輸文件矾瘾,上傳文件

? ? ④HEAD:和GET方法一樣,只是不返回報文主體部分箭启。用于確認(rèn)URI的有效性及資源更新的日期時間

? ? ⑤DELETE:刪除文件霜威,與PUT相反,一般不用

? ? ⑥OPTIONS:詢問支持的方法册烈,用來查詢針對請求URI指定的資源支持的方法

? ? ⑦TRACE:追蹤路徑戈泼,讓W(xué)eb服務(wù)器端將之前的請求通信環(huán)回給客戶端的方法(客戶端TRACE方法被用來確認(rèn)連接過程中發(fā)生的一系列操作,一般不用赏僧,容易引起XST跨站追蹤攻擊)

? ? ⑧CONNECT:要求用隧道協(xié)議連接代理

TCP短鏈接:HTTP的初始版本中大猛,每進(jìn)行一次HTTP通信就要斷開一次連接,通信開銷大

TCP長連接:只要任意一端沒有明確提出斷開連接淀零,則保持TCP連接狀態(tài)挽绩,HTTP1.1中,所有的默認(rèn)為持久連接(管線化方式發(fā)送成為可能驾中,可以并行發(fā)送多個請求)

第三章 HTTP報文內(nèi)的HTTP信息

報文結(jié)構(gòu):

報文結(jié)構(gòu)

HTTP報文中使用多部分對象集合時:

? ? ①需要在首部字段里加Content-type

? ? ②使用boundary字符串來劃分多部分對象集合指明的各類實體

? ? ③多部分對象集合的每個部分類型中唉堪,都可以含有首部字段

第四章?返回結(jié)果的HTTP狀態(tài)碼


狀態(tài)碼

2XX?成功

? ? ①200 OK?正常

? ? ②204 No Content?服務(wù)器接受的請求已成功處理模聋,但返回的響應(yīng)報文中不含實體的主體部分

? ? ③206 Partial Content?表示客戶端進(jìn)行了范圍請求,服務(wù)器成功執(zhí)行了這部分的GET請求

3XX?重定向

? ? ①301 Moved Permanently 永久性重定向唠亚。請求的資源已被分配了新的URI链方,以后應(yīng)使用資源現(xiàn)在所指的URI

? ? ②302 Found?臨時性重定向。

? ? ③303 See Other?請求的資源存在著另一個URI灶搜,應(yīng)使用GET方法

? ? ④304 Not Modified? 表示客戶端發(fā)送附帶條件的請求時祟蚀,服務(wù)器允許請求訪問資源,但未滿足條件的情況

? ? ⑤307 Temporary Redirect?臨時重定向與302有相同含義割卖。

? ? (當(dāng)301,302,303響應(yīng)狀態(tài)碼返回時前酿,幾乎所有的瀏覽器都會把POST改成GET,并刪除請求報文內(nèi)的主體之后請求會自動再次發(fā)送)

4XX?客戶端錯誤

? ? ①400 Bad Request?請求報文中存在語法錯誤

????②401 Unauthorized?請求需要有通過HTTP(BASIC認(rèn)證DIGEST認(rèn)證)認(rèn)證的認(rèn)證信息鹏溯,若之前已進(jìn)行過一次請求罢维,則表示用戶認(rèn)證失敗。

????③403 Forbidden?表明對請求資源的訪問被服務(wù)器拒絕了

? ? ④404 Not Found? 服務(wù)器上無法找到請求的資源

5XX?服務(wù)器錯誤

????①500 Internal Server Error?服務(wù)器端在執(zhí)行請求時發(fā)生了錯誤

????②503 Service Unavailable?服務(wù)器暫時處于超負(fù)載或正在進(jìn)行停機(jī)維護(hù)丙挽,現(xiàn)在無法處理請求

第五章 Web服務(wù)器

通信數(shù)據(jù)轉(zhuǎn)發(fā)程序

? ? ①代理 只轉(zhuǎn)發(fā)不改變URI肺孵,充當(dāng)中間人角色。但轉(zhuǎn)發(fā)時取试,需要附帶Via首部字段以標(biāo)記出經(jīng)過的主機(jī)信息(分類悬槽,一種是是否使用緩存:緩存代理怀吻,緩存服務(wù)器瞬浓;一種是是否會修改報文:透明代理,非透明代理)

? ? ②網(wǎng)關(guān)?客戶端與客戶端之間使用HTTP協(xié)議服務(wù)蓬坡,但與服務(wù)器之間可以提供非HTTP協(xié)議服務(wù)猿棉。故而可以提高通信安全性,工作機(jī)制與代理類似

? ? ③隧道?建立安全的通信線路屑咳,使用SSL等加密手段進(jìn)行通信

第六章 HTTP首部

HTTP協(xié)議的請求和響應(yīng)報文中必定包含HTTP首部萨赁,首部內(nèi)容為客戶端和服務(wù)器分別處理請求和響應(yīng)提供所需要的信息。

首部包含四類如下:


通用首部字段


請求首部字段


響應(yīng)首部字段


實體首部字段


部分筆記整理

通用首部字段:

1.Cache-Control :控制緩存的行為(請求/響應(yīng)):

? ? ①no-cache:強(qiáng)制向源服務(wù)器再次驗證

? ? ②no-store:不緩存請求或響應(yīng)的任何內(nèi)容

? ? ③......(private,public)

2.Connection:管理持久連接兆龙,控制不再轉(zhuǎn)發(fā)給代理的首部字段(例如connection:upgrade則把upgrade刪除再轉(zhuǎn)發(fā))

3.Date:日期

4.trailer:報文末端的首部一覽

5......

(no-cache可以在本地緩存杖爽,也可以在代理服務(wù)器緩存,但需要服務(wù)器驗證才可以紫皇,no-store則徹底禁用緩存)

關(guān)于Cookie管理的首部字段:

1.set-cookie:

? ? ①expires:指定瀏覽器可發(fā)送Cookie的有效期

? ? ②path:限制指定Cookie的發(fā)送范圍的文件目錄

? ? ③domain:不使用更安全

? ? ④secure:僅HTTPS才可以發(fā)送Cookie

? ? ⑤httponly:防止跨站腳本攻擊

2.......


第七章?確保Web安全的HTTPS

1.HTTP的缺點:

? ? ①通信使用明文可能會被竊聽(加密)

? ? ②不驗證通信方的身份可能遭遇偽裝(證書認(rèn)證)

? ? ③無法證明報文完整性慰安,可能遭到篡改(加密算法,數(shù)字簽名)

2.解決缺點即是HTTPS:

? ? ①HTTP+加密(SSL)+認(rèn)證+完整性保護(hù)=HTTPS

? ? ②HTTPS是身披SSL外殼的HTTP

? ? ③相互交換密鑰的公開密鑰加密技術(shù)

3.HTTPS采用混合加密機(jī)制

? ??HTTPS采用共享密鑰加密和公開密鑰加密兩者并用的混合加密機(jī)制聪铺,在交換密鑰環(huán)節(jié)使用公開密鑰加密方式化焕,之后的建立通信交換報文階段則使用共享密鑰加密方式。(提高處理速度)

4.公開密鑰證書由數(shù)字證書認(rèn)證機(jī)構(gòu)和其相關(guān)機(jī)關(guān)頒發(fā)

????流程如下:

? ? ①服務(wù)器運(yùn)營人員向數(shù)字證書認(rèn)證機(jī)構(gòu)提出公開密鑰的申請

? ? ②數(shù)字證書認(rèn)證機(jī)構(gòu)在判明提出申請者的身份之后铃剔,會對已申請的公開密鑰做數(shù)字簽名撒桨,然后分配這個已簽名的公開密鑰查刻,并將該公開密鑰放入公鑰證書后綁定在一起

? ? ③服務(wù)器會將這份由數(shù)字證書認(rèn)證機(jī)構(gòu)頒發(fā)的公鑰證書發(fā)送給客戶端,以進(jìn)行公開密鑰加密方式通信凤类。

? ? ④接到證書的客戶端可使用數(shù)字證書認(rèn)證機(jī)構(gòu)的公開密鑰穗泵,對那張證書上的數(shù)字簽名進(jìn)行驗證。

(多數(shù)瀏覽器開發(fā)商發(fā)布版本時踱蠢,會事先在內(nèi)部植入常用認(rèn)證機(jī)關(guān)的公開密鑰火欧,用以保證認(rèn)證機(jī)關(guān)的公開密鑰安全轉(zhuǎn)交到用戶客戶端)

5.完整HTTPS安全通信機(jī)制

? ? ①SSL握手階段:

? ? ? ? 步驟1:客戶端通過發(fā)送Client Hello報文開始SSL通信

? ? ? ? 步驟2:服務(wù)器可進(jìn)行SSL通信時,會以Server Hello報文作為應(yīng)答

? ? ? ? 步驟3:服務(wù)器發(fā)送Certificate報文茎截,報文中包括公開密鑰證書

? ? ? ? 步驟4:最后服務(wù)器發(fā)送Server Hello Done報文通知客戶端苇侵,最初的SSL握手協(xié)商結(jié)束

? ? ②SSL連接建立:

? ? ? ? 步驟5:SSL握手結(jié)束后,客戶端以Client Key Exchange報文作為回應(yīng)企锌。報文中包含通信加密中使用的一種被稱為Pre-master?secret的隨機(jī)密碼串榆浓。該報文已用步驟3中公開密鑰進(jìn)行加密。

? ? ? ? 步驟6:接著客戶端會發(fā)送Change Cipher Spec的報文撕攒。該報文會提示服務(wù)器陡鹃,在此報文之后的通信會采用Pre-master?secret密鑰加密

? ? ? ? 步驟7:客戶端發(fā)送Finished報文。該報文包含連接至今全部報文的整體校驗值抖坪。這次握手協(xié)商是否能夠成功萍鲸,要以服務(wù)器是否能夠正確解密該報文作為判定標(biāo)準(zhǔn)。

? ? ? ? 步驟8:服務(wù)器同樣發(fā)送Change Cipher Spec報文

? ? ? ? 步驟9:服務(wù)器同樣發(fā)送Finished報文

? ? ③HTTP通信建立:

? ? ? ? 步驟10:Finished報文交換完畢之后擦俐,SSL連接建立完成脊阴。通信受到SSL的保護(hù),從此開始應(yīng)用層協(xié)議的通信蚯瞧,發(fā)送HTTP請求嘿期。

? ? ? ? 步驟11:應(yīng)用層協(xié)議通信,即發(fā)送HTTP響應(yīng)埋合。

? ? ? ? 步驟12:最后由客戶端斷開連接备徐。斷開連接時,發(fā)送close_notify報文甚颂。

(在以上流程中蜜猾,應(yīng)用層發(fā)送數(shù)據(jù)時會附加一種叫做MAC的報文摘要,MAC能夠查知報文是否遭到篡改振诬,從而保護(hù)報文的完整性)

第八章?確認(rèn)訪問用戶身份的認(rèn)證

1.SSL客戶端認(rèn)證

? ??需要事先將客戶端證書分發(fā)給客戶端蹭睡,且客戶端必須安裝此證書,與上面的流程相似贷揽,這邊省略棠笑,一般會和基于表單認(rèn)證組合形成一種雙因素認(rèn)證來使用。

2.基于表單認(rèn)證

? ? 一般情況就是用戶賬號密碼

(大部分情況下認(rèn)證都是基于表單認(rèn)證禽绪,SSL客戶端認(rèn)證雖然具有高度安全性蓖救,但由于導(dǎo)入及維持費(fèi)用洪规,尚未普及)

3.Session管理及Cookie應(yīng)用

? ? 步驟1:客戶端把用戶ID和密碼等登陸信息放入報文的實體部分,通常以POST方法把請求發(fā)送給服務(wù)器循捺。而這時斩例,會使用HTTPS通信來進(jìn)行HTML表單畫面的顯示和用戶輸入數(shù)據(jù)的發(fā)送。

? ? 步驟2:服務(wù)器會發(fā)送用以識別用戶的Session ID从橘。通過驗證從客戶端發(fā)送過來的登陸信息進(jìn)行身份認(rèn)證念赶,然后把用戶認(rèn)證狀態(tài)與Session ID綁定后記錄在服務(wù)器端。

(Session ID使用難以推測的字符串恰力,同時服務(wù)器端也需要進(jìn)行有效期的管理叉谜,保證安全性。另外踩萎,為減輕跨站腳本攻擊XSS造成的損失停局,建議事先在Cookie內(nèi)加上httponly屬性)

? ? 步驟3:客戶端接收到從服務(wù)器端發(fā)來的Seeion ID后,會將其作為Cookie保存在本地


第九章?基于HTTP的功能追加協(xié)議

1.使用瀏覽器進(jìn)行全雙工通信的WebSocket

2.HTTP/2.0

3.web服務(wù)器管理文件的WebDAV

第十章?構(gòu)建Web內(nèi)容的技術(shù)(略)

第十一章 Web的攻擊技術(shù)

1.XSS跨站腳本攻擊

2.SQL注入攻擊

3.DDoS攻擊

4.······

(Web攻擊主要分為兩類主動攻擊和被動陷阱觸發(fā)攻擊香府,這邊基本上只是簡單的了解董栽,需要找一些書籍做更深入的探索)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市企孩,隨后出現(xiàn)的幾起案子锭碳,更是在濱河造成了極大的恐慌,老刑警劉巖勿璃,帶你破解...
    沈念sama閱讀 222,183評論 6 516
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件擒抛,死亡現(xiàn)場離奇詭異,居然都是意外死亡蝗柔,警方通過查閱死者的電腦和手機(jī)闻葵,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,850評論 3 399
  • 文/潘曉璐 我一進(jìn)店門民泵,熙熙樓的掌柜王于貴愁眉苦臉地迎上來癣丧,“玉大人,你說我怎么就攤上這事栈妆⌒脖啵” “怎么了?”我有些...
    開封第一講書人閱讀 168,766評論 0 361
  • 文/不壞的土叔 我叫張陵鳞尔,是天一觀的道長嬉橙。 經(jīng)常有香客問我,道長寥假,這世上最難降的妖魔是什么市框? 我笑而不...
    開封第一講書人閱讀 59,854評論 1 299
  • 正文 為了忘掉前任,我火速辦了婚禮糕韧,結(jié)果婚禮上枫振,老公的妹妹穿的比我還像新娘喻圃。我一直安慰自己,他們只是感情好粪滤,可當(dāng)我...
    茶點故事閱讀 68,871評論 6 398
  • 文/花漫 我一把揭開白布斧拍。 她就那樣靜靜地躺著,像睡著了一般杖小。 火紅的嫁衣襯著肌膚如雪肆汹。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,457評論 1 311
  • 那天予权,我揣著相機(jī)與錄音昂勉,去河邊找鬼。 笑死扫腺,一個胖子當(dāng)著我的面吹牛硼啤,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播斧账,決...
    沈念sama閱讀 40,999評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼谴返,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了咧织?” 一聲冷哼從身側(cè)響起嗓袱,我...
    開封第一講書人閱讀 39,914評論 0 277
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎习绢,沒想到半個月后渠抹,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,465評論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡闪萄,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,543評論 3 342
  • 正文 我和宋清朗相戀三年梧却,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片败去。...
    茶點故事閱讀 40,675評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡放航,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出圆裕,到底是詐尸還是另有隱情广鳍,我是刑警寧澤,帶...
    沈念sama閱讀 36,354評論 5 351
  • 正文 年R本政府宣布吓妆,位于F島的核電站赊时,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏行拢。R本人自食惡果不足惜祖秒,卻給世界環(huán)境...
    茶點故事閱讀 42,029評論 3 335
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧竭缝,春花似錦狐胎、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,514評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至松却,卻和暖如春暴浦,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背晓锻。 一陣腳步聲響...
    開封第一講書人閱讀 33,616評論 1 274
  • 我被黑心中介騙來泰國打工歌焦, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人砚哆。 一個月前我還...
    沈念sama閱讀 49,091評論 3 378
  • 正文 我出身青樓独撇,卻偏偏與公主長得像,于是被迫代替她去往敵國和親躁锁。 傳聞我的和親對象是個殘疾皇子纷铣,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,685評論 2 360

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

  • 前面兩篇文章中關(guān)于 HTTP 相關(guān)知識基本上介紹的差不多了,這篇文章是對 HTTP 協(xié)議的補(bǔ)充战转,主要介紹以下三點內(nèi)...
    lijiankun24閱讀 1,312評論 2 3
  • 1.1 http的概念及歷史版本 http的概念: 超文本傳輸協(xié)議搜立,當(dāng)年http的出現(xiàn)主要是為了解決文本傳輸?shù)碾y題...
    細(xì)雨菲菲v閱讀 338評論 0 1
  • 4天讀完 一、了解web及網(wǎng)絡(luò)基礎(chǔ) 1.1 三項www構(gòu)建技術(shù): HTML:超文本標(biāo)記語言 HTTP:文本傳輸協(xié)議...
    15d843cd48a8閱讀 788評論 1 4
  • 1. TCP/IP分層 TCP/IP協(xié)議族分為四層:應(yīng)用層槐秧、傳輸層啄踊、網(wǎng)絡(luò)層和數(shù)據(jù)鏈路層。OSI模型將網(wǎng)絡(luò)通信分為七...
    Jinwong閱讀 428評論 0 1
  • 本文是《圖解HTTP》讀書筆記的第二篇刁标,主要包括此書的第六章內(nèi)容颠通,因為第六章的內(nèi)容較多,而且比較重要膀懈,所以單獨(dú)寫為...
    lijiankun24閱讀 1,368評論 0 6