WireShark——IP協議包分析(Ping分析IP協議包)

Pluto_H發表於2020-06-20

   網際網路協議 IP 是 Internet Protocol 的縮寫,中文縮寫為“網協”。IP 協議是位於 OSI 模型中第三層的協議,其主要目的就是使得網路間能夠互聯通訊。前面介紹了 ARP 協議, 該協議用在第二層處理單一網路中的通訊。與其類似,第三層則負責跨網路通訊的地址。在 這層上工作的不止一個協議,但是最普遍的就是網際網路協議(IP)

1. IP協議介紹

   網際網路協議地址(Internet Protocol Address,又譯為網際協議地址),縮寫為 IP 地址(IP Address)。在上一章介紹了 ARP 協議,通過分析包可以發現它是依靠 MAC 地址傳送資料 的。但是,這樣做有一個重大的缺點。當 ARP 以廣播方式傳送資料包時,需要確保所有設 備都要接收到該資料包。這樣,不僅傳輸效率低,而且侷限在傳送者所在的子網路。也就是 說,如果兩臺計算機不在同一個子網路,廣播是傳不過去的。這種設計是合理的,否則互聯 網上每一臺計算機都會受到所有包,將會導致網路受到危害。 網際網路是無數子網共同組成的一個巨型網路。

 

   圖中就是一個簡單的網際網路環境,這裡列出了兩個子網路。如果想要所有電腦都在同 一個子網路內,這幾乎是不可能的。所以,需要找一種方法來區分那些 MAC 地址屬於同一 個子網路,那些不是。如果是同一個子網路,就採用廣播方式傳送。否則就採用路由發 送。這也是在 OSI 七層模型中網路層產生的原因。

   它的作用就是引進一套新的地址,使得使用者能夠區分不同的計算機是否屬於同一個子網 絡。這套地址就叫做網路地址,簡稱網址。但是,人們一般叫做是 IP 地址。這樣 每臺計算機就有了兩種地址,一種是是 MAC 地址,另一種是網路地址(IP 地址)。但是, 這兩種地址之間沒有任何聯絡,MAC 地址是繫結在網路卡上的,網路地址是管理員分配的, 它們只是隨機組合在一起。

2. IP地址

   IP 地址是 IP 協議提供的一種統一的地址格式。它為網際網路上的每一個網路和每一臺主 機分配一個邏輯地址,以此來遮蔽實體地址的差異。IP 地址分為 IPv4IP 協議的第四版) 和 IPv6IP 協議第六版)兩大類。目前,最廣泛使用的是 IPv4。在該版本中規定,該地址 是由 32 個二進位制位組成,用來標識連線到網路的裝置。由於讓使用者記住一串 32 位長的 01 字元確實比較困難,所以 IP 地址採用點分四組的表示法。

   在點分四組表示法中,以 ABCD 的形式構成 IP 地址的四組 1 0。它們分別轉 換為十進位制 0 255 之間的數,如圖 3.2 所示。

 

    3.2 顯示了 IPv4 地址 11000000.10101000.00000000.00000001,進行了點分四組的表 示法。從圖 3.2 中,可以看到這樣一串 32 位長的數字很不容易記住或者表示。但是採用點 分四組的表示法,就可以將以上一個很長的字串表示為 192.168.0.1。這樣,使用者就比較容 易記住。

3. IP地址的構成

   IP 地址之所以會被分成四個單獨的部分,是因為每個 IP 地址都包含兩個部分,分別是 網路地址和主機地址。網路地址用來標識裝置所連線到的區域網,而主機地址則標識這個網 絡中的裝置本身。例如,IP 地址 172.16.254.1 是一個 32 位的地址。假設它的網路部分是前 24 位(192.168.254),那麼主機部分就是後 8 位(1)。處於同一個子網路的計算機,它們 IP 地址的網路部分必定是相同的。也就是說 172.16.254.2 應該與 172.16.254.1 處在同一個子 網路。

   但是,只檢視 IP 地址是無法判斷網路部分的。這時候就需要使用另一個引數子網掩 碼來判斷。所謂的子網掩碼就是表示子網路特徵的一個引數。它在形式上等同於 IP 地址,也是一個 32 位二進位制數字。它的網路部分全部為 1,主機部分全部為 0

   下面以IP地址10.10.1.22為例,其二進位制形式為00001010.00001010.00000001.00010110。 為了能夠區分出 IP 地址的每一個部分,將使用子網掩碼來表示。在本例中,10.10.1.22 的子 網掩碼是 11111111.11111111.00000000.00000000。這就意味著 IP 地址的前一半(10.10 或者 00001010.00001010)是網路地址,而後一半(1.22 或者 00000001.00010110)表示是該網路 上的主機,如圖 3.3 所示。

 

    11111111.11111111.0000000.000000,可以被寫成 255.255.0.0

   IP 地址和子網掩碼為簡便起見,通常會被些成無型別域間選路(Classless Inter Domain RoutingCIDR)的形式。在這種形式下,一個完整的 IP 地址後面會有一個左斜槓(/), 以及一個用來表示 IP 地址中網路部分位數的數字。例如,IP 地址 10.10.1.22 和網路掩碼 255.255.0.0,在 CIDR 表示法下就會被寫成 10.10.1.22/16 的形式。

4. 捕獲IP資料包

1)什麼是 IP 資料包

   TCP/IP 協議定義了一個在因特網上傳輸的包,稱為 IP 資料包(IP Datagram)。IP 資料 報是一個與硬體無關的虛擬包,由首部(header)和資料兩部分組成。首部部分主要包括版 本、長度、IP 地址等資訊。資料部分一般用來傳送其它的協議,如 TCP、UDP、ICMP 等。

  IP 資料包的“首部”部分的長度為 20 到 60 個位元組,整個資料包的總長度最大為 65535 位元組。因此,理論上一個資料包的“資料”部分,最長為 65515 位元組。由於乙太網資料包的 “資料”部分,最長只有 1500 位元組。因此如果 IP 資料包超過了 1500 位元組,就需要分割成 幾個乙太網資料包分開傳送了。

2)TTL

   捕獲 IP 協議包和其它包有點區別,因為在 IP 協議中涉及到一個 TTLtime-to-live,生 存時間)值問題。TTL 值指定資料包被路由器丟棄之前允許通過的網段數量。當資料包每 經過一個路由器,其 TTL 值將會減一。關於 TTL 的詳細資訊,在後面進行介紹。下面將介 紹捕獲 IP 協議包,Wireshark 的位置。

   為了證明 TTL 值的變化,本例中選擇使用三個路由器來捕獲資料包。捕獲 IP 協議資料 包的實驗環境,如圖 3.4 所示。

 

   從圖中,可以看到使用兩個路由器,將三臺主機分割成兩個網段。這三臺主機的 IP 地址,在圖 3.4 中已經標出。在本例中,Wireshark 可以在 PC1 PC2 任意一臺主機上執行。 但是,不可以在 PC3 上執行。因為,在後面將會分別分析同網段和不同網段中 IP 協議包。 如果在 PC3 上捕獲資料包,只能捕獲同網段的 IP 資料包。

3) 捕獲資料包

① 訪問一個網頁

   開啟瀏覽器,訪問 http://www.baidu.com 網站,將捕獲到如圖所示的介面。

 

   從該介面的 Protocol 列,可以看到捕獲到有 DNSTCPHTTP 等協議的包。在這些包 中,都包含由 IP 頭部的詳細資訊。但是,這樣可能會影響對 IP 協議包的分析。

② 執行 ping 命令

   為了不受很多協議的影響,這裡通過執行 ping 命令僅捕獲 ICMP 協議的資料包。此時 在主機 PC1 上執行 ping 命令,分別 pingPC2 PC3。執行命令如下所示:

C:\Users\Administrator>ping 192.168.5.4 C:\Users\Administrator>ping 192.168.6.103

   執行以上命令後,捕獲到的資料包如圖所示。

 

  捕獲到的 IP 協議包

   從該介面的 Protocol 列,可以看到都是 ICMP 協議的包,而且每個包的顏色也都是相同 的。雖然從該介面看到捕獲到的資料包很多,但是隻需要分析其中兩個包,就可以很清楚的 理解 IP 協議包格式。此時,使用者還可以使用 IP 的顯示過濾器對資料包進行過濾。如過濾僅 顯示主機 PC3192.168.6.103)的資料包,輸入過濾器 ip.addr==192.168.6.103,顯示介面如圖所示。

 

   從該介面可以看到,以上資料包都是傳送/來自 192.168.6.103 的資料包。

4) 捕獲 IP 分片資料包

   在上面提到說,如果一個資料包超過 1500 個位元組時,就需要將該包進行分片傳送。通 常情況下,是不會出現這種情況的。但是為了幫助使用者更清晰的理解 IP 協議,下面通過使 用 ICMP 包,來產生 IP 分片資料包。本節將介紹如何捕獲到 IP 分片資料包。

   使用 ICMP 包進行測試時,如果不指定包的大小可能無法檢視到被分片的資料包。由於 IP 首部佔用 20 個位元組,ICMP 首部佔 8 個位元組,所以捕獲到 ICMP 包大小最大為 1472 位元組。 但是一般情況下,ping 命令預設的大小都不會超過 1472 個位元組。這樣,傳送的 ICMP 報文 就可以順利通過,不需要經過分片後再傳輸。如果想要捕獲到 IP 分片包,需要指定傳送的 ICMP 包必須大於 1472 位元組。

   捕獲 IP 分片的資料包。具體操作步驟如下所示:

     1)啟動 Wireshark 捕獲工具。  

     2)在 Wireshark 主介面的選單欄中依次選擇 Capture|Options,或者單擊工具欄中的 (顯示捕獲選項)圖示開啟 Wireshark 捕獲選項視窗,如圖所示。

 

捕獲選項介面

   3)在該介面設定捕獲介面、捕獲過濾器及捕獲檔案的位置。這裡將捕獲的資料儲存 到 ip-fragment.pcapng 捕獲檔案中,如圖 3.10 所示。以上資訊配置完後,單擊 Start 按鈕開始 捕獲資料包,如圖 所示。

 

開始捕獲資料包

   此時在主機 PC1 上執行 ping 命令,以產生 ICMP 資料包。執行命令如下所示:

C:\Users\lyw>ping 192.168.5.4 -l 3000

   在該命令中,使用-l 選項指定捕獲包的大小為 3000 位元組。執行以上命令後,將顯示如 下所示的資訊:

正在 Ping 192.168.5.4 具有 3000 位元組的資料:

來自 192.168.5.4 的回覆: 位元組=3000 時間=5ms TTL=64

來自 192.168.5.4 的回覆: 位元組=3000 時間=5ms TTL=64

來自 192.168.5.4 的回覆: 位元組=3000 時間=5ms TTL=64

來自 192.168.5.4 的回覆: 位元組=3000 時間=5ms TTL=64

   從以上輸出資訊中,可以看到捕獲到每個包的大小都為 3000 位元組。這時候,返回到 Wireshark 介面停止捕獲資料,將顯示如圖所示的介面。

 

    IP 分片資料包

   從該介面可以很清楚的看到,和前面捕獲到的資料包不同。在該介面 Protocol 列,顯示 了 IPv4 協議的包。這是因為傳送的資料包過大,所以經過了分片後傳送的。

5、IP資料包首部格式

    IP 地址和目的 IP 地址都是 IPv4 資料包首部最重要的組成部分。但是,在首部固定 部分的後面還有一些可選欄位,並且其長度是可變的。下面將詳細介紹 IP 資料包首部格式, 如表 3-1 所示。

3-1  IP資料包首部格式  

IP協議

偏移位

03

47

815

1618

1931

0

版本

首部長度

服務型別

總長度

32

識別符號

標記

分段偏移

64

存活時間

1

首部校驗和

 

96

IP地址

128

目的IP地址

160

選項

160192+

資料

在表 3-1 中,每個欄位代表的含義如下所示:

   · 版本號:指 IP 協議所使用的版本。通訊雙方使用的 IP 協議版本必須一致。目前廣 泛使用的 IP 協議版本號為 4,即 IPv4

   · 首部長度:IP 的首部長度,可表示的最大十進位制數值是 15。注意,該欄位所表示 的單位是 32 位字長(4 個位元組)。因此,當 IP 首部長度為 1111(即十進位制的 15) 時,首部長度就達到 60 位元組。當 IP 分組的首部長度不是 4 位元組的整數倍時,必須利用最後的填充欄位加以填充。

   · 服務型別:優先順序標誌位和服務型別標誌位,被路由器用來進行流量的優先排序。

   · 總長度:指 IP 首部和資料包中資料之後的長度,單位為位元組。總長度欄位為 16 位, 因此資料包的最大長度為 216-1=65535 位元組。

   · 識別符號:一個唯一的標識數字,用來識別一個資料包或者被分片資料包的次序。

   · 標識:用來標識一個資料包是否是一組分片資料包的一部分。標誌欄位中的最低位 記為 MFMore Fragment)。MF=1 即表示後面還有分片的資料包。MF=0 表 示這已是若干資料包分片中的最後一個。標誌欄位中間的一位記為 DFDon't Fragment),意思是不能分片。只有當 DF=0 時,才允許分片。

   · 分片偏移:一個資料包是一個分片,這個域中的值就會被用來將資料包以正確的順 序重新組裝。

   · 存活時間:用來定義資料包的生存週期,以經過路由器的條數/秒數進行描述。

   · 協議:用來識別在資料包序列中上層協議資料包的型別。如,ICMP則協議值為1,TCP協議值為6,UDP協議值為17;更多的請自行百度

   · 首部校驗和:一個錯誤檢測機制,用來確認 IP 首部的內容有沒有被損壞或者篡改。

   · IP 地址:發出資料包的主機的 IP 地址。

   · 目的 IP 地址:資料包目的地的 IP 地址。

   · 選項:保留作額外的 IP 選項。它包含著源站選路和時間戳的一些選項。

   · 資料:使用 IP 傳遞的實際資料

1)存活時間 TTL

   存活時間(TTL)值定義了在該資料包被丟棄之前,所能經歷的時間,或者能夠經過的 最大路由數目。TTL 在資料包被建立時就會被定義,而且通常在每次被髮往一個路由器的 時候減 1。

   例如,如果一個資料包的存活時間是 2,那麼當它到達第一個路由器的時候,其 TTL 會被減為 1,並會被髮向第二個路由。這個路由接著會將 TTL 減為 0。這時,如果這個資料 報的最終目的地不在這個網路中,那麼這個資料包就會被丟棄,如圖 3.13 所示。

    3.13就是資料包經過路由器後,TTL 值的變化。由於 TTL 的值在技術上還是基於時間的,一個非常繁忙的路由器可能會將 TTL 的值減去不止 1。但是通常情況下,還是可以 認為一個路由器裝置在多數情況下只會將 TTL 的值減去 1

   瞭解 TTL 值的變化是非常重要的。一般使用者通常所關心的一個資料包的生存週期,只 是其從源前往目的地所花去的時間。但是考慮到一個資料包想要通過網際網路發往一臺主機需 要經過數十個路由器。在這個資料包的路徑上,它可能會碰到被錯誤配置的路由器,而失去 其到達最終目的地的路徑。在這種情況下,這個路由器可能會做很多事情,其中一件就是將 資料包發向一個網路,而產生一個死迴圈。如果出現死迴圈這種情況,可能導致一個程式或 者整個作業系統崩潰。同樣的,如果資料包在網路上傳輸時,資料包可能會在路由器直接持 續迴圈,隨著迴圈資料包的增多,網路中可用的頻寬將會減少,直至拒絕服務(DoS)的情 況出現。IP 首部中的 TTL 域,就是為了防止出現這種潛在的問題。

2)IP分片

   資料包分片是將一個資料流分為更小的片段,是 IP 用於解決跨越不同型別網路時可靠 傳輸的一個特性。一個資料包的分片主要是基於第二層資料鏈路層所使用的最大傳輸單元 (Maximum Transmission UnitMTU)的大小,以及使用這些二層協議的裝置配置情況。 在多數情況下,第二層所使用的資料鏈路協議是乙太網,乙太網的 MTU 1500。也就是說, 乙太網的網路上能傳輸的最大資料包大小是 1500 位元組(不包括 14 位元組的乙太網頭本身)。

   當一個裝置準備傳輸一個 IP 資料包時,它將會比較這個資料包的大小,以及將要把這 個資料包傳送出去的網路介面 MTU,用於決定是否需要將這個資料包分片。如果資料包的 大小大於 MTU,那麼這個資料包就會被分片。將一個資料包分片包括下列幾個步驟,如下 所示:

      1)裝置將資料分為若干個可成功進行傳輸的資料包。

      2)每個 IP 首部的總長度域會被設定為每個分片的片段長度。

      3)更多分片標誌將會在資料流的所有資料包中設定為 1,除了最後一個資料包。

      4IP 頭中分片部分的分片偏移將會被設定。

      5)資料包被髮送出去

6、分析 IP 資料包

   通過前面對 IP 協議的詳細介紹及資料包的捕獲,現在就可以來分析 IP 資料包了。

1)分析IP首部

這裡以捕獲檔案的第一幀為例,介紹 IP 資料包首部,如圖 3.14 所示。

 

   在該圖中從 Packet Details 皮膚中,可以看到有 IPv4 協議的包。這裡就詳細介紹在該包 中的詳細資訊,如下所示:

Frame 1: 74 bytes on wire (592 bits), 74 bytes captured (592 bits) on interface 0

   以上資訊表示是第一幀資訊,其大小為 74 個位元組。

Ethernet II, Src: Elitegro_3f:c3:e5 (00:19:21:3f:c3:e5), Dst: Giga-Byt_eb:46:8d (50:e5:49:eb:46:8d)

   以上資訊表示是乙太網幀頭部資訊。其中,源 MAC 地址為 00:19:21:3f:c3:e5,目標 MAC 地址為 50:e5:49:eb:46:8d

Internet Protocol Version 4, Src: 192.168.5.2 (192.168.5.2), Dst: 192.168.5.4 (192.168.5.4)

   以上資訊表示IPv4包頭部資訊。其中源IP地址為192.168.5.2,目標IP地址為192.168.5.4。 在該包首部中還有很多其它欄位的資訊,下面將介紹該包中展開的所有資訊。如下所示:

 

   以上資訊包括 IP 包首部的所有欄位,對應到包首部格式中,如表 3-2 所示。

    3-2  IP包首部格式

IP協議

偏移位

03

47

815

1618

1931

0

4

20

0x00

60

32

0x050e

0x00

0

64

64

ICMP(1)

0xea5c

96

192.168.5.2

128

192.168.5.4

160

 

160192+

 

   在該包中最後一行資訊如下所示:

Internet Control Message Protocol

以上資訊表示 ICMP 協議包資訊。關於該協議的分析,在後面進行介紹。

2)分析IP資料包中TTL的變化

   前面介紹過 TTL 值是經過路由器後才傳送變化。也就是說如果在同一網段中傳輸資料 包時,TTL 值是不變的。只有與非同網段的主機進行通訊時,該資料包的 TTL 值才會發生 變化。下面通過分析捕獲檔案,來確定 TTL 值是否是這樣變化的。

① 分析同網段中資料包的 TTL 值

   這裡同樣以捕獲檔案為例,分析同網段 TTL 值的變化。在 ip.pcapng 捕獲文 件中,1~8 幀都是主機 PC1192.168.5.2)和 PC2192.168.5.4)之間的通訊。這八幀可以 說是 4 個完整的資料包,也就是通過 ICMP 協議的傳送和響應包。這裡以 ip.pcapng 捕獲文 件中的 34 幀為例,分析這兩個包中的 TTL 值。其中,34 幀的資訊如圖 3.15 所示。

 

   從該介面的 Packet List 皮膚中,Info 列可以看到 34 幀包資訊分別是 Echopingrequest (請求)和 Echopingreply(響應)。也就是說 192.168.5.2PC1)發給 192.168.5.4 的 包是一個請求包,192.168.5.4PC2)的包是一個響應包。其中,這兩臺主機是在同一個網 絡中,所以這兩個包的 TTL 值應該相同。下面分別來看這兩個包中 IP 包首部的相信資訊。

    第三幀的 IP 包首部資訊如下所示:

Internet Protocol Version 4, Src: 192.168.5.2 (192.168.5.2), Dst: 192.168.5.4 (192.168.5.4)                   

   Version: 4          #IP 協議版本號

   Header length: 20 bytes       #首部長度

   Differentiated Services Field: 0x00 (DSCP 0x00: Default; ECN: 0x00: Not-ECT (Not ECN-Capable Transport))            #服務識別符號     

   Total Length: 60         #總長度    

   Identification: 0x050f (1295)      #識別符號    

   Flags: 0x00         #標誌        

       0... .... = Reserved bit: Not set     #保留位        

       .0.. .... = Don't fragment: Not set     #不進行分片        

       ..0. .... = More fragments: Not set     #更多分片     

   Fragment offset: 0        #分片偏移     

   Time to live: 64         #生存期     

   Protocol: ICMP (1)        #協議    

   Header checksum: 0xea5b [validation disabled]   #首部校驗和     

   Source: 192.168.5.2 (192.168.5.2)     #IP 地址     

   Destination: 192.168.5.4 (192.168.5.4)    #目標 IP 地址     

   [Source GeoIP: Unknown]       #IP 地理位置    

   [Destination GeoIP: Unknown]      #目標 IP 地理位置

   以上資訊是第三針中 IPv4 首部的詳細資訊。從中可以看到,該包中的 TTL 值是 64。 第四幀的 IP 包首部資訊如下所示

Internet Protocol Version 4, Src: 192.168.5.4 (192.168.5.4), Dst: 192.168.5.2 (192.168.5.2)     

   Version: 4          #IP 協議版本號     

   Header length: 20 bytes       #首部長度     

   Differentiated Services Field: 0x00 (DSCP 0x00: Default; ECN: 0x00: Not-ECT (Not ECN-Capable Transport))            #服務識別符號     

   Total Length: 60         #總長度     

   Identification: 0xc71d (50973)      #識別符號     

   Flags: 0x00         #標誌         

      0... .... = Reserved bit: Not set     #保留位         

      .0.. .... = Don't fragment: Not set     #不進行分片         

      ..0. .... = More fragments: Not set     #更多分片     

   Fragment offset: 0        #分片偏移     

   Time to live: 64         #生存期     

   Protocol: ICMP (1)        #協議     

   Header checksum: 0x284d [validation disabled]   #首部校驗和         

      [Good: False]         

      [Bad: False]     

   Source: 192.168.5.4 (192.168.5.4)     #IP 地址     

   Destination: 192.168.5.2 (192.168.5.2)    #目標 IP 地址     

   [Source GeoIP: Unknown]       #IP 地理位置     

   [Destination GeoIP: Unknown]      #目標 IP 地理位置

   從以上資訊中,可以看到每個欄位的資訊都和第三幀 IP 包首部的資訊都相同。這兩個 包中的生存期(TTL),沒有發生變化。這是因為,主機 PC1 PC2 在同一個網段內,它 們之間傳輸的資料不需要經過路由器。

② 分析不同網段中資料包的 TTL 值

   下面以捕獲檔案為例,分析不同網段 TTL 值的變化。在 ip.pcapng 捕獲檔案 中,9-16 幀是兩臺(PC1 PC3)不同網段主機之間通訊的資料包,如圖 3.16 所示。

   在該介面顯示的包同樣是四個完整的 ICMP 包,一個是請求包,一個是響應包。這裡分 析 910 幀中 IPv4 首部的詳細資訊,如下所示。

    9 IPv4 首部資訊,如下所示:

Internet Protocol Version 4, Src: 192.168.5.2 (192.168.5.2), Dst: 192.168.6.103 (192.168.6.103)

   Version: 4          #IP 協議版本號     

   Header length: 20 bytes       #首部長度     

   Differentiated Services Field: 0x00 (DSCP 0x00: Default; ECN: 0x00: Not-ECT (Not ECN-Capable Transport))            #服務識別符號     

   Total Length: 60         #總長度     

   Identification: 0x0512 (1298)     #識別符號     

   Flags: 0x00         #標誌         

      0... .... = Reserved bit: Not set     #保留位         

      .0.. .... = Don't fragment: Not set     #不進行分片         

      ..0. .... = More fragments: Not set     #更多分片     

   Fragment offset: 0        #分片偏移     

   Time to live: 64         #生存期     

   Protocol: ICMP (1)        #協議     

   Header checksum: 0xe8f5 [validation disabled]     #首部校驗和         

      [Good: False]         

      [Bad: False]     

   Source: 192.168.5.2 (192.168.5.2)   #IP 地址     

   Destination: 192.168.6.103 (192.168.6.103)    #目標 IP 地址     

   [Source GeoIP: Unknown]       #IP 地理位置     

   [Destination GeoIP: Unknown]      #目標 IP 地理位置

   以上包資訊,是主機 PC1 傳送給 PC3 IP 包首部資訊。其中,TTL 值為 64

    10 IPv4 首部資訊,如下所示:

Internet Protocol Version 4, Src: 192.168.6.103 (192.168.6.103), Dst: 192.168.5.2 (192.168.5.2)

   Version: 4          #IP 協議版本號     

   Header length: 20 bytes       #首部長度     

   Differentiated Services Field: 0x00 (DSCP 0x00: Default; ECN: 0x00: Not-ECT (Not ECN-Capable Transport))            #服務識別符號     

   Total Length: 60         #總長度     

   Identification: 0xa206 (41478)      #識別符號     

   Flags: 0x00         #標誌         

      0... .... = Reserved bit: Not set     #保留位         

      .0.. .... = Don't fragment: Not set     #不進行分片         

      ..0. .... = More fragments: Not set     #更多分片     

   Fragment offset: 0        #分片偏移     

   Time to live: 63         #生存期     

   Protocol: ICMP (1)        #協議     

   Header checksum: 0x4d01 [validation disabled]    #首部校驗和         

      [Good: False]         

      [Bad: False]     

   Source: 192.168.6.103 (192.168.6.103)    #IP 地址     

   Destination: 192.168.5.2 (192.168.5.2)    #目標 IP 地址     

   [Source GeoIP: Unknown]       #IP 地理位置     

   [Destination GeoIP: Unknown]      #目標 IP 地理位置

   以上包資訊,是主機 PC3 傳送給 PC1 IP 包首部資訊。從以上資訊中,可以看到該 IPv4 首部中 TTL 值為 63。由此可以說明,PC3 傳送回 PC1 的資料包經過了一個路由器。

③ IP 分片資料包分析

   下面以捕獲檔案為例,詳細分析 IP 分片。開啟 ip-fragment.pcapng 捕獲檔案,顯示介面如圖 3.17 所示。

 

   在該捕獲檔案中,也是捕獲了四個 ping 包。1~6 幀是一個完整的 ping 包,其中 1~3 幀 是 ping 請求包,4~6 幀是 ping 響應包。也就是說,將第一個 ping 請求包,分為了 1~3 個數 據包。下面將詳細分析 1~3 幀的詳細資訊。

1 幀資料包

    1 幀資料包詳細資訊如圖 3.18 所示。

 

   從該介面的 Packet Details 皮膚中,可以看到有四行資訊。分別如下所示:

Frame 1: 1514 bytes on wire (12112 bits), 1514 bytes captured (12112 bits) on interface 0

   以上資訊表示第 1 幀資料包的資訊,其大小為 1514 位元組。

Ethernet II, Src: Elitegro_3f:c3:e5 (00:19:21:3f:c3:e5), Dst: Giga-Byt_eb:46:8d (50:e5:49:eb:46:8d)

   以上資訊表示乙太網幀頭部資訊。其中源 MAC 地址為 00:19:21:3f:c3:e5,目標 MAC 地 址為 50:e5:49:eb:46:8d

Internet Protocol Version 4, Src: 192.168.5.2 (192.168.5.2), Dst: 192.168.5.4 (192.168.5.4)

   以上資訊表示 IPv4 頭部資訊。在該頭部包括了具體的詳細資訊。展開該行資訊,內容 如下所示:

Internet Protocol Version 4, Src: 192.168.5.2 (192.168.5.2), Dst: 192.168.5.4 (192.168.5.4)     

   Version: 4         #IP 協議版本     

   Header length: 20 bytes      #首部長度     

   Differentiated Services Field: 0x00 (DSCP 0x00: Default; ECN: 0x00: Not-ECT (Not ECN-Capable Transport))           #服務識別符號         

      0000 00.. = Differentiated Services Codepoint: Default (0x00)         

      .... ..00 = Explicit Congestion Notification: Not-ECT (Not ECN-Capable Transport) (0x00)     

   Total Length: 1500       #總長度    

   Identification: 0x05a3 (1443)     #識別符號     

   Flags: 0x01 (More Fragments)     #標誌         

      0... .... = Reserved bit: Not set    #保留位         

      .0.. .... = Don't fragment: Not set    #不能分片。這裡的值為 0,表示可以進行 分片         

      ..1. .... = More fragments: Set    #更多分片。這裡的值為 1,表示還有分片 的資料包     

   Fragment offset: 0       #分片偏移     

   Time to live: 64        #生存期     

   Protocol: ICMP (1)       #協議     

   Header checksum: 0xc427 [validation disabled]  #首部校驗和         

      [Good: False]         

      [Bad: False]     

   Source: 192.168.5.2 (192.168.5.2)    #IP 地址    

   Destination: 192.168.5.4 (192.168.5.4)   #目標 IP 地址   

   [Source GeoIP: Unknown]      #IP 地理位置    

   [Destination GeoIP: Unknown]     #目標 IP 地理位置     

   Reassembled IPv4 in frame: 3     #重組 IPv4

Data (1480 bytes)        #資料     

   Data: 0800cfd0000100016162636465666768696a6b6c6d6e6f70...     

   [Length: 1480]        #長度為 1480 位元組

   以上資訊是第 1 IPv4 首部的詳細資訊。從以上更多分片和分片偏移域部分,可以判定該資料包是分片資料包的一部分。這是後被分片的資料包,就會有一個大於 0 的分片偏移 或者就是設定了更多標誌為。從以上資訊,可以看到更多分片標誌位被設定,也就是接收設 備應該等待接收序列中的另一個資料包。分片偏移為 0,表示這個資料包是這一系列分片中 的第一個包。所以,後面至少還有一個包。接下來看第二幀包資訊。以上資訊對應的 IPv4 首部格式中,顯示結果如表 3-3 所示

 

⑵ 第 2 幀資料包

    2 幀資料包詳細資訊如圖 3.19 所示。

 

    Wireshark Packet Details 皮膚中,可以看到有四行詳細資訊。而且包大小,和第一 個資料包的大小相同。下面將分析該包的詳細資訊,如下所示。

Frame 2: 1514 bytes on wire (12112 bits), 1514 bytes captured (12112 bits) on interface 0

   以上資訊表示,這是第 2 幀的詳細資訊。其中,該包的大小為 1514 個位元組。

Ethernet II, Src: Elitegro_3f:c3:e5 (00:19:21:3f:c3:e5), Dst: Giga-Byt_eb:46:8d (50:e5:49:eb:46:8d)

   以上資訊表示乙太網幀頭部資訊。其中,源 MAC 地址為 00:19:21:3f:c3:e5,目標 MAC 地址為 50:e5:49:eb:46:8d

Internet Protocol Version 4, Src: 192.168.5.2 (192.168.5.2), Dst: 192.168.5.4 (192.168.5.4)

以上資訊表示 IPv4 首部的詳細資訊。下面將詳細分析該包中每個欄位的值,如下所示:

Internet Protocol Version 4, Src: 192.168.5.2 (192.168.5.2), Dst: 192.168.5.4 (192.168.5.4)     

   Version: 4         #IP 協議版本     

   Header length: 20 bytes      #首部長度     

   Differentiated Services Field: 0x00 (DSCP 0x00: Default; ECN: 0x00: Not-ECT (Not ECN-Capable Transport))           #服務識別符號         

      0000 00.. = Differentiated Services Codepoint: Default (0x00)         

      .... ..00 = Explicit Congestion Notification: Not-ECT (Not ECN-Capable Transport) (0x00)     

   Total Length: 1500       #總長度    

   Identification: 0x05a3 (1443)     #識別符號     

   Flags: 0x01 (More Fragments)     #標誌         

      0... .... = Reserved bit: Not set    #保留位         

      .0.. .... = Don't fragment: Not set    #不能分片。這裡的值為 0,表示可以進行 分片         

      ..1. .... = More fragments: Set    #更多分片。這裡的值為 1,表示還有分片 的資料包     

   Fragment offset: 1480       #分片偏移    

   Time to live: 64        #生存期     

   Protocol: ICMP (1)       #協議     

   Header checksum: 0xc36e [validation disabled]  #首部校驗和         

      [Good: False]         

      [Bad: False]     

   Source: 192.168.5.2 (192.168.5.2)    #IP 地址    

   Destination: 192.168.5.4 (192.168.5.4)   #目標 IP 地址   

   [Source GeoIP: Unknown]      #IP 地理位置    

   [Destination GeoIP: Unknown]     #目標 IP 地理位置     

   Reassembled IPv4 in frame: 3     #重組 IPv4

Data (1480 bytes)        #資料     

   Data:  6162636465666768696a6b6c6d6e6f707172737475767761...     

   [Length: 1480]        #長度為 1480 位元組

   根據以上資訊介紹,可以看到在該包的 IPv4 首部也設定了更多分片的標誌為。而且可 以看到,這裡的分片偏移值為 1480。該值是由最大傳輸單元(MTU1500,減去 IP 首部的 20 個位元組得到的。以上資訊對應到 IPv4 首部格式中,顯示資訊如表 3-4 所示。

IP協議

偏移位

03

47

815

1618

1931

0

4

20

0x00

1500

32

0x05a3

0x01

1480

64

64

ICMP(1)

0xc36e

96

192.168.5.2

128

192.168.5.4

160

 

160192+

1480

⑶ 第 3 幀資料包

    3 幀資料包詳細資訊如圖 3.20 所示。

 

    Wireshark Packet Details 介面可以看到,該包中顯示了四行資訊,並且該包的協議 為 ICMP。下面將詳細分析該包中的資訊。

Frame 3: 82 bytes on wire (656 bits), 82 bytes captured (656 bits) on interface 0

   以上資訊表示這是第 3 幀的詳細資訊,其中包大小為 82 個位元組。

Ethernet II, Src: Elitegro_3f:c3:e5 (00:19:21:3f:c3:e5), Dst: Giga-Byt_eb:46:8d (50:e5:49:eb:46:8d)

   以上資訊表示乙太網幀頭部的詳細資訊。其中,源 MAC 地址為 00:19:21:3f:c3:e5,目 標 MAC 地址為 50:e5:49:eb:46:8d

Internet Protocol Version 4, Src: 192.168.5.2 (192.168.5.2), Dst: 192.168.5.4 (192.168.5.4)

   以上資訊表示 IPv4 首部資訊,這裡著重分析該部分的詳細資訊。如下所示:

Internet Protocol Version 4, Src: 192.168.5.2 (192.168.5.2), Dst: 192.168.5.4 (192.168.5.4)     

   Version: 4         #IP 協議版本     

   Header length: 20 bytes      #首部長度     

   Differentiated Services Field: 0x00 (DSCP 0x00: Default; ECN: 0x00: Not-ECT (Not ECN-Capable Transport))           #服務識別符號         

      0000 00.. = Differentiated Services Codepoint: Default (0x00)         

      .... ..00 = Explicit Congestion Notification: Not-ECT (Not ECN-Capable Transport) (0x00)     

   Total Length: 68   #總長度    

   Identification: 0x05a3 (1443)     #識別符號     

   Flags: 0x01 (More Fragments)     #標誌         

      0... .... = Reserved bit: Not set    #保留位         

      .0.. .... = Don't fragment: Not set    #不能分片。       

        ..0. .... = More fragments: Not set     #更多分片。  

   Fragment offset: 2960        #分片偏移    

   Time to live: 64        #生存期     

   Protocol: ICMP (1)       #協議     

   Header checksum: 0xe84d [validation disabled]  #首部校驗和         

      [Good: False]         

      [Bad: False]     

   Source: 192.168.5.2 (192.168.5.2)    #IP 地址    

   Destination: 192.168.5.4 (192.168.5.4)   #目標 IP 地址   

   [Source GeoIP: Unknown]      #IP 地理位置    

   [Destination GeoIP: Unknown]     #目標 IP 地理位置     

   [3 IPv4 Fragments (3008 bytes): #1(1480), #2(1480), #3(48)] #三個 IPv4 分片,共 3000 個字 節         

      [Frame: 1, payload: 0-1479 (1480 bytes)]    #1 幀載入了 1480 個位元組         

      [Frame: 2, payload: 1480-2959 (1480 bytes)]   #2 幀載入了 1480 個位元組        

      [Frame: 3, payload: 2960-3007 (48 bytes)]    #3 幀載入了 48 個位元組         

      [Fragment count: 3]        #分片數為 3        

      [Reassembled IPv4 length: 3008]     #重組 IPv4 長度為 3008         

      [Reassembled IPv4 data: 0800cfd0000100016162636465666768696a6b6c6d6e6f70...]              #重組 IPv4 資料

   根據以上資訊的描述,可以看到該資料包沒有設定更多分片標誌位,也就表示該資料包 是整個資料流中的最後一個分片。並且其分片偏移設定為 2960,是由 1480+(1500-20)得出 的結果。這些分片可以被認為是同一個資料序列的一部分,因為它們 IP 首部中的標誌位於 擁有相同的值。以上資訊對應到 IP 首部格式,如表 3-5 所示

IP協議

偏移位

03

47

815

1618

1931

0

4

20

0x00

68

32

0x05a3

0x00

2960

64

64

ICMP(1)

0xe84d

96

192.168.5.2

128

192.168.5.4

160

 

160192+

 

在該包中最後一行資訊如下所示:

Internet Control Message Protocol

以上資訊表示 ICMP 協議包資訊。 

相關文章