互聯網協議 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 地址分為 IPv4(IP 協議的第四版) 和 IPv6(IP 協議第六版)兩大類,目前,最廣泛使用的是 IPv4,在該版本中規定,該地址 是由 32 個二進制位組成,用來標識連接到網路的設備,由于讓用戶記住一串 32 位長的 01 字符確實比較困難,所以 IP 地址采用點分四組的表示法,
在點分四組表示法中,以 A、B、C、D 的形式構成 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 Routing,CIDR)的形式,在這種形式下,一個完整的 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 協議中涉及到一個 TTL(time-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 列,可以看到捕獲到有 DNS、TCP、HTTP 等協議的包,在這些包 中,都包含由 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 的顯示過濾器對資料包進行過濾,如過濾僅 顯示主機 PC3(192.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協議 |
|||||
|
偏移位 |
0~3 |
4~7 |
8~15 |
16~18 |
19~31 |
|
0 |
版本 |
首部長度 |
服務型別 |
總長度 |
|
|
32 |
識別符號 |
標記 |
分段偏移 |
||
|
64 |
存活時間 |
1 |
首部校驗和 |
|
|
|
96 |
源IP地址 |
||||
|
128 |
目的IP地址 |
||||
|
160 |
選項 |
||||
|
160或192+ |
資料 |
||||
在表 3-1 中,每個欄位代表的含義如下所示:
· 版本號:指 IP 協議所使用的版本,通信雙方使用的 IP 協議版本必須一致,目前廣 泛使用的 IP 協議版本號為 4,即 IPv4,
· 首部長度:IP 的首部長度,可表示的最大十進制數值是 15,注意,該欄位所表示 的單位是 32 位字長(4 個位元組),因此,當 IP 首部長度為 1111(即十進制的 15) 時,首部長度就達到 60 位元組,當 IP 分組的首部長度不是 4 位元組的整數倍時,必須利用最后的填充欄位加以填充,
· 服務型別:優先級標志位和服務型別標志位,被路由器用來進行流量的優先排序,
· 總長度:指 IP 首部和資料報中資料之后的長度,單位為位元組,總長度欄位為 16 位, 因此資料報的最大長度為 216-1=65535 位元組,
· 識別符號:一個唯一的標識數字,用來識別一個資料報或者被分片資料包的次序,
· 標識:用來標識一個資料報是否是一組分片資料報的一部分,標志欄位中的最低位 記為 MF(More Fragment),MF=1 即表示后面“還有分片”的資料報,MF=0 表 示這已是若干資料包分片中的最后一個,標志欄位中間的一位記為 DF(Don'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 Unit,MTU)的大小,以及使用這些二層協議的設備配置情況, 在多數情況下,第二層所使用的資料鏈路協議是以太網,以太網的 MTU 是 1500,也就是說, 以太網的網路上能傳輸的最大資料報大小是 1500 位元組(不包括 14 位元組的以太網頭本身),
當一個設備準備傳輸一個 IP 資料報時,它將會比較這個資料報的大小,以及將要把這 個資料報傳送出去的網路介面 MTU,用于決定是否需要將這個資料報分片,如果資料報的 大小大于 MTU,那么這個資料報就會被分片,將一個資料報分片包括下列幾個步驟,如下 所示:
(1)設備將資料分為若干個可成功進行傳輸的資料報,
(2)每個 IP 首部的總長度域會被設定為每個分片的片段長度,
(3)更多分片標志將會在資料流的所有資料報中設定為 1,除了最后一個資料報,
(4)IP 頭中分片部分的分片偏移將會被設定,
(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協議 |
|||||
|
偏移位 |
0~3 |
4~7 |
8~15 |
16~18 |
19~31 |
|
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 |
|
||||
|
160或192+ |
|
||||
在該包中最后一行資訊如下所示:
|
Internet Control Message Protocol |
以上資訊表示 ICMP 協議包資訊,關于該協議的分析,在后面進行介紹,
2)分析IP資料包中TTL的變化
前面介紹過 TTL 值是經過路由器后才發送變化,也就是說如果在同一網段中傳輸資料 包時,TTL 值是不變的,只有與非同網段的主機進行通信時,該資料包的 TTL 值才會發生 變化,下面通過分析捕獲檔案,來確定 TTL 值是否是這樣變化的,
① 分析同網段中資料包的 TTL 值
這里同樣以捕獲檔案為例,分析同網段 TTL 值的變化,在 ip.pcapng 捕獲文 件中,1~8 幀都是主機 PC1(192.168.5.2)和 PC2(192.168.5.4)之間的通信,這八幀可以 說是 4 個完整的資料包,也就是通過 ICMP 協議的發送和回應包,這里以 ip.pcapng 捕獲文 件中的 3、4 幀為例,分析這兩個包中的 TTL 值,其中,3、4 幀的資訊如圖 3.15 所示,

從該界面的 Packet List 面板中,Info 列可以看到 3、 4 幀包資訊分別是 Echo(ping)request (請求)和 Echo(ping)reply(回應),也就是說 192.168.5.2(PC1)發給 192.168.5.4 的 包是一個請求包,192.168.5.4(PC2)的包是一個回應包,其中,這兩臺主機是在同一個網 絡中,所以這兩個包的 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 包,一個是請求包,一個是回應包,這里分 析 9、10 幀中 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,該值是由最大傳輸單元(MTU)1500,減去 IP 首部的 20 個位元組得到的,以上資訊對應到 IPv4 首部格式中,顯示資訊如表 3-4 所示,
|
IP協議 |
|||||
|
偏移位 |
0~3 |
4~7 |
8~15 |
16~18 |
19~31 |
|
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 |
|
||||
|
160或192+ |
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協議 |
|||||
|
偏移位 |
0~3 |
4~7 |
8~15 |
16~18 |
19~31 |
|
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 |
|
||||
|
160或192+ |
|
||||
在該包中最后一行資訊如下所示:
|
Internet Control Message Protocol |
以上資訊表示 ICMP 協議包資訊,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/41136.html
標籤:其他
