网络工程师 · 高频练习

IPv4 数据报分片后,片偏移和 MF 标志怎么计算?

中级 单选题 第 824 题 中等 网络工程师IPv4分片片偏移MF标志MTU
题目

一个 IPv4 数据报总长度为 4000 字节,其中首部 20 字节。数据报经过 MTU 为 1500 字节的链路,允许分片且各分片首部仍为 20 字节。第三个分片的片偏移和 MF 标志分别为()。

A 片偏移 185,MF=1
B 片偏移 370,MF=0
C 片偏移 1480,MF=0
D 片偏移 2960,MF=1
题目类型:原创高频练习题 用途:用于帮助理解网络工程师相关考点和答案解析,不等同于官方真题。
正确答案
B
答案解析

原始数据载荷为 4000-20=3980 字节。每个非最后分片最多携带 1500-20=1480 字节,且 1480 可被 8 整除。前两个分片共携带 2960 字节,所以第三个分片的片偏移为 2960÷8=370;它是最后一个分片,因此 MF=0。

选项分析

A

错误。185 是第二个分片的片偏移,而且第二片后面还有分片,MF=1。

B

正确。第三片从原数据载荷的第 2960 字节处开始,偏移为 370,且为最后一片。

C

错误。1480 是单个完整分片的数据载荷字节数,不是第三片的偏移字段值。

D

错误。2960 是字节偏移量,写入首部前还要除以 8;最后一片 MF 也不应为 1。

本题为什么容易错

最容易丢分的地方有两个:总长度包括首部,以及片偏移的单位是 8 字节。很多同学计算出 2960 后就停了,结果在最后一步把字节数当成字段值。

先看结论

简短答案

IPv4 数据报分片后,片偏移和 MF 标志怎么计算,正确答案是 B(片偏移 370,MF=0)。原始数据载荷为 4000-20=3980 字节。每个非最后分片最多携带 1500-20=1480 字节,且 1480 可被 8 整除。前两个分片共携带 2960 字节,所以第三个分片的片偏移为 2960÷8=370;它是最后一个分片,因此 MF=0。

解析

易混淆概念对比表

概念本题判断区别要点记忆提示
片偏移 185,MF=1 本题干扰项 错误。185 是第二个分片的片偏移,而且第二片后面还有分片,MF=1。 看到该词不要急着选,先判断是否真正解决题干问题
片偏移 370,MF=0 本题正确答案 正确。第三片从原数据载荷的第 2960 字节处开始,偏移为 370,且为最后一片。 看到题干核心场景时优先联想到它
片偏移 1480,MF=0 本题干扰项 错误。1480 是单个完整分片的数据载荷字节数,不是第三片的偏移字段值。 看到该词不要急着选,先判断是否真正解决题干问题
片偏移 2960,MF=1 本题干扰项 错误。2960 是字节偏移量,写入首部前还要除以 8;最后一片 MF 也不应为 1。 看到该词不要急着选,先判断是否真正解决题干问题
本题易混淆选项怎么区分
  • 片偏移 185,MF=1:错误。185 是第二个分片的片偏移,而且第二片后面还有分片,MF=1。
  • 片偏移 1480,MF=0:错误。1480 是单个完整分片的数据载荷字节数,不是第三片的偏移字段值。
  • 片偏移 2960,MF=1:错误。2960 是字节偏移量,写入首部前还要除以 8;最后一片 MF 也不应为 1。
复习

知识点详解

IPv4 分片发生在数据报长度超过下一跳链路 MTU 且 DF 标志未置位时。每个分片都有独立 IP 首部,非最后分片的数据载荷应尽量大,并满足 8 字节对齐,因为片偏移字段以 8 字节为单位。接收端使用标识字段、片偏移和 MF 标志完成重组。IPv6 中间路由器不执行这种分片,通常依赖路径 MTU 发现并由源主机处理,因此做题时还要先确认协议版本。

备考速记

速记:载荷先扣首部,偏移再除以八;后面还有片,MF 才写一。

IPv4分片 在MTU场景中的作用

IPv4分片在本题中的核心价值,是解决“一个 IPv4 数据报总长度为 4000 字节,其中首部 20 字节。数据报经过 MTU 为 1500 字节的链路,允许分片且各分片首部仍为 20 字节。第三个分片的片偏移和 MF 标志分别为()”这个场景问题。复习时不要只背选项名称,还要理解它为什么适用于该场景,以及它能解决哪类安全、流程或管理问题。

拓展

同类题怎么考

  • 给出总长度、首部长度和 MTU,计算分片数量与各片总长度。
  • 要求填写第二片或第三片的片偏移与 MF 标志。
  • 结合 DF 标志判断路由器能否分片,以及需要返回什么类型的 ICMP 信息。
IPv4分片 在网络工程师软考中的考法

软考选择题通常不会只考概念定义,还会把IPv4分片放到MTU场景中,要求判断它的作用、适用范围或与相近概念的区别。遇到这类题时,先抓住题干中的业务场景,再看哪个选项最能解决该场景下的核心问题。

解题思路

这类题建议分三行算:先减首部得到原始载荷 3980;再用 MTU 减首部得到每片最大载荷 1480;最后看第三片之前已经传了 2960 字节,除以 8 得偏移 370。不要把 2960 直接抄进片偏移字段。

考点定位

IPv4 片偏移以 8 字节为单位,不是直接填写字节数。MF 表示后面是否还有分片,最后一个分片的 MF 才为 0。

易错提醒

  • 直接用 1500 字节作为分片数据载荷,忘记扣除 20 字节首部。
  • 片偏移没有除以 8。
  • 把 MF 理解成“这是第几个分片”,而不是“后面是否还有分片”。

备考提示

  • 非最后分片的数据载荷通常要取不超过 MTU-首部长度的最大 8 字节整数倍。
  • DF=1 表示不允许分片;MF=1 表示后面还有分片,两者不要记反。

你可能还想了解

  • IPv4 片偏移为什么要除以 8?
  • MTU 1500 时分片载荷为什么通常是 1480 字节?
  • DF 和 MF 标志分别表示什么?
  • IPv6 路由器还会像 IPv4 一样分片吗?

本文小结

原始载荷为 3980 字节,每个完整分片携带 1480 字节。第三片之前已有 2960 字节数据,因此片偏移为 2960/8=370;第三片是最后一片,所以 MF=0。