計算機網絡實驗: 使用Wireshark抓包工具進行應用層和傳輸層網絡協議分析(HTTP部分)

實驗名稱

應用層與傳輸層網絡協議分析

實驗介紹

實驗使用 Wireshark 工具對網絡數據包進行抓取,並針對應用層和傳輸層封裝的網絡封包進行詳細分析,通過實踐觀察加深對應用層HTTP協議以及傳輸層TCP協議具體實現過程的理解。
在這個實驗中,我們將探討 HTTP 協議的幾個方面:基本/響應交互,HTTP 消息格式,檢索大型 HTML 文件,檢索 HTML 文件嵌入對象,HTTP 身份驗證和安全。

實驗目的

(1) 理解和掌握 Wireshark 等工具的使用方法;
(2) 利用 Wireshark 工具對應用層 HTTP 協議和傳輸層 TCP 協議進行分析。

背景知識和準備

HTTP協議以及TCP協議的理論知識。

HTTP協議

HTTP概述

HTTP是超文本傳輸協議,是Web的核心。它包括兩個部分:客戶及程序、服務器程序。它們分別運行在不同的端系統中,通過交換HTTP報文進行會話。HTTP協議定義了報文的格式以及客戶機和服務器交換報文的方式。
用戶請求一個Web頁(如點擊一個超鏈接),瀏覽器向服務器發出對該頁所含對象的“HTTP請求報文”。服務器接受請求,回發包含請求對象的“HTTP響應報文”。
在這裏插入圖片描述

HTTP連接

HTTP連接包括非持續HTTP連接、持續HTTP連接兩種,默認方式下使用持續連接。對於持續連接,服務器在發送響應後保持該TCP連接,相同客戶機與服務器之間的後續請求和響應報文通過相同的連接進行傳送。此外,一個TCP連接上可以傳送多個Web對象。

HTTP請求報文

在這裏插入圖片描述

HTTP響應報文

在這裏插入圖片描述

TCP協議

TCP概述

i. 端到端
一個發送方, 一個接收方,連接狀態與端系統有關,不爲路由器所知。

ii. 可靠、有序的字節流

iii. 流水線
TCP擁塞和流量控制設置滑動窗口協議。

iv. 發送和接收緩衝區

v. 全雙工網絡
同一連接上的雙向數據流。

vi. 面向連接
在進行數據交換前,初始化發送方與接收方狀態,進行握手(交換控制信息)。

vii. 流量控制
發送方不能淹沒接收方。

viii. 擁塞控制
抑止發送方速率來防止過分佔用網絡資源。

可靠數據傳輸

TCP在IP不可靠服務的基礎上創建可靠數據傳輸服務。

TCP報文段結構

在這裏插入圖片描述

實驗過程

1. 瞭解Wireshark工具的工作原理及使用方法

這一部分我會單獨寫一篇博客介紹。

2. 對HTTP協議進行分析

在這個實驗中,我們將探討 HTTP 協議的幾個方面:基本/響應交互,HTTP 消息格式,檢索大型 HTML 文件,檢索 HTML 文件嵌入對象,HTTP 身份驗證和安全。

1) 基本的HTTP請求/響應(file 1)

a) 啓動web瀏覽器,以Microsoft Edge爲例。
在這裏插入圖片描述
b) 啓動Wireshark 的數據包嗅探器,然後輸入“http”(不帶引號)。
在這裏插入圖片描述
c) 稍等片刻,然後按下開始按鈕,開始捕獲 Wireshark 的數據包。
在這裏插入圖片描述
現在,正在進行捕獲。
在這裏插入圖片描述
d) 在瀏覽器中輸入以下網址:
http://gaia.cs.umass.edu/wireshark-labs/HTTP-wireshark-file1.html
在這裏插入圖片描述
e) 停止 Wireshark 捕獲數據包,Wireshark獲取數據如下圖:
在這裏插入圖片描述
f) 觀察到上面捕獲了較多的數據包,是不符合預期的,這不方便我們進行分析。推測原因在於,從捕獲開始到捕獲結束的這段時間內,除了訪問指定網址以外,有其他應用程序(如QQ、網易雲音樂等)傳遞的HTTP消息被同時捕獲到。同時正在訪問的其他網頁對我們的捕獲也產生了影響。因此,我關閉了其他應用程序,只訪問指定的網頁,快速地訪問網頁,之後馬上停止捕獲。此次的捕獲結果爲:
在這裏插入圖片描述
按下Ctrl+S,保存該報文。
在這裏插入圖片描述
g) 觀察到HTTP響應狀態爲“304 Not Modified”,而不是“200 OK”,推測原因在於先前已經訪問該網站,再次訪問只起到了“刷新”的作用。我查了一下“304 Not Modified”的含義:
當客戶端緩存了目標資源但不確定該緩存資源是否是最新版本的時候, 就會發送一個條件請求。在進行條件請求時,客戶端會提供給服務器一個If-Modified-Since請求頭,其值爲服務器上次返回響應頭中Last-Modified值,還會提供一個If-None-Match請求頭,值爲服務器上次返回的ETag響應頭的值。
服務器會讀取到這兩個請求頭中的值,判斷出客戶端緩存的資源是否是最新的,如果是的話,服務器就會返回HTTP/304 Not Modified響應頭,但沒有響應體。客戶端收到304響應後,就會從本地緩存中讀取對應的資源。 所以:當訪問資源出現304訪問的情況下其實就是先在本地緩存了訪問的資源。
因此需要清除已緩存的數據:
在這裏插入圖片描述
再次嘗試抓包,成功。
在這裏插入圖片描述
響應報文狀態爲200 OK。查閱資料得知,HTTP 200 OK成功狀態響應碼指示請求已成功。200響應默認是可緩存的。Wireshark 獲取到的請求報文如下圖:
在這裏插入圖片描述
Wireshark 獲取到的響應報文如下圖:
在這裏插入圖片描述
按下Ctrl+S,保存該報文。

2) HTTP條件請求/響應(file 2)

a) 啓動網頁瀏覽器,並確保瀏覽器的緩存清零。
在這裏插入圖片描述
b) 啓動 Wireshark 的數據包嗅探器。具體步驟如1中所示。
在這裏插入圖片描述
c) 輸入以下網址到瀏覽器:
http://gaia.cs.umass.edu/wireshark-labs/HTTP-wireshark-file2.html
在這裏插入圖片描述
d) 再次快速輸入相同的 URL 到您的瀏覽器(或只需選擇瀏覽器上的刷新按鈕)。
在這裏插入圖片描述
e) 停止 Wireshark 的數據包捕獲,並在顯示過濾器規格窗口輸入“http”。
在這裏插入圖片描述
觀察到,這就是我們在上一步實驗中提前遇到的情況。第二次響應報文如下:
在這裏插入圖片描述
按下Ctrl+S,進行保存。

3) 檢索長文檔(file3)

a) 啓動網頁瀏覽器,並確保瀏覽器的緩存清零。
在這裏插入圖片描述
b) 啓動 Wireshark 的數據包嗅探器。具體步驟如1中所示。
在這裏插入圖片描述
c) 輸入以下網址到瀏覽器:
http://gaia.cs.umass.edu/wireshark-labs/HTTP-wireshark-file3.html
在這裏插入圖片描述
d) 停止Wireshark的數據包捕獲,並在顯示過濾器規格窗口輸入“http”,所以只捕獲HTTP信息將被顯示出來。
在這裏插入圖片描述
觀察到與之前不同的是,服務器連續向瀏覽器發送了三個響應報文。這是由於發送的HTTP對象大小超過了MSS,所以需要分多個包進行傳輸,相應的包因此標記爲“Continuation”。觀察到第一個、第二個響應報文的長度均爲1506,猜測該值對應MSS。第一個響應報文如下:
在這裏插入圖片描述
第二個響應報文如下:
在這裏插入圖片描述
第三個響應報文如下:
在這裏插入圖片描述

4) 嵌入對像的 HTML 文檔(file4)

a) 啓動網頁瀏覽器,並確保瀏覽器的緩存清零。
在這裏插入圖片描述
b) 啓動 Wireshark 的數據包嗅探器。具體步驟如1中所示。
在這裏插入圖片描述
c) 輸入以下網址到瀏覽器:
http://gaia.cs.umass.edu/wireshark-labs/HTTP-wireshark-file4.html
在這裏插入圖片描述
d) 停止 Wireshark 捕獲數據包,並在顯示過濾器規格窗口輸入“http”,只顯示捕獲的 HTTP 信息。
在這裏插入圖片描述
由於該網頁包含兩個嵌入的圖像,因此在瀏覽器發送第一個請求報文並收到來自服務器的響應報文之後,會再發送兩個請求報文,用於請求這兩個圖像(其一爲PNG格式,其二爲JPEG格式)。理論分析與結果一致。第一個響應報文的結果如下圖所示:
在這裏插入圖片描述
該HTML文件中存在兩個對圖像文件的引用,因此第二個請求報文爲:
在這裏插入圖片描述
第三個請求報文爲:
在這裏插入圖片描述
第二個響應報文:
在這裏插入圖片描述
第三個響應報文:
在這裏插入圖片描述
e) 對於嵌入對像的HTML文檔,其條件請求/響應的情況會是怎麼樣的?出於興趣,我再次啓動 Wireshark 的數據包嗅探器,並刷新網頁。結果如下:
在這裏插入圖片描述
觀察到請求報文不變,響應報文由“200 OK”更改爲“304 Not Modified”。

5) HTTP 認證(file5)

a) 確保瀏覽器的緩存清零,並關閉瀏覽器。然後,啓動瀏覽器。
在這裏插入圖片描述
b) 啓動 Wireshark 的數據包嗅探器。具體步驟如1中所示。
在這裏插入圖片描述
c) 輸入以下網址到瀏覽器:
http://gaia.cs.umass.edu/wireshark-labs/protected_pages/HTTP-wireshark-file5.html

d) 在彈出框鍵入要求的用戶名和密碼。用戶名是“wireshark-students”,密碼爲“network”。
在這裏插入圖片描述
瀏覽器成功訪問到了該網頁。
在這裏插入圖片描述
e) 停止 Wireshark 的數據包捕獲,並在顯示過濾器窗口輸入“http”,確保只有捕獲的HTTP 消息在分組列表窗口顯示。結果如下:
在這裏插入圖片描述
觀察到,瀏覽器向服務器發送了一個請求報文,之後收到一個由“401 Unauthorized”標識的響應報文,之後瀏覽器發送第二個請求報文,得到第二個響應報文。查閱資料得知,401 Unauthorized客戶端錯誤狀態響應代碼指示該請求尚未應用,因爲它缺少目標資源的有效認證憑證。這種狀態類似403,但在這種情況下,身份驗證是可能的。此狀態與包含有關如何正確授權信息的WWW-Authenticate標頭一起發送。
Wireshark捕獲的第一個響應報文爲:
在這裏插入圖片描述
輸入賬號與密碼之後,瀏覽器發送的請求報文如下:
在這裏插入圖片描述
觀察到在Authorization中包含有輸入的賬號與密碼。

f) 那麼對於這種情況,其條件請求/響應的情況會是怎麼樣的?出於興趣,我再次進行嘗試,結果如下:
在這裏插入圖片描述
由於本地緩存的存在,因此在這裏並不需要再次輸入賬號與密碼。如預期一樣,響應報文的狀態碼爲“304 Not Modified”。

3. 對TCP協議進行分析

這部分我另寫了一篇博客詳細介紹。地址爲:
https://blog.csdn.net/qq_41112170/article/details/106546348


版權聲明:本文爲博主原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接和本聲明。
本文鏈接:https://blog.csdn.net/qq_41112170/article/details/106270724

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