圖解HTTP協(xié)議摘要(春水版):第二章 簡單的HTTP協(xié)議

關(guān)于圖解HTTP協(xié)議摘要夫植,全部內(nèi)容上傳到本人的Github左胞,歡迎fork碘举。

2.0 目錄

2.1 客戶端和服務(wù)端之間的通信
2.2 通過請求和響應(yīng)的交換達(dá)成通信
2.3 HTTP是不保存狀態(tài)的協(xié)議
2.4 請求URI定位資源
2.5 與服務(wù)端交互的方法
2.6 HTTP/1.1支持的方法
2.7 持久連接節(jié)省通信量
2.8 cookie

2.1 客戶端和服務(wù)端之間的通信

HTTP協(xié)議是基于客戶端和服務(wù)端之間的通信

2.2 通過請求和響應(yīng)的交換達(dá)成通信

請求必定是從客戶端發(fā)出,服務(wù)端響應(yīng)請求并返回柒室。HTTP協(xié)議不支持雙向通信履磨,WebSocket協(xié)議支持蛉抓。

客戶端請求報文:

POST /form/entry HTTP/1.1
Host: example.com
Connection: keep-alive
Content-Type: application/x-www-form-urlencoded
Content-Length: 16
name=ueno&age=37

服務(wù)端響應(yīng)報文:

HTTP/1.1 200 OK
Date: Tue, 10 Jul 2012 06:50:15 GMT
Content-Length: 362
Content-Type: text/html

<html>
...

2.3 HTTP是不保存狀態(tài)的協(xié)議

HTTP協(xié)議自身不保存請求和相應(yīng)之間的通信狀態(tài)剃诅∠锼停可以使用cookie來保存狀態(tài)信息。

2.4 請求URI定位資源

URI可以定位互聯(lián)網(wǎng)上的所有資源矛辕。

GET /index.html HTTP/1.1
Host: example.com

2.5 與服務(wù)端交互的方法

  • GET:訪問已經(jīng)被URI識別的資源笑跛,指定的資源被解析之后,返回響應(yīng)的內(nèi)容聊品。
GET /index.html HTTP/1.1
Host: example.com
-------------------------
返回index.html的頁面資源

GET /index.html HTTP/1.1
Host: example.com
If-Modified-Since: Thu, 12 Jul 2012 07:30:00 GMT
-------------------------------------------------------
僅返回2012年7月12日07:30:00以后更新過的index.html的頁面資源
如果沒有內(nèi)容更新飞蹂,返回狀態(tài)碼 304 Not Modified
  • POST:傳輸客戶端的數(shù)據(jù)
POST /submit.cgi HTTP/1.1
Host: www.example.com
Content-Length: 1560
-----------------------------
返回submit.cgi接收數(shù)據(jù)的處理結(jié)果
  • PUT:指定URI上傳文件,自身沒有驗證機(jī)制翻屈,一般不開放陈哑。REpresentational State Transfer標(biāo)準(zhǔn)的Web網(wǎng)站可能會開放。
PUT /example.html HTTP/1.1
Host: www.example.com
Content-Type: text/html
Content-Length: 1560
-----------------------------------------
返回狀態(tài)碼 204 No Content(表示該文件已存在)
  • HEAD:除了不返回報文主體部分伸眶,其它和GET方法一樣芥颈。用于確認(rèn)URI的有效性和資源的更新時間。
HEAD /example.com HTTP/1.1
Host: www.example.com
--------------------------
返回index.html的響應(yīng)首部
  • DELETE:刪除指定URI上的文件
DELETE /example.com HTTP/1.1
Host: www.example.com
---------------------------------------------
返回狀態(tài)碼 204 No Content(表示該html已經(jīng)被刪除)
  • OPTIONS: 返回針對URI指定資源支持的方法
OPTIONS /example.com HTTP/1.1
Host: www.example.com
--------------------------------------------------
HTTP/1.1 200 OK
Allow: GET, POST, HEAD, OPTIONS(返回服務(wù)器指定的方法)
  • TRACE:追蹤路徑赚抡,因為Cross-Site Tracing Attack,基本不用

  • CONNECT: 要求使用隧道協(xié)議連接代理纠屋,在隧道內(nèi)使用TCP協(xié)議通信

    使用 Secure Socket Layer 和 Transport Layer Security 加密傳輸

    CONNECT proxy.example.com:8080 HTTP/1.1
    Host: proxy.example.com
    -----------------------------------------
    HTTP/1.1 200 OK(進(jìn)入網(wǎng)絡(luò)隧道)
    

2.6 HTTP/1.1支持的方法

Method Explanation
GET 獲取資源
POST 傳輸實體主體
PUT 傳輸文件
HEAD 獲取報文頭部
DELETE 刪除文件
OPTIONS 詢問支持的方法
TRACE 追蹤路徑
CONNECT 使用隧道協(xié)議連接代理

2.7 持久連接節(jié)省通信量

在HTTP最初的設(shè)計中涂臣,每進(jìn)行一次HTTP通信都要斷開一次TCP連接。

客戶端和服務(wù)端的HTTP通信過程.jpg

每個資源都要發(fā)起一次完整的HTTP請求售担,一個網(wǎng)頁能需要很多次請求赁遗。

一個網(wǎng)頁多次HTTP請求.jpg

持久連接:Keep-Live,只要任意一端沒有明確提出斷開連接族铆,則一直保持TCP連接狀態(tài)岩四。

一個網(wǎng)頁一次HTTP請求.jpg

持久連接的好處是:減少了TCP連接重復(fù)地建立和斷開造成的額外開銷,減輕了服務(wù)端的負(fù)載哥攘。并且降低了請求和響應(yīng)時間剖煌,提高了web頁面的響應(yīng)速度材鹦。

管線化:不用等待服務(wù)端響應(yīng),就可以直接發(fā)送下一個請求耕姊。請求越多桶唐,響應(yīng)速度提升越明顯。

管線化請求.jpg

2.8 cookie

HTTP協(xié)議是無狀態(tài)協(xié)議茉兰,不記錄之前發(fā)生過的請求和響應(yīng)狀態(tài)尤泽。

Cookie技術(shù),服務(wù)端在響應(yīng)報文中添加一個Set-Cookie的首部字段信息规脸,通知客戶端保存Cookie坯约。當(dāng)下次客戶端在往服務(wù)端發(fā)送請求時,客戶端會自動在請求頭部添加cookie后發(fā)送莫鸭。服務(wù)端根據(jù)cookie查詢連接記錄闹丐,找到對應(yīng)的連接狀態(tài)。

帶cookie的HTTP請求.jpg
GET /reader/ HTTP/1.1
Host www.example.com
---------------------------------------------------------------------------------
HTTP/1.1 200 OK
Date: Thu黔龟, 12 Jul 2012 07:12:20 GMT
Server: Apache
<Set-Cookie: sid=1342077140226724; path=/; expires=Wed, 10-Otc-12 07:12:20 GMT>
Content-Type: text/plain; charset: UTF-8
---------------------------------------------------------------------------------
GET /image/ HTTP/1.1
Host: www.example.com
Cookie: sid=1342077140226724
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
禁止轉(zhuǎn)載妇智,如需轉(zhuǎn)載請通過簡信或評論聯(lián)系作者。
  • 序言:七十年代末氏身,一起剝皮案震驚了整個濱河市巍棱,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌蛋欣,老刑警劉巖航徙,帶你破解...
    沈念sama閱讀 211,194評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異陷虎,居然都是意外死亡到踏,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,058評論 2 385
  • 文/潘曉璐 我一進(jìn)店門尚猿,熙熙樓的掌柜王于貴愁眉苦臉地迎上來窝稿,“玉大人,你說我怎么就攤上這事凿掂“槔疲” “怎么了?”我有些...
    開封第一講書人閱讀 156,780評論 0 346
  • 文/不壞的土叔 我叫張陵庄萎,是天一觀的道長踪少。 經(jīng)常有香客問我,道長糠涛,這世上最難降的妖魔是什么援奢? 我笑而不...
    開封第一講書人閱讀 56,388評論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮忍捡,結(jié)果婚禮上集漾,老公的妹妹穿的比我還像新娘切黔。我一直安慰自己,他們只是感情好帆竹,可當(dāng)我...
    茶點故事閱讀 65,430評論 5 384
  • 文/花漫 我一把揭開白布绕娘。 她就那樣靜靜地躺著,像睡著了一般栽连。 火紅的嫁衣襯著肌膚如雪险领。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,764評論 1 290
  • 那天秒紧,我揣著相機(jī)與錄音绢陌,去河邊找鬼。 笑死熔恢,一個胖子當(dāng)著我的面吹牛脐湾,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播叙淌,決...
    沈念sama閱讀 38,907評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼秤掌,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了鹰霍?” 一聲冷哼從身側(cè)響起闻鉴,我...
    開封第一講書人閱讀 37,679評論 0 266
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎茂洒,沒想到半個月后孟岛,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,122評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡督勺,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,459評論 2 325
  • 正文 我和宋清朗相戀三年渠羞,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片智哀。...
    茶點故事閱讀 38,605評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡次询,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出瓷叫,到底是詐尸還是另有隱情渗蟹,我是刑警寧澤,帶...
    沈念sama閱讀 34,270評論 4 329
  • 正文 年R本政府宣布赞辩,位于F島的核電站,受9級特大地震影響授艰,放射性物質(zhì)發(fā)生泄漏辨嗽。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,867評論 3 312
  • 文/蒙蒙 一淮腾、第九天 我趴在偏房一處隱蔽的房頂上張望糟需。 院中可真熱鬧屉佳,春花似錦、人聲如沸洲押。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,734評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽杈帐。三九已至体箕,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間挑童,已是汗流浹背累铅。 一陣腳步聲響...
    開封第一講書人閱讀 31,961評論 1 265
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留站叼,地道東北人娃兽。 一個月前我還...
    沈念sama閱讀 46,297評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像尽楔,于是被迫代替她去往敵國和親投储。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,472評論 2 348

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