不徹底圖解HTTP
在2D平面上行走的時候,認識只侷限於「點」,剛認識一個新的點,就把以前的那個點忘記了,撿了芝麻丟西瓜。只從3D視角俯瞰時,把這些點鏈接在一塊兒,點成線,線成面時,纔能有所頓悟。話很少說,這是我對HTTP的不徹底圖解。但願對你們總體上初步理解HTTP有所幫助。
總體上來看,HTTP分爲五個部分。
1.報文
報文 = 報文首部 + 報文主體
打上了「紅旗」的,表明很是重要:
(1)首部字段
(2)Cookie 和 Set-Cookie
Cookie:客戶端告知服務器想得到HTTP狀態管理支持。
Set-Cookie: 服務器管理客戶端的狀態。
1.1 請求報文
![](http://static.javashuo.com/static/loading.gif)
1.2 響應報文
![](http://static.javashuo.com/static/loading.gif)
2. 通訊傳輸
這裏須要問本身這樣的問題:
(1)爲何會有「分層」這個概念?
(2)三次握手的過程?若是中斷了怎麼辦?
發送端將一個帶SYN標誌的數據包給接收端。
接收端回傳一個帶有SYN/ACK標誌的數據包,傳達確認信息。
發送端回傳一個帶ACK標誌的數據包,表明「握手」結束。
若是中斷,TCP協議會再次以相同的順序發送相同的數據包。
![](http://static.javashuo.com/static/loading.gif)
3.服務器
這裏重點理解一下緩存策略。
第一階段--本地緩存。
第二階段:緩存協商。在這個階段,須要用到兩組首部字段Last-Modified/IF-Modified-Since和Etag/If-None-Match。
![](http://static.javashuo.com/static/loading.gif)
4.優化
![](http://static.javashuo.com/static/loading.gif)
5.安全
這部分須要理解爲何會出現HTTPS,HTTPS中的SSL是什麼,HTTPS的利弊。
基於表單認證部分須要聯繫一下第一部分報文中的Cookie和Set-Cookie:
(1)客戶端發送用戶ID、密碼
(2)服務器向用戶發放Session ID,記錄用戶狀態(Set-Cookie)
(2)客戶端接收Session ID,並將其做爲Cookie保存在本地。
(4)下次向服務器發送請求時,瀏覽器會自動發送Cookie
(5)服務器端可驗證收到的Session ID來識別用戶
![](http://static.javashuo.com/static/loading.gif)
回顧一下,整體上大概就是這樣的。安利一下XMind,用來畫思惟導圖,很是贊。祝你們五一快樂。
![](http://static.javashuo.com/static/loading.gif)
歡迎關注本站公眾號,獲取更多信息