使用網路分析軟體學習HTTP協議!

來源:互聯網
上載者:User

 

給大家轉一篇http協議的文章,對我等網路分析點新手還是很有協助的。
原帖地址:http://www.csna.cn/viewthread.php?tid=371

一、目的
學習網路分析也有段時間了,到現在也算是逐漸入門了吧,想想自己以前剛接觸時,不知道從何入手。學習網路分析,肯定要從協議入手,如果只看相關資料,這樣 印象不深刻,而且也沒什麼實戰的經驗,速度和效率都慢了很多。後來有高人指點了我,用網路分析軟體來學習協議比較好,從此我開始了另外一種方法的學習。呵 呵,自己作為一個初學者,想把自己學習的方法寫出來,和大家交流交流,個人認為方法是最重要的。
TCP/IP協議族裡的協議太多了,這個還的靠時間的積累:)說了這麼多廢話,嘿嘿!
其實應用程式層協議是我們經常用到的協議,比如HTTP,FTP等等,下面我們就來談談HTTP協議(不看網頁不可能吧-.-#),學習其他協議時可以用類似的方法,靈活變通 。^o^

二、實驗環境
我們這裡實驗的網路環境很簡單,簡單描述一下:
1.   網路環境:本人電腦通過Proxy 伺服器ADSL撥接,本機IP=192.168.0.92;
2.   作業系統:本人電腦使用Windows XP+SP2;
3.   工具(關鍵喲):我接觸過Sniffer,OmniPeek,ethereal,科來網路分析系統,個人相對這幾種軟體用的稍微熟悉的還是OmniPeek,這裡我就以OmniPeek為學習工具。

三、具體操作
我實驗過程也很簡單,訪問網頁大家都很清楚吧?我這裡只是用更加深入的方式來瞭解訪問網頁的種種過程及原理,具體操作如下:
1. 開啟OminPeek的設定,在Filers裡面設定Address filer:192.168.0.92和protocl filter選擇HTTP協議,1,

(圖1   過濾器設定)
說明:通過設定圖1的過濾器,我們就可以只捕獲192.168.0.92使用HTTP協議的通訊了:)

2.   開始捕獲,使用主機192.168.0.92訪問網頁http://www.csna.cn,抓取資料包,2,

(圖2 抓取的資料包)
說明:呵呵,準備就緒,開始捕獲,我們訪問http:\\www.csna.cn論壇,捕獲到的資料包。

四、原理知識
使用網路分析軟體進行對協議學習,並不是叫我們都拋開那些資料,那些理論原理,我這裡所說的就是“結合”,瞭解協議的結構,工作原理,相關特徵是很重要 的,這時我們在通過網路分析軟體來操作,就會更加明確。我們還是先介紹一下HTTP協議的工作原理吧(不要怪我羅嗦喲)。

1. TCP/IP分層結構
TCP/IP的階層和工作原理,我們就不詳細介紹了,這裡就針對HTTP進行一下說明:簡單的說HTTP協議是應用程式層協議,通過下層傳輸層的TCP進 行可靠串連,網路層IP選路,鏈路層Ethernet II,最後在物理上以位(Bit)進行傳輸。
應用程式層 -------------HTTP
傳輸層 -------------TCP
網路層 -------------IP
鏈路層 -------------Ethernet II

2. HTTP協議工作方式
由於HTTP協議是基於請求/響應模式的(相當於客戶機/伺服器)。一個客戶機與伺服器建立串連後,發送一個請求給伺服器,請求方式的格式為:統一資源標 識符(URL)、協議版本號碼,後邊是MIME資訊包括請求修飾符、客戶機資訊和可能的內容。伺服器接到請求後,給予相應的響應資訊,其格式為一個狀態行, 包括資訊的協議版本號碼、一個成功或錯誤的代碼,後邊是MIME資訊包括伺服器資訊、實體資訊和可能的內容。
這個過程就好像我們打電話訂貨一樣,我們可以打電話給商家,告訴他我們需要什麼規格的商品,然後商家再告訴我們什麼商品有貨,什麼商品缺貨。這些,我們是通過電話線用電話聯絡(HTTP是通過TCP/IP)。
HTTP協議的內部操作過程:基於HTTP協議的客戶/伺服器模式的資訊交換過程,它分四個過程:建立串連、發送請求資訊、發送響應資訊、關閉串連。這就好像上面的例子,我們電話訂貨的全過程。
其實簡單說就是任何伺服器除了包括HTML檔案以外,還有一個HTTP駐留程式,用於響應使用者請求。你的瀏覽器是HTTP客戶,向伺服器發送請求,當瀏覽器中輸入了 一個開始檔案或點擊了一個超級連結時,瀏覽器就向伺服器發送了HTTP請求,此請求被送往由IP地址指定的URL。駐留程式接收到請求,在進行必要的操作 後回送所要求的檔案。在這一過程中,在網路上發送和接收的資料已經被分成一個或多個資料包(packet),每個資料包包括:要傳送的資料;控制資訊,即 告訴網路怎樣處理資料包。TCP/IP決定了每個資料包的格式。

五、   資料包分析
我們現在來分析剛剛抓取的資料包,看看HTTP協議怎樣進行建立串連,發送請求資訊,發送響應資訊,關閉串連的過程。

1. 建立串連
第1.2.3個資料包是HTTP協議使用下層TCP協議通過三向交握原則建立串連的過程,3所示,

(圖3 建立串連)
說明:圖3中選中三個資料包描述的是TCP三向交握的過程。這樣我們可以知道,HTTP通訊是發生在TCP協議之上,預設連接埠是TCP的80連接埠,所以HTTP是一個可靠的協議。
至於三向交握原理,看解碼:

上面三個圖分別為前三個資料包中的TCP標記資訊,反映了TCP的三向交握過程:用戶端向Web伺服器發送一個SYN同步串連請求,Web伺服器收到請求 後向用戶端發送一個SYN/ACK資料包,同意用戶端的串連請並向客端發起同步,用戶端收到該資料包後再次確認,從而成功建立TCP串連。

2. 發送請求資訊

接下來我們再來觀察第四個資料包,這個是主機192.168.0.92發起的HTTP請求包,4,
  

(圖4 發送請求資訊)
圖4中,我們從資料包解碼中看到HTTP協議發送請求資訊的一些特徵。開啟一個串連後,客戶機把請求訊息送到伺服器的停留連接埠上,完成提出請求動作。

圖4中的HTTP請求報文
       HTTP Command:    //方法欄位,說明其使用的是GET方法
       URI: /                //URL欄位,發送請求至儲存該網站的伺服器。
       HTTP Version:        //http協議版本欄位,用是的http/1.1版本
       Accept:              //指示可被接受的請求回應的介質類型範圍列表。
       Accept-Language: //限制了請求回應中首選的語言為簡體中文,否則使用預設值。
       Accept-Encoding: //限制了回應中可接受的內容編碼值,指示附加內容解碼方式為gzip,deflate.
       User-Agent:    //定義使用者代理程式,即發送請求的瀏覽器類型為Mozilla/4.0
       Host: www.csna.cn\r\n             //定義了目標所在的主機
       Connection: Keep-Alive\r\n             //告訴伺服器使用持久串連

3. 發送響應資訊
第6個資料包是伺服器的響應包資訊,從圖4可以看出,

(圖5 響應報文)
分析解碼,我們可以知道這些內容:
伺服器在處理完客戶的請求之後,要向客戶機發送響應訊息。

圖5中的HTTP回應報文
       HTTP Version: HTTP/1.1    //伺服器用的是HTTP/1.1版本
       HTTP Status: 200    //請求成功,資訊可以讀取,包含在響應的報文中
       Date:    //指伺服器從檔案系統中檢索到該對象,插入到響應報文,並發送該響應報文的時間
       Server: //表明刻報文是由一個Apache/2.0.52的伺服器產生的
       X-Powered-By: //表明是使用PHP(版本)的動態網頁
       Set- cookie:     //
       Vary:     //
       Content-Length: //表明實體的長度
       Connection:    //告訴客戶機在報文發送完畢後仍然保持串連
       Content-Type: //表明實體中的對象是html文檔
       Binary Data: //位元據
說明:在伺服器給的回應請求中,我們可以從狀態代碼中看到訪問的相關資訊。

狀態代碼表示響應類型,常用的有:
1××  保留
2××  表示請求成功地接收
3××  為完成請求客戶需進一步細化請求
4××  客戶錯誤
5××  伺服器錯誤
在我們抓到的資料包中,狀態代碼是200,表明請求是成功接受請求。

4. 關閉串連
最後4個資料包(52.53.54.55)就是通訊的關閉過程,建立一個串連需要進行三向交握,而終止一個串連則需要經過4次握手。這是由於TCP串連是 全雙工系統的,每個方向上都必須單獨地進行關閉。4次握手實際上就是兩個方向上單獨關閉的過程。這裡就不詳細說明了,

六、小結
從上面的講解,我想咱們對HTTP協議也瞭解了很多了吧,對照分析軟體來學習是不是覺得有點不一樣哇,我們在資料包解碼中看到只是資料所說的有點出入。呵 呵,資料上說的是不是要複雜的多,這也說明,在具體實際情況下是不同的。在這裡,我們只是說說學習的思路,TCP/IP協議是非常複雜的,一個好的學習方 法,使的咱們在學習其他協議的時候就能舉一反三:)希望大家能談談自己的學習方法。大家互相交流

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.