IP数据报分片 题

-
确定基础参数:
原始数据报总长度 = 4000 字节,首部长度 = 20 字节,故原始数据部分长度 = 4000 - 20 = 3980字节。
网络 MTU(最大传输单元)= 1500 字节,故每个分片的 最大数据部分长度 = 1500 - 20 = 1480 字节(需满足 8 字节对齐,1480 是 8 的倍数)。
-
计算分片数量及各字段:
分片 1:
数据长度 = 1480 字节,总长度 = 1480 + 20 = 1500字节;
MF(更多分片)= 1(后续还有分片);
片偏移 = 0(从原始数据起始处开始,以 8 字节为单位)。
剩余数据:3980 - 1480 = 2500字节。
分片 2:
数据长度 = 1480 字节,总长度 = 1480 + 20 = 1500字节;
MF = 1(后续还有分片);
片偏移 = 480 / 8 = 185(前一个分片数据长度占 1480 字节,以 8 字节为单位计算偏移)。
剩余数据:2500 - 1480 = 1020 字节。
分片 3:
数据长度 = 1020 字节,总长度 = 1020 + 20 = 1040字节;
MF = 0(最后一个分片);
片偏移 = (1480 + 1480) / 8 = 370(前两个分片数据总长 2960 字节,除以 8 得偏移)。
表格填写结果:
| 总长度 (字节) | 数据长度 (字节) | MF | 片偏移 | |
|---|---|---|---|---|
| 原始数据报 | 4000 | 3980 | 0 | 0 |
| 数据报片 1 | 1500 | 1480 | 1 | 0 |
| 数据报片 2 | 1500 | 1480 | 1 | 185 |
| 数据报片 3 | 1040 | 1020 | 0 | 370 |
核心逻辑:
按 MTU 拆分数据部分,保证 8 字节对齐,通过 MF 标识是否末尾分片,片偏移 以 8 字节为单位计算前序数据总长。
