数据报分片原因:
网络层的数据报需要借助于数据链路层来真正完成传输,但是数据链路层的MTU有限制,一般以太网的MTU是1500B。但是网络层的数据报大小可以不止MTU这么大,根据IP数据报的格式我们知道,总长度有16位,最大有2^16−1=65535B这么大,因此,必然牵涉到数据报的分片技术。
分片主要借助标识(16位),标志(3位X | DF | MF)和片偏移(13位)三个数据来完成。
标识告知接收端,是不是同一个数据报的分片。DF=0表示可以分片,MF = 1表示后面还有分片。片偏移表示这个分片在原来的IP数据报中的位置。
数据报分片示例:
一个长4000B的IP数据报,数据部分3980B,到达了一个路由,需要转发到一个MTU为1500B的链路上,这样就得分片了。分片数目是3片。每个片都是一个数据报。假设标识是777,那么数据报分片结果是:
分片一:标识:777,MF=1,DF=0,片偏移=0,有效数据:1480B(编号0~1479)
分片二:标识:777,MF=1,DF=0,片偏移=185,185*8=1480,有效数据:1480B(编号1480~2959)
分片三:标识:777,MF=0,DF=0,片偏移370,370*8=2960,有效数据:1020B(编号2960~3979)