計算機網路實驗——HTTP
一. 實驗說明。
在這個實驗中,我們將探討HTTP協議的幾個方面:基本的GET/response互動、HTTP訊息格式、檢索大型HTML檔案、檢索帶有嵌入物件的HTML檔案、以及HTTP認證和安全性。
二. 基本HTTP獲取/響應(GET/response)互動
我們通過下載一個非常簡單的HTML檔案來開始對HTTP的探索——一個非常短的、不包含嵌入物件的檔案。
a. 啟動網頁瀏覽器。
b. 啟動EnthalBox嗅探器,如介紹性實驗室中所描述的(但尚未開始捕獲資料包)。在“顯示篩選器規範”視窗中輸入“HTTP”(只是字母,而不是引號),以便只在分組列表視窗中顯示捕獲的HTTP訊息。(我們只對HTTP協議感興趣,不想看到捕獲所有的混亂資料包)。
c. 等待一分鐘多一點(我們馬上就會明白),然後開始以太包捕獲。
d. 向瀏覽器輸入以下內容:
瀏覽器應該顯示非常簡單的單行HTML檔案。
e. 停止抓包
通過抓包結果可以看到,客戶端向伺服器請求一個簡單的HTML檔案,伺服器將該檔案返回給客戶端。
問題:
1. 瀏覽器執行HTTP版本1還是1.1?伺服器執行的是什麼版本的HTTP?
瀏覽器執行的HTTP版本是1.1,伺服器執行的HTTP版本也是1.1。
本地瀏覽器:
伺服器:
2. 您的瀏覽器顯示哪些語言(如果有的話)可以通過伺服器接收?
我的本地瀏覽器顯示簡體中文(zh_CN)
3. 你的電腦的IP地址是什麼?gaia.cs.umass.edu伺服器呢?
本地電腦ip: 10.63.108.63
gaia.cs.umass.edu伺服器ip:128.119.245.12
4. 從伺服器返回到瀏覽器的狀態程式碼是什麼?
返回的狀態程式碼是 200 ,表示成功處理請求。
5. 您在伺服器上檢索到的HTML檔案是在什麼時候修改的?
在伺服器上檢索到的HTML檔案修改時間:2018.5.14 05:59:01
6. 有多少位元組的內容被返回到瀏覽器?
有126位元組的內容被返回到瀏覽器。
7. 除以上已回答過的欄位外,頭部還有哪些欄位?在資料包內容視窗中檢查原始資料,是否有未在資料包列表中顯示的頭部?
HTTP請求報文中還有Host欄位、connection欄位、Accept欄位、User-agent欄位、Accept-Encoding欄位等。
HTTP響應報文中還有server欄位、connection欄位等。
三. HTTPGET/Response 有條件的相互作用。
步驟
①開啟Wireshark,開始資料包捕獲。
②在你的瀏覽器中輸入如下的 URL 地址:http://gaia.cs.umass.edu/wireshark-labs/HTTP-wireshark-file2.html
瀏覽器將會顯示一個很簡單的 5 行的 HTML 檔案;
③快速地在你的瀏覽器中再次輸入相同的 URL(或者點一下重新整理);
④停止Wireshark 資料包捕獲,在在 Wireshark 主視窗頂部的 Filter 中輸入“ http”,因此只有捕獲的 HTTP 訊息稍後將會顯示在資料包列表視窗中。
得到如下資料報:
問題:
8. 從你的瀏覽器到伺服器得到的請求中檢查第一個 HTTP GET 的內容。在 HTTP GET中你有沒有看到一行“ IF-MODIFIED-SINCE” ?為什麼?
沒有看到。因為這是瀏覽器第一次請求該頁面。
9. 檢查伺服器迴應內容,伺服器明確地返回了檔案的內容嗎?你怎樣斷定?
返回了檔案內容,因為返回狀態碼為200。並返回了html檔案。
10. 現在從你的瀏覽器到伺服器得到的請求中檢查第二個 HTTP GET 的內容。在 HTTP GET 中你有沒有看到一行“IF-MODIFIED-SINCE” ?如果有,在“ IF-MODIFIED-SINCE”頭部有什麼資訊?
有這行欄位。資訊為上次請求該檔案的時間。
11. 第二次 HTTP 返回的狀態碼是多少?從伺服器返回的響應第二個 HTTP GET 的短語是什麼?伺服器明確地返回了檔案的內容嗎?為什麼?
狀態碼是304,短語是Not Modified,並沒有明確返回檔案內容,因為該網頁內容在上次訪問之後未被修改過,且本地中有上次訪問的快取。
四. 得到較長的文件。
在我們的示例中,檢索到的文件是簡單而簡短的HTML檔案。接下來,看看下載一個長的HTML檔案時會發生什麼。做到以下幾點:
①開啟你的瀏覽器,確信你的瀏覽器快取是空的,就如上面討論的;
②開啟Wireshark,開始資料包捕獲;
③在你的瀏覽器中輸入如下的 URL 地址:http://gaia.cs.umass.edu/wireshark-labs/HTTP-wireshark-file3.html 你的瀏覽器將會顯示相當長的美國權利法案;
④停止 Wireshark 資料包捕獲,在 Filter 欄輸入“ http”,因此只有捕獲的 HTTP 訊息稍後將會顯示在資料包列表視窗中。
問題:
12. 你的瀏覽器傳送了多少個HTTPGET請求訊息?
傳送了一個HTTPGET請求。
13. 傳輸這一個HTTP響應需要多少個TCP資料段?
傳輸這一個HTTP響應需要4個TCP資料段。
14. 響應HTTP GET請求的相關的狀態碼和短語是什麼?
狀態碼200,短語OK。
15. 在TCP“Continuation”附加關聯的傳輸資料中有沒有HTTP狀態碼和短語?
有狀態碼和短語。
五. 帶有內嵌物件的HTTP
現在,我們已經看到了Ethalar如何顯示捕獲的大HTML檔案的分組流量,我們可以看看當瀏覽器下載帶有嵌入物件的檔案時會發生什麼,即,包含其他伺服器(在下面的示例中,影象檔案)儲存在另一個伺服器上的檔案。
步驟:
①開啟瀏覽器,確定你的瀏覽器快取是空的,就如上面討論的;
②開啟Wireshark Network Analyzer,開始資料包捕獲;
④停止 Wireshark 資料包捕獲,在 Filter 視窗中輸入“ http”,因此只有捕獲的 HTTP 訊息稍後將會顯示在資料包列表視窗中。
問題:
16. 瀏覽器一共發出了多少個HTTP GET請求?這些請求被髮送到的目的地的IP地址是多少?
傳送了四個HTTP GET請求,目的地址為:
128.119.245.12
128.119.245.12
128.119.240.90
128.119.240.90
17. 你的瀏覽器是否同時下載這兩張圖片(併發的從兩個網站上下載圖片)?你是如何判斷的?
不是併發下載的,有先後順序。
六. HTTP 認證
訪問一個帶有密碼保護的網站。
步驟:
①確信你的瀏覽器快取是空的,就如上面討論的。關閉你的瀏覽器,然後再開啟;
②開啟Wireshark Network Analyzer,開始資料包捕獲;
③在你的瀏覽器中輸入如下的 URL 地址:http://gaia.cs.umass.edu/wireshark-labs/protected_pages/HTTP-wireshark-file5.html在出現的對話方塊中輸入使用者名稱和密碼,使用者名稱是“wireshark-students”,密碼是“networks”;
④停止Wireshark 資料包捕獲,在Filter視窗中輸入“ http”,因此只有捕獲的HTTP訊息稍後將會顯示在資料包列表視窗中。
問題:
18. 伺服器對起初的HTTP GET訊息的響應(狀態碼和短語)是什麼?與前一部分實驗相比,在這個響應訊息中出現了什麼新的欄位?
狀態碼:401 短語:AuthorizationRequired
新欄位:WWW-Authenticate
19. 當你的瀏覽器第二次傳送HTTP GET訊息時,有什麼新的欄位被包含在HTTP GET訊息中?對應的伺服器響應有沒有新的欄位出現?
GET訊息中出現了新的Authorization欄位。伺服器響應出現了ETag欄位。
20. 當你的瀏覽器第二次傳送HTTP GET訊息時,有什麼新的欄位被包含在HTTPGET訊息中?當你輸入正確的使用者名稱和密碼後,伺服器給出的響應是什麼?
HTTP request欄位。
輸入正確的使用者名稱和密碼後,伺服器給出的響應(狀態碼200,短語OK):