这篇文章主要是改进了由于以太网IP层MTU的限制导致分片报文的产生,导致转发异常的问题。算是填上一次文章的留下来的坑。
首先我们先来介绍一下什么是以太网的报文分片
1.MTU的含义
MTU(Maximum Transmission Unit)是最大传输单元的缩写,指的是在网络通信中一次传输的数据包的最大长度。MTU的单位是字节(byte)。
在网络通信中,数据被分割成一个个的数据包进行传输。每个数据包都有一个包头和一个包体,包头包含了一些元数据,如源地址、目标地址、数据包大小等信息。MTU定义了一个数据包的最大长度,超过这个长度的数据将被分割成多个数据包进行传输。
在MTU为1500字节的以太网中,TCP报文的最大荷载是1460字节。这是因为在以太网中,每个TCP报文段会添加一个20字节的TCP报文头和一个20字节的IP报文头,以及可能的选项和填充字节。因此,最大载荷为1500字节减去40字节的报文头,得到1460字节。
因此一但总线上出现监测目标报文出现分片是就会导致以上UDP端口函数报错
2.分片报文在trace上的体现
解决这个实际也很简单,我们只需要把分片的报文全部抓取过来进行排序组包,之后再对组包完后的数据进行处理就可以解决。
首先我们需要判别哪些是分片报文,分片的报文标位置位是啥?
下面有两张截图上面就描述了分片的一些标志位及其对应的信息