wireshark分析http協議 計網實驗總結

利用wireshark分析http報文

    上週實驗中進行了課程實驗用wireshark抓包了http協議,收穫許多,準備開啓我的第一篇博客文章。

0x01 http的基本知識

    HTTP(HyperText Transfer Protocol,超文本傳輸協議)是Web系統最核心的內容,是Web服務器和客戶端直接進行數據傳輸的規則。HTTP協議是用於從WWW服務器傳輸超文本到本地瀏覽器的傳送協議。可以使瀏覽器更加高效,使網絡傳輸減少。不僅保證計算機正確快速地傳輸超文本文檔,還確定傳輸文檔中的哪一部分,以及首先顯示(如文本先於圖形)等。HTTP是一個應用層協議,有請求和響應構成,是一個標準的客戶端服務器模型。HTTP具有以下幾個特點:

  1. 支持客戶/服務器模式:支持基本認證和安全認證;
  2. 簡單快速:客戶端向服務器請求服務時,只需傳送請求方法和路徑。請求方法常用的有GET、HEAD、POST。。由於HTTP協議簡單,使得HTTP服務器的程序規模小,因而通信速度很快;
  3. 靈活:HTTP允許傳輸任意類型的數據對象。正在傳輸的類型由Content-Type加以標記;
  4. HTTP 0.9和1.0使用非持續連接:限制每次連接只處理一個請求,服務器處理完客戶的請求,並收到客戶的應答後,即斷開連接。採用這種方式可以節省傳輸時間。HTTP 1.1使用持續連接:不必爲每個web對象創建一個新的連接,一個連接可以傳送多個對象;
  5. 無狀態:HTTP協議是無狀態協議。無狀態是指協議對於事務處理沒有記憶能力。缺少狀態意味着如果後續處理需要前面的信息,則它必須重傳,這樣可能導致每次連接傳送的數據量增大。

http的請求格式

HTTP請求信息由3部分組成:
(1)請求方法URI協議/版本
(2) 請求頭(Request Header)
(3) 請求正文

請求方法URI協議/版本:請求的第一行是"方法URI協議/版本"
例如:GET/sample.jsp HTTP/1.1 其中"GET"代表請求方法,"/sample.jsp"表示URI,"HTTP/1.1代表協議和協議的版本。

請求方法的8種方法

OPTIONS:返回服務器針對特定資源所支持的HTTP請求方法,也可以利用向Web服務器發送"*"的請求來測試服務器的功能性。

HEAD:向服務器索要與GET請求相一致的響應,只不過響應體將不會被返回。這一方法可以在不必傳輸整個響應內容的情況下,就可以獲取包含在響應消息頭中的元信息。

GET:向特定的資源發出請求。注意:get方法不應當被用於產生“副作用”的操作中。例如在Web APP中,其中一個原因是GET可能會被網站蜘蛛等隨意訪問。

POST:向指定資源提交數據進行處理請求(比如提交表單或者上傳文件)。數據被包含在請求體中。POST請求可能會導致新的資源的建立或已有資源的修改。

PUT:向指定資源位置上傳其最新內容。

DELETE:請求服務器刪除Request-URI所標識的資源。

TRACE:回顯服務器收到的請求,主要用於測試或者診斷。

CONNECT:HTTP/1.1協議中預留給能夠將連接改爲管道方式的代理服務器。

請求頭

   - Accept:[表示瀏覽器可以接受文本,網頁圖片等]

   - Accept-Charaset: [表示接受字符編碼]

   - Accept-Encoding:[可以接受格式壓縮後數據]

   - Accept-Language:[瀏覽器支持的語言爲中文]   

   - Host:[瀏覽器要找的主機]

   - IF-MODIFIED-Since:[文件在緩存中且指明文件時間]

   - Referer:[指明來源]

   - User-Agent:[本機瀏覽器內核]

   - Connection:close/Keep-Alive [保持鏈接,即發完數據後不關閉鏈接]

   - Date:[瀏覽器發送數據的請求時間]

請求正文: 請求頭和請求正文之間是一個空行,這個行非常重要,它表示請求頭已經結束,接下來的是請求正文。請求正文中包含客戶提交的查詢字符串信息:

http響應格式

HTTP請求信息由3部分組成::
(1)響應首行;
(2)響應頭信息;
(3)響應正文。

響應首行:包含協議版本,響應狀態碼,對狀態碼的解釋。
例如:分析”HTTP/1.1 200 OK”
其中HTTP/1.1:爲協議版本。200 :爲響應狀態碼,此表示響應成功。OK :爲解釋響應狀態碼200是響應成功。

常見狀態響應碼6個:

200 請求成功,瀏覽器把響應回來的信息顯示在瀏覽器端。

404 客戶端出錯,在瀏覽器端請求一個不存在的資源時會出現404狀態碼。

405 客戶端錯誤的一種,表示當前的請求方式不支持。如:服務器端只對GET請求做了處理,而客戶端的請求是post方式的,這個時候會出現405狀態碼。

500 服務器端錯誤,如:服務器端代碼出現空指針等異常,瀏覽器就會收到服務器發送的500狀態碼。

302 表示重定向。如:瀏覽器訪問一個資源,服務器響應給瀏覽器一個302的狀態碼,並且通過響應頭Location發送了一個新的url,告訴瀏覽器去請求這個url。這就是重定向。

304 第一次訪問一個資源後,瀏覽器會將該資源緩存到本地,第二次再訪問該資源時,若該資源沒有發生改變,則服務器響應給瀏覽器304狀態碼,告訴瀏覽器使用本地緩存的資源。

響應頭信息:與請求頭信息類似

-Server:服務器告訴瀏覽器,當前響應的服務類型和版本。

-Content-Type:服務器告訴瀏覽器響應內容的類型和字符編碼。如:值爲text/html;charset=utf-8。說明響應信息的類型是文本類型中的html,使用的字符編碼是utf-8。

-Content-Length:服務器告訴瀏覽器,響應內容的長度字節數。

-Date:表示是服務器是響應回瀏覽器的時間,注意該時間是按照格林尼治標準時間(GMT)來計算。

響應正文:空行連接響應頭和響應體。響應正文即爲返回資源內容。瀏覽器可以直接識別響應正文html文件。

0x02 實驗操作步驟

本實驗用windows7,wireshark,IE瀏覽器進行實驗操作。

實驗1
HTTP GET/response交互
(1)清空緩存DNS高速緩存,確保Web服務器域名到IP地址映射是從網絡請求的。在cmd窗口輸入:ipconfig/flushdns 後按回車。
在這裏插入圖片描述
(2)啓動Wireshark分組俘獲器,開始Wreshark分組俘獲。
(3)在瀏覽器地址欄中前往網址:http:// www.cqu.edu.cn/。
(4)單擊測覽器中的“刷新”按鈕。
(5)停止Wireshark分組俘獲,在顯示過濾篩選說明處輸入“http”顯示捕獲到的HTTP報文。

(1)對請求報文分析
Alt
“GET”:向特定的資源發出請求。
”HOST”首部在HTTP1.1版本中是必須的,描述了URL中的主機,在這裏是http:// www.cqu.edu.cn/。
”USER-AGENT”首部顯示了web服務器瀏覽器和本機windows系統。
Accept包括:Accept、 Accept-Language 、Accept-Encoding。
Connection首部描述了有關TCP連接的信息,通過此連接發送HTTP請求和響應,表明在發送請求之後連接是否保持活動狀態及保持多久大多數HTTP1.1連接是持久的,意思是在每次請求後不關閉TCP連接,而保持該連接以接受從同一臺服務器發來的多個請求。

(2)對響應報文進行分析
Alt
響應發送”HTTP/1.1 200 ok" ,狀態碼200表示響應成功,用HTTP1.1版本發送網頁。
Cache-control首部,用於描述是否將數據的副本存儲或高速緩存起來,此處爲no-store 表示所有內容不會存在緩存 或internet臨時文件中。
Content-length首部描述了數據長度爲1676字節
Date首部表示了數據發送時間爲:2020.5.19 07:04:42 其中GMT表示格林尼治標準時間。

此處補充Cache-control的相關字段信息:
在這裏插入圖片描述
實驗2
HTTP條件 GET/response交互
1)啓動瀏覽器,清空瀏覽器的緩存。
(2)啓動Wireshark分組俘獲器,開始Wreshark分組俘獲。
(3)在瀏覽器地址欄中前往網址: http://gaia.cs.umass.edu/wireshark-labs/ HTTP-wireshark-file2.html
你的瀏覽器中將顯示一個的非常簡單的HTML文件。
(4)單擊測覽器中的“刷新”按鈕。
(5)停止Wireshark分組俘獲,在顯示過濾篩選說明處輸入“http”顯示捕獲到的HTTP報文。
在這裏插入圖片描述
實驗3
獲取長文件
(1)啓動瀏覽器,將瀏覽器的緩存清空。
(2)啓動Wireshark分組俘獲器,開始Wireshark分組俘獲。
(3)在瀏覽器地址欄中輸入如下網址:http://gaia.cs.umass.edu/wireshark-labs/HTTP-wireshark-file3.html
(4)停止Wireshark分組俘獲,在顯示過濾篩選說明處輸入“http”。
在這裏插入圖片描述
實驗4
嵌有對象的HTML文檔
(1)啓動瀏覽器,將瀏覽器的緩存清空。
(2)啓動Wireshark分組俘獲器。開始Wireshark分組俘獲。
(3)在瀏覽器地址欄中輸入如下網址:http://gaia.cs.umass.edu/wireshark-labs/HTTP-wireshark-file4.html
(4)停止Wireshark分組俘獲,在顯示過濾篩選說明處輸入“http"。
在這裏插入圖片描述
實驗5
HTTP認證
(1)啓動瀏覽器,將瀏覽器的緩存清空。
(2)啓動Wireshark分組俘獲器。開始Wireshark分組俘獲。
(3)在瀏覽器地址欄中輸入如下網址:http://gaia.cs.umass.edu/wireshark-labs/protected_pages/HTTP-wireshark-file5.html
(4)停止Wireshark分組俘獲,在顯示過濾篩選說明處輸入“http”。
在這裏插入圖片描述

0x03 實驗問答

(1)你的瀏覽器運行的是HTTP1.0,還是HTTP1. 1 ?你所訪問的服務器所運行的HTTP版本號是多少?
瀏覽器運行的是HTTP1.1 訪問的服務器運行的是HTTP1.1

(2)你的瀏覽器向服務器指出它能接收何種語言版本的對象?
可以接受簡體中文
在這裏插入圖片描述
(3)你的計算機的IP地址是多少?服務器的IP地址是多少?
計算機地址:.....
服務器地址:202.202.1.3

(4)從服務器向你的瀏覽器返回的狀態代碼是多少?
200 OK

(5)你從服務器上所獲取的HTML文件的最後修改時間是多少?
在2020年4月5日 02:34:44在這裏插入圖片描述

(6) 返回到你的瀏覽器的內容一共多少字節?
4498字節

(7) 分析你的瀏覽器向服務器發出的第一個HTTP GET請求的內容,在該請求報文中,是否有一行是: IF-MODIFIED-SINCE?
沒有
在這裏插入圖片描述
(8)分析服務器響應報文的內容,服務器是否明確返回了文件的內容?如何獲知?
明確返回了
在這裏插入圖片描述
(9)分析你的瀏覽器向服務器發出的第二個“HTTP GET”請求,在該請求報文中是否有一行是:IF -MODIFIED- SINCE?如果有,在該首部行後面跟着的信息是什麼?
有,是最後一次的修改時間。
在這裏插入圖片描述
(10)服務器對第二個HTTP GET請求的響應中的HTTP狀態代碼是多少?服務器是否明確返回了文件的內容?請解釋。
在這裏插入圖片描述
304狀態碼錶示:服務器沒有明確返回文件內容。原因:瀏覽器端緩存頁面最後修改時間與服務器端時間一致,返回304狀態碼,客戶端接到之後,就直接把本地緩存文件顯示到瀏覽器中。

(11 )你的瀏覽器一共發出了多少個HTTP GET請求?
總共四個,分別爲序號17,46,61,102
在這裏插入圖片描述

(12 )承載這一個HTTP響應報文一共需要多少個data-containing TCP報文段?
需要四個data-containing TCP報文段。
在這裏插入圖片描述

(13)與這個HTTPGET請求相對應的響應損文的狀態代碼和狀態短語是什麼?
爲200 OK在這裏插入圖片描述

(14)在被傳送的數據中一共有多少個HTTP狀態行與TCP-induced”continuation"有關?
一個

(15)你的瀏覽器一共發出了多少個和打開的網址相關的HTTP GET請求?這些請求被髮送到的目的地的IP地址是多少?
發送了三個和打開的網址相關的HTTP GET請求,目的IP 爲:128.119.245.12
在這裏插入圖片描述
(16)瀏覽器在下載這兩個圖片時,是串行下載還是並行下載?請解釋。
並行。兩個圖片是連續請求,不需要等第一個請求得到回覆後才繼續第二次請求。存在不需要等第一個請求得到回覆後才繼續第二次請求的情況,說明是並行的。

(17)對於瀏覽器發出的最初的HTTP GET請求,服務器的響應是什麼(狀態代碼和狀態短語)?
響應是:401 Unauthorized
在這裏插入圖片描述

(18)當瀏覽器發出第二個HTTP GET請求時,在HTTP GET報文中包含了哪些新的字段?
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章