數據報分片原因:
網絡層的數據報需要借助於數據鏈路層來真正完成傳輸,但是數據鏈路層的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)