题目
一个数据报[1]长度为4000字节(固定首部长度)。现在经过一个网络传送,但此网络能够传送的最大数据报长度为1500字节。试问应当划分为几个短些的数据报片?各数据报片的数据字段长度、片偏移字段和MF标志应为何数值?
一个数据报[1]长度为4000字节(固定首部长度)。现在经过一个网络传送,但此网络能够传送的最大数据报长度为1500字节。试问应当划分为几个短些的数据报片?各数据报片的数据字段长度、片偏移字段和MF标志应为何数值?
题目解答
答案
答:一个数据报长度为4000字节,根据题意固定首部长度,即头部长度为20字节,也就是说该数据报的数据部分长度为4000-20=3980字节。由于此网络能够传递的最大数据报长度为1500字节,除去20字节固定长度首部,实际能传递的数据部分长度为1500-20=1480字节。因此:划分的数据报片数量为 [3980/1480] 3个。第一个数据报片为 长度为 1480+20=1500字节,实际数据部分长度为1480字节。片偏移字段为 0 MF=1第二个数据报片为 长度为 1480+20=1500字节,实际数据部分长度为1480字节。片偏移字段为 (1500-20)/8=185 MF=1第三个数据报片为 长度为 (3980-1480*2)+20=1040字节,实际数据部分长度为1020字节。片偏移字段为 (1480+1480)/8=370 MF=0片偏移以 8 个字节为偏移单位
解析
考查要点:本题主要考查IP数据报分片的计算,涉及数据报分片规则、片偏移字段的计算以及MF标志的设置。
解题核心思路:
- 确定原始数据部分长度:总长度减去固定首部长度。
- 计算每个分片的最大数据部分:最大传输数据报长度减去首部长度。
- 分片数量计算:总数据部分除以单片最大数据部分,向上取整。
- 片偏移字段:以8字节为单位,根据前序分片数据部分总长度计算。
- MF标志:除最后一个分片外,其余均设为1。
破题关键点:
- 固定首部长度为20字节,分片时首部不变。
- 片偏移单位为8字节,需将数据部分长度转换为该单位。
- MF标志在最后一个分片清零。
1. 原始数据部分长度
总长度4000字节,固定首部20字节,数据部分为:
$4000 - 20 = 3980 \text{字节}$
2. 单片最大数据部分
网络最大传输数据报1500字节,扣除首部后:
$1500 - 20 = 1480 \text{字节}$
3. 分片数量
总数据部分3980字节,每片最多1480字节:
$\frac{3980}{1480} \approx 2.7 \quad \Rightarrow \quad \text{需分3片}$
4. 各分片参数
第一片
- 数据部分:1480字节
- 总长度:1480 + 20 = 1500字节
- 片偏移:0(首片)
- MF标志:1(后续有分片)
第二片
- 数据部分:1480字节
- 总长度:1480 + 20 = 1500字节
- 片偏移:前片数据部分长度 ÷ 8 = $\frac{1480}{8} = 185$
- MF标志:1(后续有分片)
第三片
- 剩余数据部分:$3980 - 1480 \times 2 = 1020$字节
- 总长度:1020 + 20 = 1040字节
- 片偏移:前两片数据总长度 ÷ 8 = $\frac{1480 + 1480}{8} = 370$
- MF标志:0(最后一片)