数据报分片详解:3600字节数据报如何划分为1500字节MTU?
数据报分片详解:如何将3600字节数据报划分为1500字节MTU?
假设一个数据报长度为3600字节(固定首部长度为20字节),需要经过一个最大传输单元(MTU)为1500字节的网络。为了成功传输,我们需要将数据报划分为多个短一些的数据报片。以下是如何进行划分的详细步骤:
1. 计算数据报片数量:
- 数据报长度:3600字节* 最大传输单元(MTU):1500字节* 需要划分的数据报片数量:ceil(3600 / 1480) = 3 (ceil函数向上取整)
2. 计算每个数据报片的字段值:
数据报片 1:
- 数据字段长度:1480字节(1500字节MTU - 20字节首部)* 片偏移字段:0 (第一个数据报片的偏移量始终为0)* 标志字段:MF = 1 (More Fragments,表示还有更多分片)* 总长度:1500字节
数据报片 2:
- 数据字段长度:1480字节 * 片偏移字段:185 (计算公式:(前一个数据报片的片偏移字段 + 前一个数据报片的数据字段长度) / 8 = (0 + 1480) / 8 = 185)* 标志字段:MF = 1 * 总长度:1500字节
数据报片 3:
- 数据字段长度:640字节 (3600 - 1480 - 1480 = 640)* 片偏移字段:370 (计算公式:(185 + 1480) / 8 = 370)* 标志字段:MF = 0 (最后一个数据报片)* 总长度:660字节 (640 + 20)
3. 数据报分片结果表:
| 数据报片序号 | 数据字段长度 | 总长度 | MF | DF | 片偏移 ||-------------|--------------|-------|----|----|--------|| 1 | 1480 | 1500 | 1 | 1 | 0 || 2 | 1480 | 1500 | 1 | 1 | 185 || 3 | 640 | 660 | 0 | 1 | 370 |
总结:
通过数据报分片,我们可以将较大的数据报拆分成多个较小的数据报片,使其能够在MTU受限的网络中传输。每个数据报片都包含完整的IP首部以及部分数据,并通过片偏移字段和标志字段指示其在原始数据报中的位置和是否为最后一个分片。
原文地址: https://www.cveoy.top/t/topic/lRM 著作权归作者所有。请勿转载和采集!