看下面的计算公式前可以先看下处理原理,给个博客园的链接(不过似乎看过这个下面的计算自然就会了)

http://www.cnblogs.com/iTsihang/archive/2012/11/10/2763629.html


   分片过程中,使用单位为byte,如果数据长度使用单位是bit,则需要/8转换成byte

   Ixia(测试设备)设置Frame Size(include CRC)为FrameSC,IP包总长度(IP TotalLength为TOL),IP数据长度为DataL,IP包分片偏移(IP FragmentOffset)为FrameO,IP头长度为IHL


  TOL = FrameSC- 14(MAC)-4(CRC) (byte)

   DataL = TOL - 20(IHL) (byte)

   FrameO = DataL * (n-1) (byte)//n为分片序号


   例:设置FrameSC为614,那么TOL为596,DataLwei 576,自然偏移是从0、576向后增,如果数据包的长度为1454,则第一个分片偏移是0,第二个分片是576,第三个分片是1152。对于长度为1514的数据来说,第一片数据长度576,第二片也是,剩下的第三片的数据长度就是1462-576*2=310,那么第三片IP包长为330,第三片的帧长为348,前两片帧长为576+20+18=614。翻过来倒过去就这样吧~