数据包分片原理

一、背景

   在【iP基本概念】章节中,我们谈到了有关IP头部的一些信息,其中一个信息称为分片,那么IP数据包在传输过程中为什么要分片呢?这是因为标准定义了一个数据帧最多能够携带的数据载荷大小,如果不定义那么就会导致较大的数据包在网络设备中处理效率较低,且长时间处理某个数据包也会让其他数据包无法得到处理,也就无法得到网络服务。

二、什么是MTU

    这个时候就不得不提到MTU这个概念了,MTU(Maximum Transmission Unit)称为最大传输单元,限制数据帧的最大长度。由于MTU在不同网络中长度会有变化,所以IP数据包分片的目的是适应各个不同网络的MTU长度。发送数据时,IP数据包的长度只有小于或等于该接口的MTU值,报文才不会被分片处理,否则就会进行分片。IP头部处理分片的字段如【图1】所示,具体含义见【4.IP基本概念(一)】章节

图1

    所以当数据包比链路最大传输单元大时,就可以被分解为很多的足够小片段,以便能够在链路上进行传输。在以太网中缺省MTU值为1500。

三、分片具体分析

    以ICMP报文为例,发送一个数据载荷为5000字节的数据包

图2

        结合之前所讲的数据的封装与解封装,我们可以得知,ICMP报文属于网络层,此时报文的封装如下图所示:

图3

    从【图3】很明显能看出,当前这个流量对于数据链路层来说,数据载荷长度远远超过了接口的MTU缺省值(以太网1500字节),所以此时IP需要进行分片,那么具体怎么分片的呢,如下图所示:  

数据包的完整结构:

图4

第一个分片具体信息:

图5

第二个分片具体信息:

图6

第三个分片具体信息:

图7

最后一个分片具体信息:

图8

从上图所示,得出如下结论:

    1.分片偏移值=上一个分片偏移值+本分片的数据载荷,用于标识该分片 

    在完整数据包中的位置;

    2.由Flags的第二标志位和第三标志位后续有没有分片以及能不能被分片;

    3.数据包分片时,并不会将数据包平均地分片,而是在单个数据包长度为

    1500字节时才会将超出的数据载荷进行分片

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值