IP數據包的分片情況有以下四種情況:
1、如果收到的包IP頭中Fragmentation Flags為0且有UDP字段,則未分片。
2、如果收到的包IP頭中Fragmentation Flags為1且有UDP字段,則為第壹片。
3、如果收到的包IP頭中Fragmentation Flags為1且無UDP字段,則為中間片。
4、如果如果收到的包IP頭中Fragmentation Flags為0且無UDP字段,則為最後壹片。
分片是分組交換的思想體現,也是IP 協議解決的兩個主要問題之壹。在IP 協議中的分片算法主要解決異種網最大傳輸單元(MTU) 的不同, 但是分組在傳輸過程中不斷地分片和重組會帶來很大的工作量還會增加壹些不安全的因素。
壹、什麽是IP分片
IP分片是網絡上傳輸IP報文的壹種技術手段。IP協議在傳輸數據包時,將數據報文分為若幹分片進行傳輸,並在目標系統中進行重組。這壹過程稱為分片( fragmentation)。
二、為什麽要進行IP分片
通常要傳輸的IP報文的大小超過最大傳輸單位MTU(Maximum Transmission Unit)時就會產生IP分片情況。IP分片通常發生在網絡環境中。比如說,在以太網(Ethernet)環境中可傳輸最大IP報文大小(MTU)為1500字節。而傳輸的報文大小要比1500字節(不包括以太協議的首部和尾部18個字節)大,這個時候就需要利用到分片技術,經分片後才能傳輸此報文。另外,使用UDP很容易導致IP分片,而很難強迫TCP發送壹個需要進行分片的報文。
三、IP分片原理及分析
分片和重新組裝的過程對傳輸層是透明的,其原因是當IP數據報進行分片之後,只有當它到達下壹站時,才可進行重新組裝,且它是由目的端的IP層來完成的。分片之後的數據報根據需要也可以再次進行分片。
IP分片和完整IP報文差不多擁有相同的IP頭,ID域對於每個分片都是壹致的,這樣才能在重新組裝的時候識別出來自同壹個IP報文的分片。在IP頭裏面,16位識別號唯壹記錄了壹個IP包的ID(ipid),具有同壹個ID的IP分片將會重新組裝;而13位片偏移則記錄了某IP片相對整個包的位置;而這兩個表中間的3位標誌則標誌著該分片後面是否還有新的分片。這三個域就組成了IP分片的所有信息, 接受方就可以利用這些信息對IP數據進行重新組織。
參考資料
IP分片原理及分析. Chinaunix論壇[引用時間2018-4-1]