网工干货知识

超全学习笔记
当前位置:首页 > 干货知识

网络层中的碎片化现象

更新时间:2026年03月27日   作者:spoto   标签(Tag):

在计算机网络中,数据是以称为“数据包”或“数据报”的小单位来传输的。有时候,这些数据报的尺寸过大,无法通过那些有较小尺寸限制的网络进行传输。为了处理这种情况,通常会将数据报拆分成更小的部分,这一过程被称为“分片”。

  • IPv4数据报的大小可以达到65,535字节。
  • 网络具有最大传输单元的限制。
  • 分片处理是将较大的数据报分割成较小的片段。
  • 每个片段都有其自己的头部信息。
  • 碎片化现象可能发生在源头或路由器处。
  • 重新组装只会在目的地进行。

碎片化带来的需求

当源计算机生成了一个较大的数据报时,该数据报可能需要通过多个网络才能到达目的地。这些网络中,每个网络所支持的最大数据包大小可能各不相同。因此,就需要对数据报进行分片处理,以实现有效的传输。

注意:虽然发送大量数据帧在效率上更为理想(因为不需要重复发送相同的头部信息),但由于以下原因,这种做法并不总是可行的:

导致分裂的原因

  • 不同的网络限制:每个网络都有其自己的MTU值。如果数据报的大小超过了MTU值,那么就需要将其拆分成多个较小的数据包来传输。
  • 未知的路径MTU:来源并不总是能够知道沿途最小的可传输单元大小。
  • 错误处理:如果某个部分丢失或损坏了,较小的碎片就可以减少重新传输的次数。
  • 协议与硬件限制:一些设备和协议会限制最大数据包的大小。
  • 传输效率:在网络中,较大的数据包需要更长的时间才能传输完毕,这会延迟其他数据的传输。
标题格式

与碎片化相关的领域/内容

与IPv4数据报的分割与重组相关的字段包括:

识别/鉴定

  • 这是一个16位的字段。IPv4头部.
  • 它为从源点发送的每个数据报分配了一个唯一的编号。
  • “识别字段”与源IP地址的结合,有助于唯一地识别出每一个数据报。
  • 当发送一个数据报时,系统会将一个计数器的值复制到该字段中,然后为下一个数据报将计数器的值增加1。
  • 如果数据报被拆分成多个片段,那么所有片段都将具有相同的识别号。
  • 在目的地,这个数字有助于将各个碎片重新组合成原始的数据报。

旗帜

  • 那个旗帜IPv4头部中的该字段长度为3位。
  • 第一个字节被预留了,并未被使用。
  • 第二点是……请勿分割/分离如果设置为1,则数据报不能被分割;如果因为数据报的大小而无法发送,那么该数据报将被丢弃,同时会发送一个ICMP错误消息。如果设置为0,则允许对数据报进行分割处理。
  • 第三部分是……更多片段(MF)如果设置为1,那么还会有更多的片段出现。如果设置为0,那么这就是最后一个片段,或者该数据报没有被分割成多个片段。

片段偏移量

  • 这是一个13位的字段。
  • 它显示了该片段在原始数据报中的位置。
  • 它指出了在重新组装完整的数据包时,应该将这一片段放置到哪个位置。
  • 该偏移量以8字节为单位进行测量。

示例:假设有一个大型的数据包,它包含4000字节的数据。这些数据以0到3999的顺序进行编号。现在,如果这个数据包的体积太大,无法直接通过网络传输,那么就需要将其拆分成三个较小的片段来传输。

这种碎片化将会以以下方式发生:

第一部分/片段

  • 可携带的字节数:0到1399之间。
  • 片段偏移量:0/8 = 0
  • 说明/解释这段数据从数据的开头开始。因此,它的偏移量为0。

第二部分

  • 可承载的字节数:1400到2799之间
  • 片段偏移量:1400/8 = 175
  • 说明/解释这段代码的起始位置是字节1400。将其除以8后,得到的偏移量为175。

第三部分

  • 可承载的字节数:2800到3999之间
  • 片段偏移量:2800/8 = 350
  • 说明/解释这是最后一部分,从2800字节开始计算。此时,偏移量变为350。
碎片化示例

数据报的碎片化

当数据在网络中传输时,它会被打包成一个被称为“数据报”的单位。无论是什么网络,比如局域网……局域网或者,也可以采用广域网的方式。广域网此外,系统还存在对一次可处理的数据大小的限制。这个限制被称为“最大传输单元”。MTU).

碎片化过程:

  • 只有数据部分会被分割成多个片段。
  • 原始数据报的头部被复制到了每个数据片段中,以便于后续的重新组装。
  • 碎片化现象可能发生在以下环节:源计算机 or 任何路由器沿着这条道路前进。

在每个路由器上:

  • 路由器会移除该帧,以便能够访问数据报。解封/拆封).
  • 它会检查下一个网络的MTU值;如果数据报的尺寸过大,那么就会将其分割成多个较小的数据包。
  • 这些数据报或片段被封装到一个新的帧中,这个新的帧适合用于下一个网络阶段。

为什么会出现多次的碎片化现象:

  • 该来源可能无法知道沿途每个网络的精确路径或MTU值。
  • 在像互联网这样的无连接网络中,路由可能会发生变化。
  • 如果路由器遇到一个具有较小MTU的网络,那么它可能会再次将数据报分割开来。

碎片的重新组装

这种传输方式只发生在目的地节点上,而不会在路由器处发生。因为数据包会沿着独立的路径进行传输(即采用数据报交换方式)。因此,所有数据包可能不会在同一个路由器处相遇,这就可能导致需要再次对数据包进行分片处理。此外,分片后的数据包也可能以错误的顺序到达。

碎片的重新组装

算法:

  1. 目标地址应能够识别该数据报是从MF处分片过来的,同时,还需要在“Fragment Offset”字段中记录该数据报的分片偏移量。
  2. 目的地应能够识别所有属于同一数据报的片段,这些片段的信息存储在标识字段中。
  3. 请找出第一个片段,其偏移量为0。
  4. 通过头部长度以及片段的偏移量来识别后续的各个片段。
  5. 重复操作,直到MF的值变为0为止。

效率:

效率 (e)= 有用性/总比例 = (无标题的数据)/(有标题的数据)
吞吐量=e * B,其中B表示瓶颈带宽。

例如:一个最大传输单元为200字节的IP路由器,收到了一个大小为520字节的IP数据包。该IP数据包的IP头部长度为20字节。请查看IP头部中相关字段的值。
说明:由于MTU为200字节,而头部的大小为20字节,因此,数据的最大长度应为180字节。不过,由于180字节无法被8整除,所以实际可表示的数据最大长度为176字节。

  • 碎片数量 = (520/200) = 3个
  • 头部长度 = 5(因为缩放因子为4,所以20除以4等于5)
  • 效率为:e = (无标题的数据量)/(有标题的数据量)= 500/560 = 89.2%
    碎片的重新组装

由IP碎片化引起的问题

  • 路由器上的额外负载:路由器必须处理多个碎片,这会减慢网络的传输速度。
  • 传输效率低下:丢失一个片段意味着必须重新发送整个数据包,这样就会浪费带宽资源。
  • 顺序混乱的到达情况:这些碎片可能会以错误的顺序到达,因此需要额外的处理来重新排序。
  • 路由与防火墙相关的问题:只有第一个片段包含了完整的头部信息,而这可能会导致路由或防火墙方面的问题。
  • NAT相关的问题:缺失的信息可能会导致IP地址的翻译出现错误。
              马上抢免费试听资格
意向课程:*必选
姓名:*必填
联系方式:*必填
QQ:
思博SPOTO在线咨询

相关资讯

即刻预约

免费试听-咨询课程-获取免费资料