本申请涉及数据处理,尤其涉及一种数据包的处理方法、装置、电子设备及存储介质。
背景技术:
1、在进行数据传输时,当发送大于mtu(maximum transmission unit,最大传输单元)的数据包时,就需要对数据包进行分片处理,将其分成多个小于mtu的小片段,以便顺利进行数据传输。
2、在现有技术中,在对数据包进行分片时,需要多次拷贝数据负载给每个分片,而且数据负载占据的内存一般较大,导致cpu消耗高和内存占用较高的问题。
技术实现思路
1、有鉴于此,本申请提供一种数据包的处理方法、装置、电子设备及存储介质,以解决现有技术中在对数据包进行分片时,cpu消耗高和内存占用较高的问题。
2、为实现上述目的,本申请提供如下技术方案:
3、本申请第一方面公开了一种数据包的处理方法,包括:
4、检测到原始数据包携带通用分片卸载信息时,则对所述通用分片卸载信息进行解析,得到分片负载数据长度值和分片包头部长度值;
5、基于所述分片负载数据长度值和所述分片包头部长度值,设定每一个所述分片的可用空间;
6、基于各个所述分片的可用空间,对所述原始数据包的负载数据进行切分,并将切分后的负载数据拷贝到对应的所述分片中;
7、针对每一个所述分片,添加所述分片的包头部并更新包头部信息。
8、可选的,上述的方法,所述基于所述分片负载数据长度值和所述分片包头部长度值,设定每一个所述分片的可用空间,包括:
9、针对首个分片,将所述分片负载数据长度值与所述分片包头部长度值的和作为所述首个分片的可用空间;
10、针对所述首个分片之外的分片,将所述分片负载数据长度值作为各个所述首个分片之外的分片的可用空间。
11、可选的,上述的方法,所述基于各个所述分片的可用空间,对所述原始数据包的负载数据进行切分,并将切分后的负载数据拷贝到对应的所述分片中,包括:
12、针对每一个所述分片,取当前分片的可用空间和所述原始数据包中未切分的负载数据的长度值之间的最小值作为目标值;
13、按照所述目标值对所述原始数据包中未切分的负载数据进行切分,并将切分后的负载数据拷贝到所述当前分片中。
14、可选的,上述的方法,所述针对每一个所述分片,添加所述分片的包头部并更新包头部信息,包括:
15、针对所述首个分片,拷贝所述原始数据包的包头部,作为所述首个分片的包头部;
16、针对所述首个分片之外的分片,拷贝所述首个分片的包头部作为各个所述首个分片之外的分片的包头部;
17、针对每一个所述分片,更新当前分片的包头部的字段信息;所述字段信息包括头部内序号字段和校验和字段。
18、可选的,上述的方法,所述针对首个分片,将所述分片负载数据长度值与所述分片包头部长度值的和作为所述首个分片的可用空间之后,还包括:
19、基于预设标识,对所述首个分片进行标记。
20、本申请第二方面公开了一种数据包的处理装置,包括:
21、解析单元,用于检测到原始数据包携带通用分片卸载信息时,则对所述通用分片卸载信息进行解析,得到分片负载数据长度值和分片包头部长度值;
22、设定单元,用于基于所述分片负载数据长度值和所述分片包头部长度值,设定每一个所述分片的可用空间;
23、切分单元,用于基于各个所述分片的可用空间,对所述原始数据包的负载数据进行切分,并将切分后的负载数据拷贝到对应的所述分片中;
24、添加单元,用于针对每一个所述分片,添加所述分片的包头部并更新包头部信息。
25、可选的,上述的装置,所述设定单元,包括:
26、第一设定子单元,用于针对首个分片,将所述分片负载数据长度值与所述分片包头部长度值的和作为所述首个分片的可用空间;
27、第二设定子单元,用于针对所述首个分片之外的分片,将所述分片负载数据长度值作为各个所述首个分片之外的分片的可用空间。
28、可选的,上述的装置,所述切分单元,包括:
29、取值子单元,用于针对每一个所述分片,取当前分片的可用空间和所述原始数据包中未切分的负载数据的长度值之间的最小值作为目标值;
30、切分子单元,用于按照所述目标值对所述原始数据包中未切分的负载数据进行切分,并将切分后的负载数据拷贝到所述当前分片中。
31、可选的,上述的装置,所述添加单元,包括:
32、第一拷贝子单元,用于针对所述首个分片,拷贝所述原始数据包的包头部,作为所述首个分片的包头部;
33、第二拷贝子单元,用于针对所述首个分片之外的分片,拷贝所述首个分片的包头部作为各个所述首个分片之外的分片的包头部;
34、更新子单元,用于针对每一个所述分片,更新当前分片的包头部的字段信息;所述字段信息包括头部内序号字段和校验和字段。
35、可选的,上述的装置,还包括:
36、标记单元,用于基于预设标识,对所述首个分片进行标记。
37、本申请第三方面公开了一种电子设备,包括:
38、一个或多个处理器;
39、存储装置,其上存储有一个或多个程序;
40、当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器实现如本申请第一方面中任意一项所述的方法。
41、本申请第四方面公开了一种计算机存储介质,其上存储有计算机程序,其中,所述计算机程序被处理器执行时实现如本申请第一方面中任意一项所述的方法。
42、从上述技术方案可以看出,本申请提供的一种数据包的处理方法中,检测到原始数据包携带通用分片卸载信息时,则对通用分片卸载信息进行解析,得到分片负载数据长度值和分片包头部长度值。然后基于分片负载数据长度值和分片包头部长度值,设定每一个分片的可用空间,以此可以自适应调整可用空间,不再使用默认值作为分片的可用空间,避免造成资源浪费。再基于各个分片的可用空间,对原始数据包的负载数据进行切分,并将切分后的负载数据拷贝到对应的分片中,这样就可以按每个分片的可用空间大小来拷贝数据负载,就能确保每个分片的数据负载小于或者等于可用空间,在后续只需要给各个分片添加包头部信息即可,就不需要再重新拷贝数据负载,减少数据负载的拷贝次数,实现数据负载的提前分片特性,降低cpu消耗和占用的内存空间。最后针对每一个分片,添加分片的包头部并更新包头部信息,完成数据包的分片。由此可知,利用本申请的方法,可以根据分片负载数据长度值和分片包头部长度值,以此可以自适应调整可用空间,并根据可用空间进行数据负载的拷贝,实现数据负载的提前分片特性,降低cpu消耗和占用的内存空间。解决了现有技术中在对数据包进行分片时,cpu消耗高和内存占用较高的问题。
1.一种数据包的处理方法,其特征在于,包括:
2.根据权利要求1所述的方法,其特征在于,所述基于所述分片负载数据长度值和所述分片包头部长度值,设定每一个所述分片的可用空间,包括:
3.根据权利要求1所述的方法,其特征在于,所述基于各个所述分片的可用空间,对所述原始数据包的负载数据进行切分,并将切分后的负载数据拷贝到对应的所述分片中,包括:
4.根据权利要求1所述的方法,其特征在于,所述针对每一个所述分片,添加所述分片的包头部并更新包头部信息,包括:
5.根据权利要求2所述的方法,其特征在于,所述针对首个分片,将所述分片负载数据长度值与所述分片包头部长度值的和作为所述首个分片的可用空间之后,还包括:
6.一种数据包的处理装置,其特征在于,包括:
7.根据权利要求6所述的装置,其特征在于,所述设定单元,包括:
8.根据权利要求6所述的装置,其特征在于,所述切分单元,包括:
9.一种电子设备,其特征在于,包括:
10.一种计算机存储介质,其特征在于,其上存储有计算机程序,其中,所述计算机程序被处理器执行时实现如权利要求1至5中任意一项所述的方法。