一、为什么需要分片?
IP报文在传输过程中可能经过不同网络链路,每条链路有**最大传输单元(MTU)**限制。如果报文长度超过MTU,必须分片后传输。例如:
-
以太网的MTU为1500字节。
-
若原始报文长度为3000字节,必须分片成多个小于1500字节的片段。
分片目的:确保大报文能通过不同MTU的网络链路。
二、分片的关键字段
IP头部中与分片相关的字段:
字段名 | 作用 |
---|---|
标识 | 唯一标记原始报文,所有分片共享同一标识,用于重组。 |
标志(Flags) | 3位标志: - MF(More Fragments):1表示后续还有分片,0表示最后一个分片。 - DF(Don't Fragment):1表示不允许分片。 |
分片偏移 | 表示当前分片的数据在原始报文中的起始位置(以8字节为单位)。 |
三、分片过程(以3000字节报文为例)
假设原始报文:
-
总长度 = 3000字节(IP头部20字节 + 数据2980字节)
-
网络MTU = 1500字节
分片规则:
-
每个分片需包含IP头部(20字节)。
-
分片数据长度需为8的倍数(分片偏移以8字节为单位)。
分片结果:
分片 | 总长度 | 数据长度 | MF标志 | 分片偏移 | 偏移计算(字节) |
---|---|---|---|---|---|
1 | 1500 | 1480 | 1 | 0 | 0 * 8 = 0 |
2 | 1500 | 1480 | 1 | 185 | 185 * 8 = 1480 |
3 | 60 | 20 | 0 | 370 | 370 * 8 = 2960 |
四、分片重组
-
接收端根据标识、分片偏移和MF标志重组报文。
-
若丢失任意分片:整个报文丢弃,触发重传。
五、可视化分片过程
表格形式:
分片 | 总长度 | 数据长度 | MF标志 | 分片偏移 | 偏移(字节) |
---|---|---|---|---|---|
1 | 1500 | 1480 | 1 | 0 | 0 |
2 | 1500 | 1480 | 1 | 185 | 1480 |
3 | 60 | 20 | 0 | 370 | 2960 |
六、分片的缺点
-
重组开销:接收端需缓存和重组分片,消耗资源。
-
效率降低:丢失一个分片会导致整个报文重传。
-
安全风险:分片可能被用于网络攻击(如分片重叠攻击)。