工具篇 - HTTP協(xié)議報文結(jié)構(gòu)及示例03

前言

從事性能測試必不可繞過的就是協(xié)議呆馁,對基本知識的了解也還,還是深入掌握協(xié)議的機制豌蟋,都能讓你在從事性能測試實施時顯得更加順手驶俊。

下面我們就HTTP協(xié)議及性能測試過程必須掌握的一些分析工具來進行分享。

重點分享性能測試實施過程中必須掌握的關(guān)鍵技術(shù)嬉探、工具擦耀。更細(xì)節(jié)的請參考HTTP相關(guān)書籍或RFC文檔。

HTTP基本架構(gòu)

下面我們用一張簡單的流程圖來展示HTTP協(xié)議基本架構(gòu)涩堤,以便大家先有個基本的了解眷蜓。

9.png
  • Web Client可以是瀏覽器、搜索引擎定躏、機器人等等一切基于HTTP協(xié)議發(fā)起http請求的工具账磺。
  • Web Server可以是任何的能解析HTTP請求,并返回給Web Client可識別的響應(yīng)的服務(wù)痊远,常見的有apache垮抗、nginx、IIS等等web服務(wù)器碧聪。

濃縮就是精華冒版,看下最簡潔的HTTP交互圖:

10.png

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

  • 請求報文

HTTP請求報文由請求行、請求頭逞姿、空行和請求內(nèi)容4個部分構(gòu)成辞嗡。

如下圖所示:

11.png

下面對上圖進行簡單的分析:

請求行

由請求方法字段、URL字段滞造、協(xié)議版本字段三部分構(gòu)成续室,它們之間由空格隔開。常用的請求方法有:GET谒养、POST挺狰、HEAD、PUT、DELETE丰泊、OPTIONS薯定、TRACE、CONNECT瞳购。

請求頭

請求頭由key/value對組成话侄,每行為一對,key和value之間通過冒號(:)分割学赛。請求頭的作用主要用于通知服務(wù)端有關(guān)于客戶端的請求信息年堆。

典型的請求頭有:

User-Agent:生成請求的瀏覽器類型

Accept:客戶端可識別的響應(yīng)內(nèi)容類型列表;星號* 用于按范圍將類型分組罢屈。*/*表示可接受全部類型嘀韧,type/*表示可接受type類型的所有子類型。

Accept-Language: 客戶端可接受的自然語言

Accept-Encoding: 客戶端可接受的編碼壓縮格式

Accept-Charset: 可接受的字符集

Host: 請求的主機名缠捌,允許多個域名綁定同一IP地址

connection:連接方式(close或keeplive)

Cookie: 存儲在客戶端的擴展字段

空行

最后一個請求頭之后就是空行,用于告訴服務(wù)端以下內(nèi)容不再是請求頭的內(nèi)容了译蒂。

請求內(nèi)容

請求內(nèi)容主要用于POST請求曼月,與POST請求方法配套的請求頭一般有Content-Type(標(biāo)識請求內(nèi)容的類型)和Content-Length(標(biāo)識請求內(nèi)容的長度)

  • 響應(yīng)報文

HTTP響應(yīng)報文由狀態(tài)行、響應(yīng)頭柔昼、空行和響應(yīng)內(nèi)容4個部分構(gòu)成哑芹。

如下圖所示:

12.png

下面對響應(yīng)報文格式進行簡要的分析說明:

狀態(tài)行

由HTTP協(xié)議版本、狀態(tài)碼捕透、狀態(tài)碼描述三部分構(gòu)成聪姿,它們之間由空格隔開。

狀態(tài)碼由3位數(shù)字組成乙嘀,第一位標(biāo)識響應(yīng)的類型末购,常用的5大類狀態(tài)碼如下:

1xx:表示服務(wù)器已接收了客戶端的請求,客戶端可以繼續(xù)發(fā)送請求

2xx:表示服務(wù)器已成功接收到請求并進行處理

3xx:表示服務(wù)器要求客戶端重定向

4xx:表示客戶端的請求有==非法內(nèi)容==

5xx:標(biāo)識服務(wù)器未能正常處理客戶端的請求而出現(xiàn)意外錯誤

常見狀態(tài)碼說明:

200 OK: 表示客戶端請求成功

400 Bad Request: 表示客戶端請求有語法錯誤虎谢,不能被服務(wù)器端解析

401 Unauthonzed: 表示請求未經(jīng)授權(quán)盟榴,該狀態(tài)碼必須與WWW-Authenticate報文頭一起使用

404 Not Found:請求的資源不存在,例如輸入了錯誤的url

500 Internal Server Error: 表示服務(wù)器發(fā)生了不可預(yù)期的錯誤婴噩,導(dǎo)致無法完成客戶端的請求

503 Service Unavailable:表示服務(wù)器當(dāng)前不能處理客戶端的請求擎场,在一段時間后服務(wù)器可能恢復(fù)正常

響應(yīng)頭

一般情況下,響應(yīng)頭會包含以下几莽,甚至更多的信息迅办。

Location:服務(wù)器返回給客戶端,用于重定向到新的位置

Server: 包含服務(wù)器用來處理請求的軟件信息及版本信息

Vary:標(biāo)識不可緩存的請求頭列表

Connection: 連接方式章蚣。

對于==請求端==來講:close是告訴服務(wù)端站欺,斷開連接,不用等待后續(xù)的求請了。keeplive則是告訴服務(wù)端镊绪,在完成本次請求的響應(yīng)后匀伏,保持連接,等待本次連接后的后續(xù)請求蝴韭。

對于==響應(yīng)端==來講:close表示連接已經(jīng)關(guān)閉够颠。keeplive則表示連接保持中,可以繼續(xù)處理后續(xù)請求榄鉴。Keep-Alive表示如果請求端保持連接履磨,則該請求頭部信息表明期望服務(wù)端保持連接多長時間(秒),例如300秒庆尘,應(yīng)該這樣寫Keep-Alive: 300

空行

最后一個響應(yīng)頭之后就是空行剃诅,用于告訴請求端以下內(nèi)容不再是響應(yīng)頭的內(nèi)容了。

響應(yīng)內(nèi)容

服務(wù)端返回給請求端的文本信息驶忌。

HTTP報文示例

在這里我們在Firefox下用firebug隨意抓取一個HTTP包和上文的報文結(jié)構(gòu)做下一一對應(yīng)關(guān)系圖矛辕,以便大家了解實際的包和標(biāo)準(zhǔn)報文結(jié)構(gòu)的對應(yīng)關(guān)系。


13.png

總結(jié)

對于HTTP協(xié)議的交互過程這里就不再進行說明了付魔,大家可以搜索下相關(guān)的資料進行學(xué)習(xí)聊品,上述的內(nèi)容請務(wù)必熟練掌握、深刻了解几苍。更詳細(xì)的內(nèi)容推薦大家學(xué)習(xí)RFC 2616(http協(xié)議1.1版本翻屈,有中文版本)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市妻坝,隨后出現(xiàn)的幾起案子伸眶,更是在濱河造成了極大的恐慌,老刑警劉巖刽宪,帶你破解...
    沈念sama閱讀 218,607評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件厘贼,死亡現(xiàn)場離奇詭異,居然都是意外死亡纠屋,警方通過查閱死者的電腦和手機涂臣,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,239評論 3 395
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來售担,“玉大人赁遗,你說我怎么就攤上這事∽迕” “怎么了岩四?”我有些...
    開封第一講書人閱讀 164,960評論 0 355
  • 文/不壞的土叔 我叫張陵,是天一觀的道長哥攘。 經(jīng)常有香客問我剖煌,道長材鹦,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,750評論 1 294
  • 正文 為了忘掉前任耕姊,我火速辦了婚禮桶唐,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘茉兰。我一直安慰自己尤泽,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,764評論 6 392
  • 文/花漫 我一把揭開白布规脸。 她就那樣靜靜地躺著坯约,像睡著了一般。 火紅的嫁衣襯著肌膚如雪莫鸭。 梳的紋絲不亂的頭發(fā)上闹丐,一...
    開封第一講書人閱讀 51,604評論 1 305
  • 那天,我揣著相機與錄音被因,去河邊找鬼卿拴。 笑死,一個胖子當(dāng)著我的面吹牛氏身,可吹牛的內(nèi)容都是我干的巍棱。 我是一名探鬼主播,決...
    沈念sama閱讀 40,347評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼蛋欣,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了如贷?” 一聲冷哼從身側(cè)響起陷虎,我...
    開封第一講書人閱讀 39,253評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎杠袱,沒想到半個月后尚猿,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,702評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡楣富,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,893評論 3 336
  • 正文 我和宋清朗相戀三年凿掂,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片纹蝴。...
    茶點故事閱讀 40,015評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡庄萎,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出塘安,到底是詐尸還是另有隱情糠涛,我是刑警寧澤,帶...
    沈念sama閱讀 35,734評論 5 346
  • 正文 年R本政府宣布兼犯,位于F島的核電站忍捡,受9級特大地震影響集漾,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜砸脊,卻給世界環(huán)境...
    茶點故事閱讀 41,352評論 3 330
  • 文/蒙蒙 一具篇、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧凌埂,春花似錦驱显、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,934評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至挨下,卻和暖如春熔恢,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背臭笆。 一陣腳步聲響...
    開封第一講書人閱讀 33,052評論 1 270
  • 我被黑心中介騙來泰國打工叙淌, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人愁铺。 一個月前我還...
    沈念sama閱讀 48,216評論 3 371
  • 正文 我出身青樓鹰霍,卻偏偏與公主長得像,于是被迫代替她去往敵國和親茵乱。 傳聞我的和親對象是個殘疾皇子茂洒,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,969評論 2 355

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