以太网帧大小为64~1518字节。以太网最大的数据帧是1518字节,这样刨去帧头14字节和帧尾CRC校验部分4字节,那么剩下承载上层IP报文的地方最大就只有1500字节,这个值就是以太网的默认MTU值。

如果IP层有<=1500字节需要发送,只需要一个IP包就可以完成发送任务;如果IP层有>1500字节数据需要发送,那么IP层就需要进行分片才能完成发送。
以主机发送一个数据载荷长度为2000字节的报文为例说明其分片的过程(假设出接口的MTU值为1500)。
当IP层接收到此IP数据包时,它要判断向本地哪个接口发送数据(选路),并查询该接口获得其MTU。把MTU与数据包长度进行比较,发现IP报文的长度超过了MTU的值1500,因此要进行分片处理,详情见下图。

第一片报文,IP报文头固定20字节,数据载荷可以封装1480字节(MTU值1500字节-IP报文头20字节,数据载荷长度须是8的倍数);
第二片报文,复制第一片的IP头,IP报文头固定20字节,数据载荷为剩余的520字节(总数据载荷长度2000字节减去第一片中已封装的1480字节)。
如果最后一片报文的长度不足46字节,会自动填充至46字节。
所有分片报文在发送至目的主机后,在目的主机进行分片重组,恢复为原报文。在进行重组时,通过IP头中的标志位中的MF用来分辨这是不是最后一个分片,片偏移用来分辨这个分片相对原数据报的位置。通过这几个字段,可以准确的完成数据报的重组操作。
-
以太网
+关注
关注
41文章
5923浏览量
179523 -
CRC校验
+关注
关注
0文章
84浏览量
15847
发布评论请先 登录
Android14在BLE中,当MTU超过517字节时应如何处理数据传输?
使用CAN以及CANIF配置了S32K310的CAN驱动模块,如何进行报文的接收呢?
Android14在BLE中,当MTU超过 517时,如何处理数据传输?
Linux内核网络之网络层发送消息之IP分片简析
如何利用Ping命令测试本地最佳MTU值的方法
路由器MTU是什么意思?路由器mtu最佳值
北斗短报文终端如何进行双向通信?

你知道超过MTU的报文如何进行分片吗?
评论