0.1 HTTP

 

 

超文本傳輸協定(HTTP,HyperText Transfer Protocol)是網際網路上應用最為廣泛的一種網路協議。所有的WWW檔案都必須遵守這個標準。設計HTTP最初的目的是為了提供一種發行和接收HTML頁面的方法。

 

 

Wireshark Lab : HTTP

現在我們準備好使用Wireshark來對協定展開調查行動。在這次的實驗中,我們會探索一些HTTP協定: basic GET/response互動、HTTP訊息格式、擷取龐大文件、擷取含有嵌入式物件的HTML文件和HTTP授權與安全。

 

1.基礎 HTTP GET/response 互動

1. 啟動你的瀏覽器。

2. 啟動Wireshark(但是先不要開始擷取封包),在過濾器中輸入”http”,使得只有包含http的訊息會被顯示在擷取清單(在此我們只想看到和http協定有關的封包)。

3. 先等待一分鐘以上,再開始Wireshark的封包擷取。

4. 在你的瀏覽器輸入下列的網址:

http://gaia.cs.umass.edu/wireshark-labs/HTTP-wireshark-file1.html

你的瀏覽器應該會顯示一個非常簡單的一行HTML檔案。

5. 停止Wireshark的封包擷取。

首先,我們要擷取HTTP連線的封包,在我們用範例的網站擷取封包後,再用Filter篩選出http的封包(如果知道ip,也可以用ip.addr = 擷取)。結果如下:

 

接下來我們按照步驟,瀏覽http://gaia.cs.umass.edu/wireshark-labs/HTTP-wireshark-file1.html 這個網站

並抓取封包

 

Q請問瀏覽器運行的HTTP版本是1.0或1.1嗎?伺服器的HTTP版本是?

答:

我們可以從下圖的地方找到這個訊息 

 

可以看到 兩個答案都是1.1

 

Q請問你的瀏覽器可以辨識那些語言?

答:我們可以在第一個GET中的Hypertext Transfer Protocol找到accept_language這一項,如下圖:

 

 

Q請問你電腦的IP地址是?gaia.cs.umass.edu的IP地址是?

答:可在Internet Protocol 看到,my computer:140.136.91.193

   sever:128.119.245.12 如下圖:

 

 

Q請問瀏覽器上顯示從伺服器回傳的status code是甚麼?

HTTP 狀態碼指的是從伺服器端回應(HTTP Response)的狀態

,在Hypertext Transfer Protocol中可以找到,見下圖:

 

 

 

我們顯示的是200 表示伺服器成功接收到用戶端要求

 

HTTP 狀態碼大致分成 5 類:

  a.1xx-參考資訊 (Informational): 這些狀態碼代表主機先暫時回應用戶端一個狀態,所以在接收一般的回應之前,用戶端應準備接收一個或多個 a 的回應。

   b.2xx-成功 (OK): 這類的狀態碼表示伺服器成功接收到用戶端要求、理解用戶端要求、以及接受用戶端要求。

   c.3xx-重新導向 (Redirection): 用戶端瀏覽器必須採取更多動作才能完成要求。例如:瀏覽器可能必須重新發出 HTTP Request 要求伺服器上的不同頁面。

   d.4xx-用戶端錯誤 (Client Error): 這代表錯誤發生,且這錯誤的發生的原因跟client有關。

   e.5xx-伺服器錯誤 (Server Error): 這代表錯誤發生,且這錯誤發生的原因跟server有關。伺服器因為發生錯誤或例外狀況(Exception)而無法完成要求(Request)時,就會回應 5xx 的錯誤

        資料來源:http://blog.miniasp.com/post/2009/01/16/Web-developer-should-know-about-HTTP-Status-Code.aspx

 

Q上一次從伺服器端接收的HTML資料是甚麼時候?

答:Last-Modified是記載文件在server最後被修改的時間

 如下圖:

  

    Last-Modified: Thu, 03 Jan 2013 08:26:01 GMT\r\n

 

Q:回傳至你的瀏覽器的內容大小是幾個bytes?

答:回傳內容的大小是在Hypertext Transfer Protocol,大小是128

 

Q在檢查視窗中的內容,有任何標頭沒有被顯示在packet-listing的視窗上?如果有,請舉例

答:無法在 raw data中找到所有headers

 

 

 2.HTTP 條件式 GET/response 互動

˙啟動你的瀏覽器,且確認瀏覽器得快取已經清空。

˙啟動Wireshark且開始擷取封包。

˙在你的瀏覽器中輸入下列的URL:

http://gaia.cs.umass.edu/wireshark-labs/HTTP-wireshark-file2.html

你的瀏覽器應該會顯示一個非常簡單的五行HTML檔案。

˙迅速地再次在你的瀏覽器中輸入同一個URL(或是直接按下瀏覽器中的重新整理)。

˙停止Wireshark的封包擷取,然後再過濾器中輸入”http”,使得只有包含http的訊息會被顯示在擷取清單。

 

Q檢查第一個從瀏覽器到伺服器HTTP GET指令的內容,你有看到HTTP GET行裡有IF-MODIFIED-SINCE嗎?

Ans沒有

Q檢查伺服器回傳的內容,伺服器有正確的回傳檔案內容嗎?

Ans有 我們可以在最下面Line-based text data中看到

Q檢查第二個從瀏覽器到伺服器HTTP GET指令的內容,你有看到HTTP GET行裡有IF-MODIFIED-SINCE嗎?如果有,“IF-MODIFIED-SINCE:”標頭有哪些資訊?

Ans:  Thu, 23 Sep 2003 05:35:00 GMT

         

If-Modified-Since是標準的HTTP request header,在發送HTTP request時,把瀏覽器端暫存頁面的最後修改時間一起發到server去,server會把這個時間與服務器上實際文件的最後修改時間進行比較。

如果時間一致,那麼返回HTTP狀態碼304(不返回文件內容),client接到之後,就直接把暫存文件顯示到瀏覽器中。

如果時間不一致,就返回HTTP狀態碼200和新的文件內容,client接到之後,會丟棄舊文件,把新文件暫存,並顯示到瀏覽器中。

 

Q在這第二個HTTP GET伺服器回傳甚麼HTTP狀態碼和用詞?伺服器有明確的回應檔案內容嗎?

AnsHTTP/1.1 304 Not Modified.

         NO, 伺服器沒有回傳檔案內容

 

 

3.擷取龐大文件

˙啟動你的瀏覽器,且確認瀏覽器得快取已經清空。

˙啟動Wireshark且開始擷取封包。

˙在你的瀏覽器中輸入下列的URL:

http://gaia.cs.umass.edu/wireshark-labs/HTTP-wireshark-file3.html

你的瀏覽器應該會顯示一個有點冗長的美國人權法案。

˙停止Wireshark的封包擷取,然後再過濾器中輸入”http”,使得只有包含http的訊息會被顯示在擷取清單。

 

Q你的瀏覽器寄了多少HTTP GET訊息?

Ans

Q一個HTTP回應有多少資料包含TCP訊號?

Ans4個資料(1460,1460,1460,436 bytes)

     總和:4816 bytes

QHTTP GET的回應與甚麼狀態碼和用語有關?

Ans200 OK 

Q有任何HTTP狀態在傳送資料時與TCP  “延續性” 有關?

Ans無關 

 

 

4.含有嵌入式物件的HTML文件

˙啟動你的瀏覽器,且確認瀏覽器得快取已經清空。

˙啟動Wireshark且開始擷取封包。

˙在你的瀏覽器中輸入下列的URL:

http://gaia.cs.umass.edu/wireshark-labs/HTTP-wireshark-file4.html

你的瀏覽器應該會顯示一個含有兩張圖片的簡短HTML檔案,這兩張圖片在基本HTML檔案中被參考,也就是那些圖片本身並不包含在HTML裡面,而是圖片的URL包含在下載好的HTML檔案中。向課本中所討論的,你的瀏覽器必須從指定的網站擷取這些商標圖案,我們的出版商的商標圖案是從www.aw-bc.com網站所擷取下來的,而我們的書的封面圖案則儲存在manic.cs.umass.edu伺服器中。

˙停止Wireshark的封包擷取,然後再過濾器中輸入”http”,使得只有包含http的訊息會被顯示在擷取清單。

 

Q你的瀏覽器寄了多少HTTP GET訊息?GRT回應從哪個網路地址所寄的?

Ans

1. 128.119.245.12

2. 165.193.123.128

3. 134.241.6.82

Q瀏覽器是否連續下載兩張照片或平行的從兩個網站下載?並解釋

Ans在檢查TCP埠時可以看到我們的檔案會連續或平行的下載,2張照片會從TCP連結傳輸,因此會連續下載

 

 

5.HTTP 授權

˙啟動你的瀏覽器,且確認瀏覽器得快取已經清空。

˙啟動Wireshark且開始擷取封包。

˙在你的瀏覽器中輸入下列的URL:

http://gaia.cs.umass.edu/wireshark-labs/protected_pages/HTTP-wiresharkfile5.

html

在彈出視窗中輸入使用者名稱和密碼。

˙停止Wireshark的封包擷取,然後再過濾器中輸入”http”,使得只有包含http的訊息會被顯示在擷取清單。

 

Q從瀏覽器最一開始的HTTP GET訊息得到伺服器的回應是甚麼?

AnsStatus code: 401 , Phrase: Authorization Required

Q第二次傳送HTTP GET訊息是何時?有甚麼新的東西包含在HTTP GET訊息裡?

AnsAuthorization: Basic ZXRoLXN0dWRlbnRzOm5ldHdvcmtz