IP分片:
当IP数据报的长度超过帧的MTU时,它将被分片传输。分片可能发生在发送端,也可能发送在中转路由器上,而且可能在传输过程中被多次分片,但只有在最终的目标机器上,这些分片才会被内核中的IP模块重新组装。
IP的分片和重组需要的信息由头部的三个字段提供:16位数据报标识、3位标志、13位偏移。一个IP数据报的每个分片都具有自己的IP头部,他们具有相同的标识值,但具有不同的片偏移。并且除了最后一个分片外,其他分片都将设置MF标志。此外,每个分片的IP头部的总长度字段将被设置为该分片的长度。
以太网帧的MTU是1500字节,因此他携带的IP数据报的数据部分最多是1480字节(因为头部占了20字节)。
举例
考虑现在用IP数据报封装一个长度位1481字节的ICMP报文(考虑到ICMP的8字节的头部,得到其数据部分长度为1473字节),则该数据报在使用以太网帧传输时必须被分片。
第二个IP分片不包含ICMP头部信息,因为IP模块重组该ICMP报文的时候只需要一份ICMP头部信息,重复传送这个信息没有益处。1473字节的ICMP报文数据的前1472字节被IP模块复制到第一个IP分片中,使其总长度为1500字节,从而满足MTU的要求,而多出来的最后一个字节被复制到第二个IP分片中。
此时第一个IP数据报片偏移为0,第二个IP数据报中的片偏移为1472/8=184。