题目
4-22 一个数据报长度为 4000字节(固定首部长度)。现在经过一个网络传送,但此网络能够传送的最大数据长度为1500字节。试问应当划分为几个短些的数据报片?各数据报片的数据字段长度、片偏移字段和MF标志应为何数值?
4-22 一个数据报长度为 4000字节(固定首部长度)。现在经过一个网络传送,但此网络能够传送的最大数据长度为1500字节。试问应当划分为几个短些的数据报片?各数据报片的数据字段长度、片偏移字段和MF标志应为何数值?
题目解答
答案
解答:分片前数据部分长度: 4000-20=3980。分片后每片数据不能超过:1500-20=1480。由于1480正好能被8整除,因此每片数据最大长度为1480。 共分为 3个数据报片。数据字段长度分别为1480, 1480和1020字节。 片偏移字段的值分别为 0,185和370。MF字段的值分别为1, 1和0。
解析
考查要点:本题主要考查IP数据报分片的计算,涉及数据字段长度、片偏移字段和MF标志的确定。
解题核心思路:
- 确定原始数据部分长度:总长度减去固定首部长度。
- 计算每片最大数据长度:根据网络最大传输单元(MTU)减去首部长度,且需为8的倍数。
- 分片数量计算:总数据长度除以每片最大数据长度,向上取整。
- 片偏移字段计算:每片数据长度除以8,累加前片偏移。
- MF标志设置:除最后一片外,其余均设为1。
破题关键点:
- 数据字段长度必须为8的倍数,否则需调整分片。
- 片偏移字段以8字节为单位,需累加前片偏移。
- MF标志反映是否存在后续分片。
1. 计算原始数据部分长度
原始数据报总长度为4000字节,固定首部长度为20字节,因此原始数据字段长度为:
$4000 - 20 = 3980 \text{字节}$
2. 确定每片最大数据长度
网络MTU为1500字节,每片数据字段最大长度为:
$1500 - 20 = 1480 \text{字节}$
由于1480是8的倍数($1480 \div 8 = 185$),无需调整。
3. 分片数量计算
总数据长度3980字节除以每片最大数据长度1480字节:
$\frac{3980}{1480} \approx 2.7 \quad \Rightarrow \quad \text{需分3片}$
各片数据字段长度分别为1480、1480、1020字节。
4. 片偏移字段计算
- 第一片:偏移为0。
- 第二片:第一片数据长度1480字节对应偏移增量为$1480 \div 8 = 185$,总偏移为$0 + 185 = 185$。
- 第三片:第二片偏移增量同为185,总偏移为$185 + 185 = 370$。
5. MF标志设置
- 第一片和第二片:存在后续分片,MF标志为1。
- 第三片:最后一片,MF标志为0。