IP分片

207 阅读2分钟

简介

IP分片产生的原因是网络层的MTU,当IP报文长度大于MTU时,需要利用分片和重组来完成报文的传输。

最大传送单元(MTU):MTU是链路层可封装数据的上限,以太网的MTU为1500字节,也就是IP分组最大为1500,超过则需要进行分片。

IP头格式: image.png

IP分片字段:

  • Flags (标志位)
    • 3比特
    • Bit 0: 保留位,必须为0。
    • Bit 1: DF(Don't Fragment),能否分片位,0表示可以分片,1表示不能分片。
    • Bit 2: MF(More Fragment),表示是否该报文为最后一片,0表示最后一片,1代表后面还有。
  • Fragment Offset (片偏移)
    • 13比特
    • 分片重组时会用到该字段。表示较长的分组在分片后,某片在原分组中的相对位置。以8个字节为偏移单位。

示例

在以太网MTU为1500的环境下,发送一个数据长度为3000的UDP协议报文,即要发送IP数据部分长度为3008;分三片发送,发送的数据部分长度分别为1480、1480、48。

发包命令

hping3  -I em2 -c 1 --udp -d 3000 192.168.13.41

抓包命令

 tcpdump  -i em2 -envvv  host 192.168.13.41 -w xfabc.pcap

第一片

  • 帧长:1514字节(不含CRC4字节)
  • IP总长度:1500字节(IP头20字节+数据1480字节
  • Flags标识位:MF为1(后面还有分片)
  • Fragment Offset片偏移:0

image.png

第二片

  • 帧长:1514字节(不含CRC4字节)
  • IP总长度:1500字节(IP头20字节+数据1480字节
  • Flags标识位:MF为1(后面还有分片)
  • Fragment Offset片偏移:1480(185*8)

image.png

第三片

  • 帧长:82字节(不含CRC4字节)
  • IP总长度:68字节(IP头20字节+数据48字节
  • Flags标识位:MF为0(后面没有分片了)
  • Fragment Offset片偏移:2960(1480+1480)

image.png