在網路分析領域,位移量是一個頻繁出現的術語,如IP分段位移量、TCP位移量、位位移,基於資料包位移、基於協議位移等等。那它們到底是什麼含義,有什麼區別呢?帶著這些疑問,我查閱了一些TCP/IP書籍,並對其有了一定的瞭解。下面我就將我的個人理解與大家一起共同分享。歡迎拍磚啊! :)
1 IP分段位移量
IP資料包在網路中進行傳輸,如果資料包的大小超過網路裝置的MTU值,則需要進行分段傳輸。分段位移量用來標識資料包在該資料流中的位置,也可以理解為使用同一個IP標識發送多個資料包時的順序號。發送主機給第一個分段資料包的位移量賦值為0,對於其後的分段,該位移量的值是MTU值減去上一個IP前序的大小,所以我們也可以說IP分段位移量是指資料包中某個分段相對與第一分段在資料包中的位置。
下面我們舉一個執行個體。我在我的機器(192.168.0.90)的CMD視窗中執行“ping 192.168.0.1 -l 3000 -n 1”命令,同時在科來網路分析系統中設定一個過濾器,只捕獲從192.168.0.90到192.168.0.1的單方向資料,由於3000遠遠大於了乙太網路的MTU值,所以它會被分段傳輸。這時我們來看捕獲到的資料包,1所示。
從圖1可知中,共捕獲到了三個資料包,第一個協議是ICMP,後面兩個是IP Fragment,前面兩個資料包的大小是1518位元組,第三個是86位元組。第一個資料包的IP位移量是0,第二個是185,第三個是370。
這三個資料包的詳細情況如下表:
資料包編號 IP分段標誌 IP位移量 傳輸資料
1 更多分段置1 0 0位元組 1518-14-20-8-4=1472
2 更多分段置1 185 1480位元組 1518-14-20-4=1480
3 更多分段置0 370 2960位元組 86-14-20-4=48
上表中,第1個資料包中,多了一個ICMP前序,所以在計算傳輸的資料時,多減了8個位元組的ICMP前序,而後面的兩個資料包由於存在ICMP的前序開銷,所以不需要減去8位元組的ICMP前序。將傳輸的資料加起來,1472+1480+48=3000,與測試的資料完全吻合。
注意:如果有更多的分段,按照此規則依次累加即可,同時所有分段資料包的IP標識都是相同的。
2 TCP位移量
TCP位移量出現在TCP前序裡,它主要是指TCP前序的長度。TCP位移量欄位的長度是1位元組,以32位元(4個位元組)字長表示TCP前序的長度。不包含選項的TCP前序長為20個位元組,用TCP位移量來表示就是5(5X4=20個位元組),2所示。如果TCP前序中有選項,TCP的前序長度則會按照4的倍數進行累加,如有一個選項時,TCP前序長度是24位元組,這時TCP位移量是6,有兩個選項時,TCP前序長度是28位元組,這時TCP位移量是7。
3 位位移量
有些前序的某些欄位,每位都表示不同的含義,而一個資料包可同時有1位或多位置1,比如TCP標誌欄位。簡單的說位位移量是指欄位中某一位在該欄位中的位置。我們來看看TCP的標誌欄位。3所示。
圖3中高亮顯示的是同步位置1時的情況,也就是說該資料包是一個TCP同步資料包。TCP同步資料包的值是TCP標誌位的值是10(二進位)或02(16進位)或2(10進位,8進位)。同時我們可知,該欄位中的每一位都有不同的掩碼,我們在特定分析需要設定位位移的過濾器時,即可通過設定該掩碼的值實現過濾。如只希望捕獲網路中的同步資料包,我們只需設定4所示的過濾器並根據該過濾器捕獲資料即可。
4 基於資料包位移和基於協議位移
位移量的計算一般按兩種類型:基於資料包類型和基於協議位移。
4.1 基於資料包位移
基於資料包位移的位移量演算法,是從乙太網路前序作為基準點,向後開始計算特定欄位的位移量,這裡我仍然以TCP標誌欄位為例,說明基於資料包位移的位移量計算方法。圖5所示的是一個TCP確認資料包,我們藉助圖5查看TCP標誌位的位移量。
由於是以乙太網路前序作基準,所以這個資料包中的TCP標誌位位移量應該是以下前序的相加的總和:
Ethernet II前序14,IP前序20,TCP源連接埠2,TCP目標連接埠2,TCP序號4,TCP確認號4,TCP位移量1。
所以,在基於資料包位移的情況下,該資料包的TCP標誌欄位位移量是14+20+2+2+4+4+1=47。
4.2 基於協議位移
基於協議位移的位移量演算法,是以某種協議為基準點,向後開始計算特定欄位的位移量,而並非從乙太網路前序開始。我們還是以圖5中TCP標誌位位移量來舉例。
在這種情況下,這個資料包如果按照TCP協議進行位移,那麼TCP標誌位的位移量應該是以下欄位的相加總和:
TCP源連接埠2,TCP目標連接埠2,TCP序號4,TCP確認號4,TCP位移量1。
所以,TCP標誌欄位在這個資料包的位移量是2+2+4+4+1=13。
注意:
基於資料包的位移,只匹配了位移值,沒有進行協議匹配,可能出現誤差。所以,在精確度較高,且分析軟體支援的情況下,應盡量使用基於協議位移的位移量計算方法,這樣的分析結果可能更準確。
————————————————————————————————————————————————————————————
PS:抱歉裡面的圖片我沒有引用過來,但若熟悉協議,使用過嗅探工具,很容易看明白。謝謝CSDN的菜鳥飛人.
freedom,i like it.