抓包工具 - HttpWatch(功能詳細介紹)

  HttpWatch是功能強大的網頁數據分析工具,集成在IE工具欄,主要功能有網頁摘要、cookies管理、緩存管理、消息頭髮送/接收,字符查詢、POST數據、目錄管理功能和報告輸出。HttpWatch是一款可以收集並顯示深層信息的軟件,它不用代理服務器或一些複雜的網絡監控工具,可以在顯示網頁的同時顯示網頁請求和迴應的日誌信息,甚至能夠顯示瀏覽器緩存和IE之間的交換信息,集成在IE工具欄。(HttpWatch工具須要下載安裝,這裏就不詳說了,直接搜索百度就ok了) javascript

HTTP基礎知識之HTTP消息格式                     

  當用戶使用瀏覽器訪問某個URL地址、提交表單數據時,瀏覽器會生成請求消息發送給服務器,服務器收到請求後,將生成的響應消息返回給瀏覽器。瀏覽器發出的請求信息和服務器返回的響應信息統稱爲HTTP消息。HTTP消息有着嚴格的格式。html

  一個完整的請求消息包括:一個請求行、若干消息頭及實體內容,其中一些消息頭和實體內容是可選的,消息頭和實體內容之間使用空行隔開,下面是HTTP請求消息內容:java

(Request-Line)    GET /get.do?prod=wmail_lbp&ver=1&uid=nt@163.com&domain=163.com&mobUser=0&callback=themeHandler.callback&rnd=0.13562542999267713 HTTP/1.1
Accept    application/javascript, */*;q=0.8
Accept-Encoding    gzip, deflate
Accept-Language    zh-CN
Connection    Keep-Alive
Cookie    starttime=; logType=
Host    ir3.mail.163.com
Referer    http://mail.163.com/
User-Agent    Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Trident/5.0)
HTTP請求消息內容

   一個完整的響應消息包括:一個狀態行、若干消息頭及實體內容。與請求消息同樣,響應消息中的一些消息頭和實體內容也是可選的,消息頭和實體內容之間也要用空行隔開。下面是HTTP響應消息內容:nginx

(Status-Line)    HTTP/1.1 200 OK
Connection    keep-alive
Content-Length    25037
Content-Type    application/json;charset=utf-8
Date    Mon, 05 Jun 2017 13:13:25 GMT
Server    nginx
Vary    Accept-Encoding
X-Cache    from ngx118-192.163.com
HTTP響應消息內容

  HTTP請求和HTTP響應消息頭都是用於描述HTTP消息自己的信息,一般也把這種描述信息稱爲元信息,消息頭至關於服務器和瀏覽器之間的暗號指令,主要實現HTTP客戶機與服務器之間的條件請求和應答。web

  一般狀況下消息頭分爲4類:信息頭、請求頭、響應頭和實體頭:json

1)通用信息頭:即能用於請求信息,也能夠用於響應消息,但與被傳輸的實體內容沒有關係,如date、pragma。瀏覽器

2)請求頭:用於在請求消息中向服務器傳遞附加消息,主要包括客戶機能夠接受的數據類型、壓縮方法、語言,以及客戶計算機上保留的cookie信息和發出該請求的超連接源地址等。緩存

3)響應頭:用於在響應消息中向客戶端傳遞附加信息,包括服務程序的名稱、要求客戶端進行認證的方式、請求的資源已移動到的新地址等。安全

4)實體頭:用作實體內容的元信息,描述了實體內容的屬性,包括實體信息的類型、長度、壓縮方法、最後一次修改的時間和數據的有效期等。服務器

  請求消息的請求行中包括3部分:請求方式、資源路徑以及所使用的HTTP協議版本,各部分之間使用空格分隔,語法格式以下:

請求方式  資源路徑  HTTP版本號<CRLF>

其中<CRLF>表示回車和換行兩個字符的組合。

  響應消息的狀態行中包括3部分的內容:HTTP協議的版本號、一個表示成功或失敗的整數代碼(狀態碼)和對狀態碼進行描述的文本信息,各部份內容之間使用空格分隔,語法格式以下:

HTTP版本號  狀態碼  緣由敘述<CRLF>

HttpWatch工具之Request Grid                    

  安裝好後在IE-工具下啓動HTTPWatch,輸入地址後點擊record按鈕即開始進行錄製,點擊stop按鈕即中止錄製,如圖1所示,錄製了163郵箱的登陸操做

圖1(request grid圖)

  Started:相對開始時間,是指接下來訪問的URL相對於第一個URL被打開的時間,好比http://mimg.127.net/copyright/year.jshtml http://mail.163.com/頁面的0.006s執行

  Time Chart:耗時比例圖,即整個請求應答過程各部分所花時間比例圖。

  Time:請求所消耗的時間。

  Sent:提交該請求所發送的字節數。

  Received:提交請求後服務器返回的字節數。

  Method:提交請求的方法。

  Result:請求處理的結果。

  Type:服務器返回內容的類型。

URL:請求的URL地址。

  在測試過程當中主要關注Time、Received、Result三項的值,Time是請求的耗時,須要注意耗時大的請求,由於在整個業務響應時間過程當中,耗時長的請求是最有可能須要調優的;Received是返回的字節數,在測試過程當中須要關注返回字節數較大的須要,由於返回的字節數較大,會影響整個請求的耗時,它也是調優須要重點關注的內容;Result是指請求響應的狀態,須要關注其響應狀態爲非200的值,請求響應狀態只有200是正確的,其餘的都是異常的,若是請求出現異常狀況,說明事務頗有可能操做失敗,這樣直接影響了事務的成功率。

HttpWatch工具之Request View                   

Request View內容詳細記錄了每一個請求的信息,主要包括下面列舉的內容:

1、Overview,如圖2所示

圖2(Overview內容)

  Display URL:表示請求的URL;

  Started At:表示該請求開始的時間;

  Submit Form:表示表單被提交到URL,只有POST操做時纔會有該項;

  Connecte:表示TCP鏈接操做;

  HTTP Request:表示一個請求被髮出去;

  HTTP Response:表示一個應答被收回;

  Read Cache:表示該次請求是從cache中讀取應答消息;

2、Time Chart,如圖3所示

圖3(Time Chart圖)

顯示了一次請求應答過程當中每一個時間片斷所花費的時間。一次完整的請求應答過程須要經歷的時間片斷以下:Blocked->DNS Lookup->Connect ->Send ->Wait ->Receive。

各時間片斷含義以下:

  Blocked(阻塞):阻塞的時間主要包括預處理時間(如緩存查找)和網絡排隊等待時間,致使阻塞最主要緣由是下載頁面中的圖片;

  DNS Lookup(域名解釋):域名解釋時間主要是將主機名(如www.google.com)轉化爲相應的IP地址(216.239.59.99)的時間,在訪問URL地址時,地址自己不能被直接訪問,須要將它對應爲相應的IP地址才能訪問;

  Connect(鏈接):鏈接時間是指與web服務器(或代理服務器)創建起TCP鏈接須要的時間,一個安全的HTTPS鏈接應該包含SSL握手的過程,讓系統處於一種保持鏈接的狀態,能夠節約重複建立TCP鏈接的時間

  Send(發送):發送時間是指從客戶端發送HTTP請求到服務器所花費的時間,而且發送數據大小會影響發送的時間,如上傳文件花費的時間就比較長;

  Wait(等待):等待時間是指服務器響應請求的時間,這個值包括網絡延遲和服務器處理請求所花費的時間;

  Receive(接收):接收時間是指服務器返回數據到客戶端所花費的時間,這個時間受所返回消息內容大小、網絡帶寬和HTTP壓縮比的影響;

  Cache Read(讀cache):讀緩存時間是指從瀏覽器緩存中讀取內容的時間;

3、Headers,如圖4所示

圖4(Headers的內容)

Headers Sent的內容以下:

  (Request-Line):包括HTTP提交請求方法、HTTP版本和URL子路徑;

  Accept:可接受的文件類型;

  Accept-Encoding:可接受的純文本以外的內容編碼的類型;

  Accept-Language:可接受的返回數據的語言種類;

  Connection:指定該次請求迴應結束後,如何處理鏈接;

  Cache-Control:指定請求和響應遵循的緩存機制;

  Location:用於重定向接收者到一個新URL地址;

  Host:請求鏈接的主機名;

Headers Received的內容以下:

  (Status-Line):包括HTTP請求的狀態碼和HTTP版本信息; 

  Connection:指定該次請求迴應結束後,如何處理鏈接;

  Cache-Control:指定請求和響應遵循的緩存機制;

  Content-Language:內容數據的語言種類;

  Content-Length:傳輸的內容長度;

  Content-Type:內容數據的類型(Mini Type);

  Last-Modified:服務器上保存內容的最後修訂時間;

  Expires:內容數據被緩存的過時時間;

4、Cookies,如圖5所示

圖5(Cookies的內容)

  Cookie Name:cookie的名稱;

  Direction:代表該cookie是由客戶端發送到服務器的仍是從服務器接收的;

  Value:cookie的內容;

  Path:該cookie所在站點的路徑;

  Domain:顯示該cookie所屬的域名或主機名;

  Expires:指該cookie失效時間,當瀏覽器關閉時該cookie值將被刪除;

5、Cache,如圖6所示

 圖6(Cache的內容)

  URL in cache?:該項內容是否寫入瀏覽器緩存 ;

  Expires:cache失效日期和時間;

  Last Modification:當cache內容被存儲或更新時,那麼更改日期將會修改成最近的日期;

  Last Cache Update:cache內容被更新的最近時間;

  Last Access:最近一次讀cache的時間;

  ETag:用來匹配服務器上的實體,使用的方式爲模糊匹配;

  Hit Count:讀cache內容的次數;

6、Query String,如圖7所示

 圖7(Query String的內容)

  Query String是經過URL來傳遞參數的一種方式,格式一般爲:...?name1=value1&name2=value2&...

  Query String內容中能夠顯示當前URL中全部的參數名及對應的值,圖7所對應的URL以下:

http://ir3.mail.163.com/get.do?prod=wmail_lbp&ver=1&uid=****@163.com&domain=163.com&mobUser=0&callback=themeHandler.callback&rnd=0.639472691290614

7、POST Data,如圖8所示,顯示以POST方式請求的數據信息,其中Mime Type:application/json,是指POST方式提交數據的編碼方式。

 圖8(POST Data的內容)

8、Content,如圖9所示,顯示接收到的HTTP響應信息,包括MIME的類型,總的字節數和這些內容是否從服務中下載或從緩存中讀取,若是對HTTP進行了壓縮,還應該顯示壓縮的方式、壓縮後的文件大小及壓縮比。

 圖9(Content的內容)

9、Stream,如圖10所示,主要是顯示客戶端發送的內容和服務器返回的內容。左邊顯示的是客戶端發送的內容,顯示了數據流大小和發送到哪一個服務器,如圖所示,發送的字節數爲2173個字節,服務器的IP地址爲220.181.12.208,端口號爲80。右邊顯示的是服務器返回的內容,包括返回的字節數和返回到客戶端的IP地址。

 圖10(Stream的內容)

左邊爲客戶端向服務器提交的請求,內容以下:

  GET /entry/cgi/ntesdoor?df=loginjustnowmail163&funcid=loginjustnow&iframe=1 HTTP/1.1:GET表示請求方式,‘/’表示URI(uniform resource identifier,是web上訪問可用資源的一種通用資源標識符),HTTP/1.1表示使用的協議和協議版本;

  Accept:表示接受返回數據的類型, */*表示容許接受全部的數據類型;

  Referer: 表示一個URL地址(如http://mail.163.com/),表示從該地址發出的請求;

  Accept-Language: 表示接受返回數據的語言,如zh-CN表示接受返回數據語言爲中文;

  Accept-Encoding: 表示瀏覽器可接受除純文本外的內容編碼的類型,如gzip壓縮, deflate壓縮內容;

  User-Agent:標識客戶端瀏覽器類型及相關版本信息;

  Host:主機標識地址;

  Connection: 表示鏈接狀態,如Keep-Alive表示保持TCP的鏈接狀態;

右邊的內容爲服務器向客戶端返回的數據內容,以下:

  HTTP/1.1 200 OK:表示協議、協議版本、請求的狀態;

  Date:表示發送HTTP消息的日期;

  Expires:表示實體的有效期;

  Content-Type:表示服務器返回請求類型,如text/html;

  Last-Modified:表示被請求資源上次修改的日期和時間;

  Age:表示HTTP接受請求操做響應的緩存時間;

10、!Warnings,如圖11所示,顯示了單個請求出現警告的內容,顯示的內容包括警告ID、警告類型和警告的詳細描述,關於警告類型主要3種:performance(性能)、security(安全)和Functional(功能)

 圖11(!Warnings的內容)

HttpWatch工具之Summary View                 

   summary能夠顯示一個頁面或一組頁面請求的概要信息,如圖12所示:

圖12(summary-network的內容)

  Elapsed Time:表示從第一個請求開始到當前頁面全部請求都完成所消耗的時間,單位爲s,顯然該值越小越好;

  Network Round Trips:表示提交請求到請求信息返回共經歷的web服務器的次數,一樣該值越小越好;

  Downloaded Data:下載的字節數,單位爲字節,一樣該值越小越好;

  Uploaded Data:表示發送到服務器端的數據,單位爲字節數,一樣該值越小越好;

  HTTP Compression Savings:表示HTTP數據壓縮後,減小的字節數;

  DNS Lookups:表示將域名解析爲對應的IP地址的次數(如將域名www.google.com解析爲72.14.221.103);

  TCP Connects:表示創建TCP鏈接的次數,這項值用於表示服務器保持鏈接的能力,一樣該值越小越好;

  Total HTTPS overhead:在全部的提交請求中有多少須要加密的請求;

  Average HTTPS overhead per request:平均每一個請求的HTTP值,若是這個值太高極可能是由於服務器不正確引發的。

page events的內容如圖13所示,表示頁面請求的事件以及每一個事件對應所消耗的時間,關於時間塊的組成在request view中的time chart部分進行了詳細的介紹,這裏就不贅述。

圖13(page events的內容)

timings的內容如圖14所示,表示URL請求各階段所消耗的時間,同上也是不贅述。

圖14(timings的內容)

status codes的內容如圖15所示,主要顯示客戶端提交請求後,服務器返回的狀態碼。

圖15(status codes的內容)

errors和warning內容主要是顯示在請求過程當中,出現的錯誤和警告的信息。

HttpWatch工具之其餘功能                              

  除上面描述的功能外,還有兩個其餘功能,即過濾和查找功能,如圖1六、17所示:

圖16(filter對話框)

圖17(find對話框)

備註:文字講解來自《深刻性能測試--LoadRunner性能測試、流程、監控、調優全程實戰剖析》(黃文高、何月順編著)一書,我是新手,參照此教程作了下實踐,順便將學到的東西寫下來。

相關文章
相關標籤/搜索