ip分片
当IP数据报超过帧的MTU(最大传输单元)时,它将会被分片传输。**分片能发生在发送端或者中转路由器,且在传输过程中可能被多次分片。**在最后的目标机器上这些分片才会被内核的的IP模块重新组装。
ipv4报文结构
ipv4 ip报文分片
在IPv4的头部信息中有3个字段专门为IP分片服务的。
标识(16bit)
此字段虽然没有改变,每个分片要复制这个字段的值。这个字段与源主机的IP唯一确定一个数据报。当目的主机收到所有分片后,可以根据这个标识重装数据报,因为目的主机认为标识号相同的是属于同一个数据报的。
标志(3bit)
这是一个3位的字段,第1位保留不用,第2位称为不分片位,就是说当其值是1的时候,不会对数据报进行分片。第3位是还有分片位,就是说如果其值是1就说明这个分片后面还有分片,如果是0,则说明是最后一个分片或者第一个分片(因为当只有一个分片的时候,第一个也是最后一个)
位偏移(13位)
这个字段表示的是分片在整个数据报中的相对位置,以8字节为单位。通过这个字段,目的主机可以根据分片偏移的值从第一个分片开始组装到最后一个分片,直至形成一个完整的IP数据报。
- 分片偏移为0的分片是第一个分片
- 把第一个分片的长度除以8得到第二个分片的偏移值,于是目的主机从接收到的分片中寻找该分片偏移值的分片,组装第二个分片
- 把第一个分片和第二个分片的长度除以8得到第三个分片的偏移值,于是目的主机从接收到的分片中找到该分片,这样就把前三个分片组装好了
- 继续以上过程,直到最后的一个分片的还有分片的值为0
一个IP数据报的每个分片都具有自己的IP头部信息,它们都具有相同的标识值,但是具有不同的位偏移,且除了最后一个分片外,其他分片都将设置MF标志。此外,每个分片的IP头部的总长度字段将被设置为该分片的长度。