一个IP分组,数据部分长度为8192字节,欲通过MTU=1500的局域网,如何分片?给出每个分片长度及片偏移。

2024年11月18日 02:42
有4个网友回答
网友(1):

标准IP头部20字节,MTU=1500,数据长度最多1480字节,以下是分片方法。

第1个包:IP头20,数据1480,偏移量0 MF=1

第2个包,IP头20,数据1480,偏移185 MF=1

第3个包,IP头20,数据1480,偏移370 MF=1

第4个包,IP头20,数据1480,偏移555 MF=1

第5个包,IP头20,数据1480,偏移740 MF=1

第6个包,IP头20,数据792, 偏移925 MF=0

链路层具有最大传输单元MTU这个特性,它限制了数据帧的最大长度,不同的网络类型都有一个上限值。以太网的MTU是1500,可以用 netstat -i 命令查看这个值。

如果IP层有数据包要传,而且数据包的长度超过了MTU,那么IP层就要对数据包进行分片(fragmentation)操作,使每一片的长度都小于或等于MTU。

假设要传输一个UDP数据包,以太网的MTU为1500字节,一般IP首部为20字节,UDP首部为8字节,数据的净荷(payload)部分预留是1500-20-8=1472字节。如果数据部分大于1472字节,就会出现分片现象。

扩展资料:

分片过程

对于发送端发送的每份IP数据报来说,其标识字段都包含一个值。该值在数据报分片时被复制到每个片中。标志字段用其中一个比特来表示“更多的片”。

除了最后一片外,其他每个组成数据报的片都要把该比特置1。片偏移字段指的是该片偏移原始数据报开始处的位置。另外,当数据报被分片后,每个片的总长度值要改为该片的长度值。

最后,标志字段中有一个比特称作“不分片”位。如果将这一比特置1,IP将不对数据报进行分片。相反把数据报丢弃并发送一个ICMP差错报文给起始端。

当IP数据报被分片后,每一片都成为一个分组,具有自己的IP首部,并在选择路由时与其他分组独立。这样,当数据报的这些片到达目的端时有可能会失序,但是在IP首部中有足够的信息让接收端能正确组装这些数据报片。

参考资料:百度百科-分片

网友(2):

标准IP头部20字节,MTU=1500,数据长度最多1480字节
第1个包:IP头20,数据1480,偏移量0 MF=1
第2个包,IP头20,数据1480,偏移185 MF=1
第3个包,IP头20,数据1480,偏移370 MF=1
第4个包,IP头20,数据1480,偏移555 MF=1
第5个包,IP头20,数据1480,偏移740 MF=1
第6个包,IP头20,数据792, 偏移839 MF=0

网友(3):

标准IP头部20字节,MTU=1500,数据长度最多1480字节
第1个包:IP首部20,数据1480,偏移量0 MF=1
第2个包,IP首部20,数据1480,偏移185 MF=1
第3个包,IP首部20,数据1480,偏移370 MF=1
第4个包,IP首部20,数据1480,偏移555 MF=1
第5个包,IP首部20,数据1480,偏移740 MF=1
第6个包,IP首部20,数据792, 偏移925 MF=0

网友(4):

标准IP头部20字节,MTU=1500,数据长度最多1480字节
第1个包:IP头20,数据1480,偏移量0
第2个包,IP头20,数据1480,偏移1480
第3个包,IP头20,数据1480,偏移2960
第4个包,IP头20,数据1480,偏移4440
第5个包,IP头20,数据1480,偏移5920
第6个包,IP头20,数据792,偏移7400