请教:网络中数据包的分段与数据帧的组成部分有哪些?
数据包的分段
数据包分段是IP层针对链路最大传输单元(MTU)限制的实用解决方案:当一个完整IP数据包的总大小(IP头+载荷)超过它即将进入的链路MTU时,IP层会把这个大包拆分成多个更小的IP分片,每个分片都能适配目标链路的传输限制。
- 触发条件:数据包大小超链路MTU,且IP头中的DF(不分段)标志位未被设置。如果DF位为1,数据包不会被分段,直接丢弃并返回ICMP“需要分段但DF已设置”的错误。
- 分段核心字段(IP头内):
- 标识(ID):同一原始数据包的所有分片共用同一个ID,方便目标主机识别并重组。
- MF(更多分片)标志位:值为1表示这不是最后一个分片,值为0则代表是最后一片。
- 片偏移:记录当前分片在原始数据包中的位置(以8字节为单位),目标主机靠这个字段把分片按顺序拼接回去。
- 重组过程:只有目标主机的IP层会做分片重组,中间路由器不会重组——它们只会继续转发分片(如果后续链路MTU更小,还会再次分段)。重组完成后,才会把完整数据包交给上层协议(比如TCP、UDP)。
数据帧的组成部分
数据帧是数据链路层的封装单元,不同链路类型(比如以太网、PPP)的帧结构略有差异,以最常见的以太网帧为例,结构如下:
- 前导码+帧起始定界符(共8字节):前7字节是交替的0和1,用来让接收方同步时钟;最后1字节是10101011,标志着帧的正式开始。
- 目的MAC地址(6字节):接收设备的物理地址,用来在局域网内定位目标。
- 源MAC地址(6字节):发送设备的物理地址。
- 类型/长度字段(2字节):如果值大于1500,代表上层协议类型(比如0x0800是IPv4,0x0806是ARP);如果小于等于1500,代表帧内数据的长度。
- 数据载荷(46-1500字节):封装的上层数据(比如IP数据包),最小46字节是为了保证以太网冲突检测机制正常工作,不够的话会填充空字节。
- FCS帧校验序列(4字节):基于CRC算法生成的校验值,接收方会重新计算校验值并和这个字段对比,判断帧在传输过程中是否损坏。
内容的提问来源于stack exchange,提问作者Dilshan De Silva
相关产品推荐
相关产品推荐

