Wireshark實戰分析之IP協議

(1): 什麼是IP協議?

        互聯網協議IP是Internet Protocol的縮寫,中文縮寫問哦“網協”。IP協議位於OSI模型中的第三層也就是網絡層,其主要目的是使得網絡之間能夠互相通信。

(2):什麼是IP地址? IP地址是如何產生的?

       互聯網協議地址(Internet Protocol Address)中文爲:網際協議地址,縮寫爲IP地址。

       上一次說的ARP協議,通過分析發現它是依靠MAC地址發送數據的。但是當ARP以廣播的方式發送ARP請求時,需要確保所有的主機都要收到該數據包的。這樣不僅傳輸效率低,而且只能侷限在同一個子網中。也就是說如果兩臺主機不在一個子網,廣播報是發送不過去的。當然了這樣的設計是合理的,不然會導致全網癱瘓。所以需要一種方法來區分那些MAC地址屬於同一個子網,那些不是。同一個子網就採用廣播的發送方式。否則就採用“路由”發送。所以就必須引入一套新的地址,使得用戶能夠區分不同的計算機是否屬於同一個子網,通常人們稱問“IP”地址。這時候一臺主機就會有兩種地址。MAC地址,IP地址。但是兩者沒有太大的關係。MAC地址是綁定在網卡上的,是唯一的。而IP地址是有網絡管理員分配的。


(3)IP地址

        IP地址是IP協議提供的一種統一的地址格式,它爲互聯網上的每一個網絡和每一臺主機分配分配一個邏輯地址,以此來屏蔽物理地址的差異。IP地址分爲IPv4和IPv6兩大類,其中IPv4使用最廣泛的。在IPv4中IP地址是由32個二進制組成。由於IP地址是32位的二進制,用戶記住一串32位二進制是很難的,所以IP地址採用點分四組的表示法。

(4)IP地址的構成

          IP地址之所以會被分成四個單獨的部分,是因爲每個IP地址都包含兩部分,分別爲網絡地址和主機地址。網絡地址用來標識設備所連接到的局域網,主機地址用來表示這個局域網中的設備本身。

          但是通常一個IP地址是無法判斷網絡部分的。所以需要引入另一個參數“子網掩碼”。子網掩碼的形式等同於IP地址,也是一個32位的二進制數字。它的網絡部分全爲1,主機部分全文0.

        例如: IP爲10.10.1.22,它的子網掩碼爲11111111.11111111.00000000.00000000。這就意味着IP地址的前一半10.10是網絡地址,1.22是主機地址。


(1)什麼是IP數據報

        TCP/IP協議定義了一個在局域網上傳輸的包,稱爲IP數據報(IP Datagram)。IP數據報由首部和數據兩部分組成,首部部分包括版本,長度,IP地址等信息。數據部分一般用來傳輸其他的協議,如TCP,UDP和ICMP協議等。

(2)IP數據報首部格式

        

     版本:     指IP協議所使用的的版本。目前廣泛使用的IP協議版本號爲4

    首部長度:  IP首部長度,可表示的最大十進制數值是15。注意,該字段所表示的單位是32位字長(4個字節)。因此首部長度最大爲60字節

    服務類型: 優先級標誌位和服務類型標誌位

    總長度:    指IP首部和數據包中數據之後的長度,單位爲字節。總長度爲16位,因此最大長度爲2^16- 1 = 65536字節

    標識:  一個唯一的標識數字,用來標識一個數據報或者被分片數據報的次序

    標誌:   用來標識一個數據包是否是一組分片數據包的一部分。 最低位MF(More Fragment)。當MF=1表示後面“還有分片”的數據包,MF=0表示這已經是最後一個分片數據了,中間位DF(Dont Fragment)不能分片,只有當DF=0時,才允許分片

    片偏移: 一個數據包其中的分片,用於重新組裝數據用

    生存時間: 用來定義數據包的生存週期

    協議: 用來識別在數據包序列中上層協議數據包的類型

    首部檢驗和: 一個錯誤的檢測機制,確保IP頭部沒有被修改

   源地址: 發送端的IP地址

   目的地址:數據包目的的IP地址

    可選字段:保留作額外的IP選項

    數據部分:使用IP傳遞實際數據用。

(3)分析IP數據報

     在本地主機上ping  www.baidu.com,使用wireshark獲取數據

    

    

 (4)先分析29幀,也就是請求幀

     選中29幀,查看包的詳細信息

    

  (5)分析30幀,也就是迴應幀

    

     

     其中明顯的不同的是生存時間發了變化,也就是從我本地到百度之間總共經過了64-55=9個路由。當然每次可能經過的路徑是不一樣的。我們可以通過tracert命令查看。

    

    可以看到經過了11個路由,顯然每次路徑是不一樣的。


(1)存活時間/生存時間是什麼?

        存活時間Time-to-live(TTL)值定義了在該數據報丟失之前,所能經歷的時間,或者能夠經過的最大路由數目。TTL在數據報被創建時就會被定義,而且通常在每次被髮往一個路由器的時間減1.

       例如: 如果一個數據包的存活時間是2,那就是說當它經過第一個路由器的時候,其TTL會被減去1,並向第二個路由發送,如果到第2個路由這是TLL時間會減去1,變爲0。如果這時候數據包還沒有到達目的地,則會丟棄該數據包。


(2)存活時間的作用的是啥?

      假設在發送目地的過程中,會經過數十個路由器,在這個過程中,可能會碰到被配置錯誤的路由器,而會導致其目的地錯誤。在這種情況下,可能這個數據包就會一直髮送,在網絡中出現一個死循環,這樣就會導致整個網絡癱瘓等。所以當每次經過一個路由器TTL的值都會減去1,所以可以防止這個問題的出現。


(3)分析IP數據包中TTL值的變化

      前面說過,如果在同一個網段傳輸數據,TTL的值是補變化的。如果是不同的網段TTL的值是變化 的

      1.  分析同網段中TTL的值

            

        我搭建的環境是用192.168.0.1 ping  192.168.0.2 (上圖是抓包的過程)

        可以看到74幀是request幀

        

        相應的75幀就是迴應報文(reply)

       

     可以看到如果是相同的網段,TTL的值是相同的。

      2. 分析不同網段TTL的值

        分析不同網段的TTL,其實在第二節中分析中可以明顯看見TTL的值是不同的。 在這裏我通過ping新浪的官網。很明顯新浪官網地址和我本地的是屬於不同的網段

        

  其中19幀是請求報文(request)而20幀是響應報文(reply)

     分析19幀報文的詳細信息:

    

        分析20幀的詳細信息:

        


(1) IP分片數據包

           由於以太網數據報的“數據”部分最長只有1500字節,因此如果IP數據報超過了1500字節,就需要分割成多個以太網數據包分開發送。

           在使用ping命令時,默認是不會超過1500字節的,所以如果想要獲取IP分片包,需要指定發送的ICMP包大大小。

           比如: ping   192.168.0.1  -l  3000  指定獲取包的大小爲3000


(2) 分析IP分片數據包分析

           

     在該獲取文件中,123幀和678幀是一個完整的ping包,其中123是一個請求包,678是響應包。

     1.     分析 第1幀數據包

      

     2.      分析第2幀數據包

       

      3.   分析第3幀數據包

         


   分析就到這裏




發佈了93 篇原創文章 · 獲贊 16 · 訪問量 151萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章