na IP分片抓包實驗

2022-03-21 19:17:46 字數 2172 閱讀 6834

1.ip+icmp+data = 1500位元組

2.ping size指定的是data的大小.

3,可以ping大包+不分片檢測mtu(分片發生在出口,如果包尺寸大於介面ip mtu,則乾脆不往出發包)

我們都知道,在乙太網中,如果源主機向目標主機傳送的資料報大於閘道器mtu,則該資料報在傳輸過程中會被ip協議分片傳輸,具體的分片過程是怎樣的呢?我們通過協議分析軟體抓包來進行詳細的檢視(抓包軟體使用科來網路分析系統)。

因為乙太網預設的mtu值為1500byte,所以,為了達到分片的效果,我們應該傳輸大於1500byte位元組的資料報,才能使該資料報分段傳輸。

我們從本機(192.168.6.11)傳送乙個2000位元組的資料報到區域網的另一台主機(192.168.0.208)為例,在傳輸的過程中,開啟軟體抓包,就能夠檢視到詳細的分片結果。

我們以ping為例,在windows命令提示符下輸入:ping 192.168.0.208 -l 2000

通過科來網路分析系統抓包,我們看到,該資料報被分片了,由於我們重複ping了4次,所以,抓到了4次同樣的請求與回顯的資料報。如下圖:

檢視詳細的資料報解碼(見下圖):

分析:因為ping的長度是2000位元組,大於了mtu的值,所以會分片傳送,如上圖。捕獲的這個資料報總長度為1500位元組,更多分段位置1,表示還有資料分段。s,偏移量為0,需要注意的是ip頭部的總長度字段值(這裡是1500位元組)並不全是資料的淨載荷長度,這裡還包括了ip以及icmp的頭部長度,分別是20位元組和8位元組。

另外,ip協議的頭部總長度並不一定就是mtu值1500位元組,這個值與網路環境、作業系統等因素有關。

下圖是第乙個分片包。

分析:ip欄位的標識0x787f,與第乙個包相同,說明這是同乙個資料報,只是被分片了。

偏移量為185,表示相對第乙個包的位置,以便接收主機根據偏移量進行資料重組。

需要注意的是此處分片包並沒有icmp欄位,接收主機會可以根據偏移重組成完整的icmp資料報。

最後,我們來計算一下該資料報的長度:

- 預設的mtu

1.ip+icmp+data = 1500位元組

2.ping size指定的是data的大小.

第乙個資料報的總長度為1500位元組,減去ip頭部長度20位元組,減去icmp頭部長度8位元組,即1500-20-8=1472位元組;

第二個資料報的總長度為548位元組,減去ip頭部長度20位元組,即548-20=528位元組,兩個資料報的淨載荷1472+528=2000,正好是我們傳送的資料長度。

參考

首先說明:資料報的分段和分片確實發生,分段發生在傳輸層,分片發生在網路層。但是對於分段來說,這是經常發生在udp傳輸層協議上的情況,對於傳輸層使用tcp協議的通道來說,這種事情很少發生。

tcp層的分段和ip層的分片之間的關係 & mtu和mss之間的關係

乙個以太幀最大為1518位元組 (14位元組以太首部,20位元組ip首部,udp8/tcp20,因此ip包每次最大為1500==mtu。去掉協議頭udp有效資料1472位元組,tcp為1460位元組。還有最後的4位元組crc),但是乙個ip資料報則可能會有8192位元組,超過以太幀的最大限制,那麼這時就需要ip分片,分批進行傳輸。

傳送方會在ip層將要傳送的資料分成多個資料報分批傳送,而接收方則將資料按照順序再從新組織起來,等接收到乙個完整的資料報之後,然後再提交給上一層傳輸層。

注意,tcp協議為可靠的傳輸協議,它避免了ip分片的發生,它會在tcp層對資料進行處理,

對資料進行分段(不在詳述),ip分片用的多的在udp協議

應用抓包之Fiddler抓包

tcpdump抓包 應用抓包之tcpdump命令抓包 原料fiddler fiddler是位於客戶端和伺服器端的http 也是目前最常用的http抓包工具之一 它能夠記錄客戶端和伺服器之間的所有 http請求,可以針對特定的http請求,分析請求資料 設定斷點 除錯web應用 修改請求的資料,甚至可...

什麼是 抓包 怎樣 抓包

你是網路管理員嗎?你是不是有過這樣的經歷 在某一天的早上你突然發現網路效能急劇下降,網路服務不能正常提供,伺服器訪問速度極慢甚至不能訪問,網路交換機埠指示燈瘋狂地閃爍 網路出口處的路由器已經處於滿負荷的工作狀態 路由器cpu已經到了百分之百的負荷 重啟動後沒有幾分鐘現象又重新出現了。這是什麼問題?裝...

php抓包設定引數 php的curl抓包

在php中實現抓包有兩種方式,乙個是使用file get contents 函式採集頁面內容,另一種就是curl curl請求過程 curl完成請求主要是分為以下四步 1 初始化,建立乙個新的curl資源 即 curl init 2 設定url和相應的選項 即 curl setopt 3 抓取url...